Вопрос или проблема
Для мониторинга из 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
Если вы продолжаете получать ошибки, попробуйте выполнить диагностику:
- Убедитесь, что PgBouncer запущен и доступен на порту 6432.
- Проверьте логи PgBouncer для получения дополнительных подсказок о возможных ошибках.
- Проверьте, что пользователю
postgres
действительно разрешено подключаться.
6. Альтернативный подход
Возможно, вы захотите добавить отдельного пользователя для подключения из Zabbix для лучшей изоляции и безопасности. Для этого создайте нового пользователя в базе данных PostgreSQL и укажите его в конфигурации ODBC.
Заключение
Следуя приведенным шагам и рекомендациям, вы сможете настроить подключение к административной панели PgBouncer через ODBC, что позволит интегрировать его с Zabbix для мониторинга без установки агента на сервере. В случае возникновения дополнительных проблем, полезно обратиться к документации PgBouncer или PostgreSQL, а также к сообществам для получения более глубокой поддержки.