4. Configure DB connectionについて

現在下記環境にてzabbixのインストールをしております。
WebUIの4.Configure DB connectionにてデータベースへの接続がうまくゆかず難儀しております。
原因等について御心当たりありましたら、ご指摘いだだければ幸いです。

---------------------------
【環境】
Centos 6.2
postgresql 8.4.9-1

zabbix-server-pgsql
zabbix-web-pgsql
(リポジトリを利用, versionは1.8.10-1となります)
http://www.zabbix.jp/modules/bwiki/index.php?ZABBIX-JP%A4%CEyum%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA%CD%F8%CD%D1%CA%FD%CB%A1

postgresql,zabbix-server,frontendはすべて同一筺体に導入しています。

【作業】
postgresqlにてユーザ:zabbix、データベース:zabbixを作成。
postgresql.sql, data.sql, image-postgresql.sqlにて初期データをインポート。
zabbixデータベースについて、zabbixユーザに権限を付与

webuiのインストール画面にて3. Check of pre-requisitesまで完了。

4. Configure DB connection1にて、下記を入力するも接続できず。
Type Postgresql
Host localhost
Port 0
Name zabbix
User zabbix
Password (postgresにてzabbixユーザ作成時に定義したパスワード)

下記アラートが出ます。
pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432? could not connect to server: Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432? [include/db.inc.php:80]
Error connecting to database

postgres, zabbix-serverのサービスはrunning状態です。
---------------------------

postgresの設定については初期から変更していません。
また、iptablesについても念のためstopしております。
上記、なにとぞよろしくお願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

ポート番号は、デフォルトですと「5432」であったと思います。
Portに「5432」を入力して接続テストを行ってみてください。

ユーザー nhoge の写真

TNK様
御返答ありがとうございます。

その後状況を追跡確認したのですが、最終的に原因はselinux設定であることが判明しました。
selinuxがenforcingとなっていたため、apatcheからpostgresqlへの接続確認コマンド(pg_connect)を発出した際にNGとなっていたようです。

selinux設定をdisabledとすることと、postgres設定で別ユーザからzabbixユーザでのデータベース接続時の設定(pg_hba.conf)を操作することで事象自体は解決しました。
(pg_hba.confの設定自体は、本当に必要であったかは不明ですが)

但し、本操作が最適な操作なのかどうかについては自身がもてておりません。
zabbix+postgresql構成でのselinuxの取り扱いについて、参考となる情報等もしございましたら、ご指摘いただけますと幸いです。

ユーザー TNK の写真

現時点では、SELinuxを有効にした際のポリシーファイルの公開は
行っておりません。
ですので、SELinuxをDisabledにした状態でとりあえずご利用頂け
ればと思います。

また、CentOS 6.2標準のPostgreSQLを利用されていて、initdb実行
時に、

 # service postgresql initdb

を利用されたのであれば、pg_hba.confの設定変更は必要です。
上記の方法でinitdbを実行した場合は、すべての接続の認証メソッ
ドがidentになっているようですので、そのままではZabbixで利用
できないと思います。
私が以前PostgreSQLで環境構築したときは、認証のメソッドにmd5
を利用するように変更して構築していたと思います。

あと、SELinuxを有効にしたまま利用されたい場合は、Zabbix用の
手順ではありませんが、通常のSELinuxのポリシー作成の手順をご
確認頂ければと思います。
キーワードとして、「SELinux ポリシー 生成」等で検索すれば、
CentOSでも利用可能な、audit2allow、semoduleなどを利用したポ
リシーの作成や導入を検索することができると思います。

注意点としては、インストール時だけに必要なもの(設定ファイル
の書き込み)や、Webの操作で利用する機能(マップ上のアイコンを
クリックして呼び出すものなど)のポリシーも追加することが必要
になるかもしれません。
さらに、UserParameterで呼び出すものも、SELinuxの制限を受ける
場合がありますのでご注意ください。

ついでになってしまいますが、Portを0にしているとデフォルトの
5432を利用するようになっていたようです。失礼いたしました。

ユーザー TNK の写真

ご参考までに、ZABBIX-JPが公開している、PostgreSQL用の1.8.10
であれば、以下のzabbix-jp.teファイルを利用してポリシーファイ
ルを生成して読み込めば、Zabbixのインストールと簡単な動作はで
きると思います。
<code>
module zabbix-jp 1.0;

require {
type postgresql_port_t;
type httpd_t;
type etc_t;
type port_t;
class tcp_socket name_connect;
class file write;
}

#============= httpd_t ==============
allow httpd_t etc_t:file write;
#!!!! This avc can be allowed using one of the these booleans:
# allow_ypbind, httpd_can_network_connect

allow httpd_t port_t:tcp_socket name_connect;
#!!!! This avc can be allowed using one of the these booleans:
# httpd_can_network_connect, httpd_can_network_connect_db

allow httpd_t postgresql_port_t:tcp_socket name_connect;
</code>
※MySQL版の場合は若干内容が変わります。

zabbix-jp.teファイルを用意できたら、あとは以下の手順でいける
はずです。
<code>
# checkmodule -M -m -o zabbix-jp.mod zabbix-jp.te
# semodule_package -o zabbix-jp.pp -m zabbix-jp.mod
# semodule -i zabbix-jp.pp
</code>
※デフォルトで「zabbix」という名前のポリシーが登録されている
 ようなので「zabbix-jp」と別の名前にしてみました。

細かな検証は行っておりませんので、あくまでもご参考ということ
でご参照頂ければと思います。

ユーザー nhoge の写真

TNK様
ご確認ありがとうございます。

SElinuxについて不勉強なため動作確認まではだいぶかかるかと思いますが、いただいた情報でトライしてみようと思います。

ありがとうございます。