Подключение к административной панели PGBOUNCER через ODBC

Вопрос или проблема

Для мониторинга из Zabbix через ODBC (я не хочу устанавливать агент на сервер). Я хочу подключиться к панели администратора pgbouncer через ODBC. Я могу легко подключиться к любой базе данных, кроме специальной – pgbouncer (которая является панелью администратора). Я пробовал добавлять различные параметры в параметр ignore_startup_parameters. Но пока успеха нет.

isql TEST_pgbouncer -v
[08P01][unixODBC]ERROR: недопустимая команда 'SET DateStyle="ISO";SET extra_float_digits = 2;show transaction_isolation', используйте SHOW HELP;
[ISQL]ERROR: Не удалось SQLConnect

файл конфигурации для pgbouncer

[databases]
postgres = host=127.0.0.1 port=5432 dbname=postgres
* = host=127.0.0.1 port=5432

[pgbouncer]
logfile = /var/log/pgbouncer/pgbouncer.log
pidfile = /home/pgbouncer/pgbouncer.pid
listen_addr = 0.0.0.0
listen_port = 6432
unix_socket_dir = /var/run/postgresql
auth_type = scram-sha-256
auth_file = /etc/pgbouncer/userlist.txt
auth_query = SELECT usename, passwd FROM pg_shadow WHERE usename=$1
auth_user = postgres
admin_users = postgres
stats_users = postgres
ignore_startup_parameters = extra_float_digits,geqo,search_path,"show transaction_isolation"

pool_mode = session
server_reset_query = DISCARD ALL
max_client_conn = 10000
default_pool_size = 20
query_wait_timeout = 120
reserve_pool_size = 1
reserve_pool_timeout = 1
max_db_connections = 1000
pkt_buf = 8192
listen_backlog = 4096

log_connections = 0
log_disconnections = 0
#disable_pqexec = 1
verbose = 2
unix_socket_dir = /tmp

Ответ или решение

Для подключения к административной панели PgBouncer через ODBC и устранения возникших при этом проблем, необходимо учитывать некоторые особенности настройки и его взаимодействия с клиентами, использующими ODBC. Рассмотрим шаги и настройки более подробно.

1. Настройки ODBC

Убедитесь, что у вас установлен драйвер ODBC для PostgreSQL. В /etc/odbcinst.ini должна быть соответствующая запись для PostgreSQL, например:

[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /path/to/your/lib/psqlodbc.so
Setup = /path/to/your/lib/psqlodbc.so
FileUsage = 1

2. Настройки подключения

Добавьте соответствующий источник данных в файл /etc/odbc.ini. Пример:

[TEST_pgbouncer]
Description = PgBouncer ODBC Connection
Driver = PostgreSQL
Servername = 127.0.0.1
Port = 6432
Database = postgres
Username = postgres
Password = your_password

3. Игнорирование параметров старта

Так как PgBouncer имеет свои специфические команды и не поддерживает все SQL-команды, используемые обычными базами данных, вам необходимо убедиться, что ignore_startup_parameters содержит правильные значения, чтобы избежать выполнения ненужных команд. В вашем случае вы уже добавили:

ignore_startup_parameters = extra_float_digits,geqo,search_path,"show transaction_isolation"

Однако попробуйте изменить это значение и дополнительно включить:

ignore_startup_parameters = extra_float_digits, geqo, search_path

4. Отключение команд, которые не поддерживает PgBouncer

Чтобы избежать выполнения команд, которые не поддерживаются PgBouncer, вы можете использовать параметр disable_pqexec. Раскомментируйте в конфигурации:

#disable_pqexec = 1

Это отправит запросы, не выполняя их как обычные SQL-команды.

5. Проверка подключения

После внесения правок, проверьте подключение с помощью команды:

isql TEST_pgbouncer -v

Если вы продолжаете получать ошибки, попробуйте выполнить диагностику:

  1. Убедитесь, что PgBouncer запущен и доступен на порту 6432.
  2. Проверьте логи PgBouncer для получения дополнительных подсказок о возможных ошибках.
  3. Проверьте, что пользователю postgres действительно разрешено подключаться.

6. Альтернативный подход

Возможно, вы захотите добавить отдельного пользователя для подключения из Zabbix для лучшей изоляции и безопасности. Для этого создайте нового пользователя в базе данных PostgreSQL и укажите его в конфигурации ODBC.

Заключение

Следуя приведенным шагам и рекомендациям, вы сможете настроить подключение к административной панели PgBouncer через ODBC, что позволит интегрировать его с Zabbix для мониторинга без установки агента на сервере. В случае возникновения дополнительных проблем, полезно обратиться к документации PgBouncer или PostgreSQL, а также к сообществам для получения более глубокой поддержки.

Оцените материал
Добавить комментарий

Капча загружается...