Назад | Перейти на главную страницу

Zabbix не может подключиться к базе данных PostgreSQL

Во-первых, я запускаю CentOS 6.5 и пытаюсь использовать Zabbix 2.2.4. Все имена хостов заменены примерами.

Я установил следующие RPM на свою машину Zabbix (имя хоста будет zbx-hostname):

zabbix-java-gateway-2.2.4-1.el6.x86_64
zabbix-web-2.2.4-1.el6.noarch
zabbix-agent-2.2.4-1.el6.x86_64
zabbix-server-2.2.4-1.el6.x86_64
zabbix-2.2.4-1.el6.x86_64
zabbix-web-pgsql-2.2.4-1.el6.noarch
zabbix-server-pgsql-2.2.4-1.el6.x86_64

На моей машине PostgreSQL установлен postgreSQL 9.2 с RPMS (имя хоста будет db-hostname):

postgresql92-9.2.8-1PGDG.rhel6.x86_64
postgresql92-libs-9.2.8-1PGDG.rhel6.x86_64
postgresql92-server-9.2.8-1PGDG.rhel6.x86_64

Мой файл zabbix_server.conf выглядит так:

LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=db-hostname
DBName=zabbix-dbname
DBUser=zabbix-user
DBPassword=zabbix-password
DBSocket=
DBPort=5432

Моя конфигурация zabbix php выглядит так:

$DB['TYPE']     = 'POSTGRESQL';
$DB['SERVER']   = 'db-hostname';
$DB['PORT']     = '5432';
$DB['DATABASE'] = 'zabbix-dbname';
$DB['USER']     = 'zabbix-user';
$DB['PASSWORD'] = 'zabbix-password';

// SCHEMA is relevant only for IBM_DB2 database
$DB['SCHEMA'] = '';

$ZBX_SERVER      = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>

Я могу выполнить следующее и успешно подключиться к своей базе данных:

export PGPASSWORD=zabbix; psql -U zabbix-user -d zabbix-dbname -h db-hostname
export PGPASSWORD=zabbix; psql -U zabbix-user -d zabbix-dbname -h 192.168.0.1

Но zabbix отказывается подключать распечатку (192.168.0.1 - правильно разрешенный IP-адрес):

25015:20150205:112656.236 [Z3001] connection to database 'zabbix-dbname' failed: [0] could not connect to server: Permission denied
    Is the server running on host "db-hostname" (192.168.0.1) and accepting
    TCP/IP connections on port 5432?

25015:20150205:112656.236 Database is down. Reconnecting in 10 seconds.

Но на хосте БД, когда я отслеживаю входящий TCP-трафик, я не вижу никаких входящих соединений (с использованием как tcpdump, так и iptables). Похоже, что zabbix даже не пытается сделать запрос к ящику базы данных?

Я загрузил свой ящик zabbix и перекомпилировал его, чтобы дважды получить ту же ошибку, чтобы это могло показаться проблемой с моей конфигурацией. Кто-нибудь знает какие-либо решения?

Из предыдущего комментария:

Мне удалось решить проблему, SE Linux был включен неправильно и блокировал доступ zabbix к сети. Чтобы решить проблему, я выполнил:

setsebool -P zabbix_can_network 1

Тему, в которой это обсуждается, можно найти по адресу (Предупреждение: на русском языке): http://zabbix.com/forum/showthread.php?t=47247

В моей ситуации мне также нужно предоставить доступ к сети для httpd. (CentOS 7, zabbix 3)

sudo setsebool -P httpd_can_network_connect_db 1
sudo setsebool -P httpd_can_network_connect 1

Если у вас есть ошибка "setsebool, команда не найдена" установите policycoreutils-python

yum install policycoreutils-python