Zabbixのインストール手順として、MySQL用の物しか見当たらないとのご意見があったので、
CentOS 7上でOS標準のPostgreSQLのパッケージを利用して構成する手順を整理して公開します。
システム構成
1台のサーバー上に、ZabbixサーバーとZabbixエージェントをインストールして稼働させることとします。
利用する主なソフトウェアとそのバージョンは以下の通りです。
- Zabbix : Zabbix 3.0.1
- OS : CentOS 7 (バージョン7.2.1511)
- PHP : PHP 5.4 (CentOS 7標準)
- DBMS : PostgreSQL 9.2 (CentOS 7標準)
OSのインストール
最初にCentOS 7をインストールします。
インストールするパッケージは、デフォルトの「最小限のインストール」で構いません。プロキシ経由でも構わないので、インターネットへの接続とyumコマンドが利用できるような環境を用意します。
CentOS 7をインストールし終えたら、必ずyum updateでOSを最新の状態にしてください。
# yum update
SELinuxは、enforcingのままとします。
yumで更新したパッケージやカーネルなどを反映させるためにOSを再起動しておきます。
# reboot
セキュリティ設定
firewalldの設定
rebootしたら、firewalldの設定を行います。
Zabbixサーバーが外部から接続を受けるのは、Zabbixエージェントからのアクセスと、Webインターフェースへのアクセスです。
SNMPトラップや他のアクセスを許可する場合は、それらも許可するようにしてください。
つまり、Zabbixサーバーには、以下のような設定を行います。
# firewall-cmd --add-port=10051/tcp --zone=public --permanent
# firewall-cmd --add-service=http --zone=public --permanent
# systemctl restart firewalld
そして、Zabbixエージェントをインストールしたサーバーがfirewalldを利用しているなら、以下のような設定を行います。
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
# systemctl restart firewalld
Zabbixエージェントへのアクセスが、ローカルのループバックを利用するのであれば、10050をあける必要はありません。つまり、Zabbixエージェントが外部のIPアドレスからアクセスされる場合には、10050をあけます。
Zabbixサーバーが、各監視対象にインストールしたZabbixエージェントからのアクセスを外部から受ける時には、10051をあけます。
SELinuxの設定
デフォルトの設定では、httpdからデータベースにアクセスできなかったり、zabbix_serverにもアクセスできなかったりするので、
最低限必要と思われる設定をonに変更しておきます。
# setsebool -P httpd_can_network_connect_db on
# setsebool -P httpd_can_connect_zabbix on
# setsebool -P zabbix_can_network on
Zabbixのインストール
Zabbix LLCのリポジトリ登録
Zabbix LLCが、RHEL 7用のyumのリポジトリを公開しているので、それを登録します。
# yum install http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
Zabbixのパッケージインストール
Zabbixサーバーの本体、ZabbixサーバーのWebインターフェース、自分自身を監視するためにZabbixエージェントをインストールします。
ここでインストールするのは、PostgreSQL用です。
# yum install zabbix-agent zabbix-server-pgsql zabbix-web-pgsql zabbix-web-japanese
PostgreSQLサーバーのインストール
PostgreSQLのサーバーをインストールします。
# yum install postgresql-server
PostgreSQLを利用し始めるためには、まずは、データベースの初期化が必要なので、初期化を行います。
# postgresql-setup initdb
PostgreSQL上のアカウントの作成とZabbix用データベース作成のため、PostgreSQLを起動します。
# systemctl start postgresql
# systemctl enable postgresql
起動できたら、初期設定ではOS上のpostgresユーザーから操作することになるので、suコマンドでpostgresユーザになって、PostgreSQL上のpostgresユーザーのパスワードを変更しておきます。
# su - postgres
$ psql -c "alter user postgres with password 'password'"
そして、postgresユーザーのまま、Zabbix用データベース接続用アカウントzabbixを作成してパスワードを設定します。
$ createuser zabbix -P -S -R -D
新しいロールのためのパスワード:
もう一度入力してください:
$
ユーザーを作成したら、そのユーザーをオーナーに指定して、データベースを作成します。
$ createdb -O zabbix -E UTF8 zabbix
rootユーザーに戻って、/var/lib/pgsql/data/pg_hba.conf内の認証設定を変更します。
変更箇所は以下の通りです。
--- pg_hba.conf.orig 2016-03-01 19:03:28.377980056 +0900
+++ pg_hba.conf 2016-03-01 19:23:50.040944482 +0900
@@ -77,11 +77,11 @@
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
-local all all peer
+local all all trust
# IPv4 local connections:
-host all all 127.0.0.1/32 ident
+host all all 127.0.0.1/32 trust
# IPv6 local connections:
-host all all ::1/128 ident
+host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
psqlコマンドを実行するときに、peerのままだとOSのアカウントが利用されるため、PostgreSQL上のアカウントを明示的に指定してデータベースを更新できないので、trustに変更しています。
また、ローカルループバックのIPv4とIPv6の両方もZabbix用アクセスアカウントでアクセス可能となるようtrustに変更しました。
ただし、今回はローカルにPostgreSQLサーバーを起動して、listen_addressesも指定していないため、ローカルからしかアクセスしないので、このtrustの設定にしました。
Zabbixサーバーを複数サーバーで構成したり、ネットワーク経由でPostgreSQLサーバーにアクセスできるような環境である場合は、その環境に適した認証方式を選択するようにしてください。
変更が終了したら、設定変更を反映するためにPostgreSQLを再起動します。
# systemctl restart postgresql
初期データベースの作成
MySQL用と同様にデータベース作成用のSQL文が圧縮されて用意されているので、それを利用して初期データベースを作成します。
# zcat /usr/share/doc/zabbix-server-pgsql-3.0.1/create.sql.gz | psql -U zabbix zabbix -W
ユーザ zabbix のパスワード:
NOTICE: CREATE TABLE / PRIMARY KEYはテーブル"maintenances"に暗黙的なインデック ス"maintenances_pkey"を作成します
CREATE TABLE
.....
INSERT 0 1
COMMIT
#
Zabbixの設定ファイルの更新
PostgreSQL用なので、最低限の設定としては、DBPasswordとDBPortを設定します。
Zabbix用データベース接続用アカウントzabbixのパスワードをDBPasswordに設定し、
DBPortにPostgreSQLサーバーのデフォルトのポート番号5432を設定します。
# vi /etc/zabbix/zabbix_server.conf
設定内容は以下の通りです。
DBPassword=password
DBPort=5432
ZabbixのWebインターフェース用設定修正
Zabbixのパッケージのデフォルトでは、PHPのtimezoneの設定がコメントアウトされているので、設定を有効にしてタイムゾーンが日本ならば、Asia/Tokyoに設定します。
# vi /etc/httpd/conf.d/zabbix.conf
設定箇所は以下の部分です。
php_value date.timezone Asia/Tokyo
各種デーモン起動
以下のコマンドで、各サービスを起動して自動起動も設定します。
# systemctl start zabbix-server
# systemctl start zabbix-agent
# systemctl start httpd
# systemctl enable zabbix-server
# systemctl enable zabbix-agent
# systemctl enable httpd
Webインターフェースにアクセス
ブラウザを利用して、
http://ZabbixサーバーのIPアドレス/zabbix/
にアクセスします。
最初のアクセス時は、Zabbix設定のウィザードが実行されるので、DBへのアクセス情報などを入力して次へ次へと進めてください。
「Configure DB connection」では、データベース作成時に指定したUserとPassword、そしてポート番号を入力してください。
設定が終わるとログイン画面になります。アカウント「Admin」、パスワード「zabbix」でログインしてください。