Zabbix 3.0をCentOS 7にインストール(PostgreSQL編)

  • 20
    Like
  • 1
    Comment
More than 1 year has passed since last update.

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、そしてポート番号を入力してください。

PostgreSQL-install.png

設定が終わるとログイン画面になります。アカウント「Admin」、パスワード「zabbix」でログインしてください。

ご参考