Help us understand the problem. What is going on with this article?

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

More than 3 years have 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」でログインしてください。

ご参考

atanaka7
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした