web-dev-qa-db-ja.com

ZabbixがPostgreSQLデータベースに接続できない

まず、CentOS 6.5を実行していて、Zabbix 2.2.4を使用しようとしています。ホスト名はすべて例に置き換えられました。

Zabbixマシンに次のRPMをインストールしました(ホスト名は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マシンには、RPMSとともにpostgreSQL 9.2がインストールされています(ホスト名は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.

しかし、DBホスト上で着信TCPトラフィックを監視すると、(tcpdumpとiptablesの両方を使用して)着信接続が表示されません。zabbixがデータベースにリクエストを送信しようとしていないようですボックス?

私のzabbixボックスを分解して再構築し、同じエラーを2回取得したので、私の構成に問題があるように見えますが、誰かが解決策を知っていますか?

4

以前のコメントから:

私はなんとか問題を解決しました。SELinuxが正しく有効化されておらず、zabbixがネットワークからブロックされていました。私が実行した問題を解決するには:

setsebool -P zabbix_can_network 1

これを論じているトピックは(警告:ロシア語)にあります: http://zabbix.com/forum/showthread.php?t=47247

4

私の状況では、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
2
Alex