Zabbix 4.4 インストール手順(CentOS8 / Apache2.4 / PHP7.2 / PostgreSQL10.6)

はじめに

2019年10月9日、Zabbix 4.4がリリースされました。大きな機能追加は以下リリースサイトにまとめられています。

What’s New in Zabbix 4.4

今回は、エンタープライズ系のシステムでよく使われるOSSのRDBMSであるPostgreSQLを使用して、Apache + PHP + PostgreSQLでZabbix Server 4.4およびZabbix Agent2 4.4のインストールを検証してみました。

[今までのZabbix 4.4 検証記事]
Zabbix 4.4 インストール手順(CentOS8 / Apache2.4 / PHP7.2 / MySQL8.0)
Zabbix 4.4 インストール手順(CentOS8 / Nginx1.14 / PHP7.2 / MySQL8.0)
Zabbix 4.4 インストール手順(CentOS8 / Apache2.4 / PHP7.2 / PostgreSQL10.6)
Zabbix 4.4 インストール手順(CentOS7 / Apache2.4 / PHP5.4 / MariaDB5.5)
Zabbix 4.4 冗長化構成の構築手順 (CentOS7)

前提条件

以下の前提条件で検証しています。

  • ハードウェア: VirtualBox上の仮想マシン
  • OS: CentOS 8.0
  • ミドルウェア:
    • Apache: 2.4.37 (OS同梱版)
    • PHP: 7.2.11 (OS同梱版)
    • PostgreSQL: 10.6 (OS同梱版)
  • Zabbix Server: 4.4.0
  • Zabbix Agent 2: 4.4.0
  • 構築対象サーバはインターネットと疎通が取れること
  • 各手順はroot権限を持つユーザで実施

OSは、CentOSインストールDVDのISOファイルから「最小限のインストール」を選択しインストールを行いました。
バージョン情報は以下の通りです。

# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

# uname -r
4.18.0-80.el8.x86_64

パッケージインストール

Zabbixの動作に必要となる各種パッケージをインストールします。
基本方針として、OS同梱版ソフトウェアは、dfnのmodule機能を使用して最新バージョンをインストールします。
その後、Zabbixの公式リポジトリからZabbix関連パッケージおよび依存パッケージをインストールします。

Apache

以下のコマンドを実行し、Apacheおよび関連ソフトウェアをインストールします。

# dnf -y module install httpd

PHP

以下のコマンドを実行し、PHPをインストールします。

# dnf -y module install php

PostgreSQL

以下のコマンドを実行し、PostgreSQLをインストールします。

# dnf -y module install postgresql

Zabbix Server

Zabbixのリリース状況によっては、新しいバージョンのパッケージが公開される可能性があります。以下の公式リポジトリで、「zabbix-release-4.4-x.el8.noarch.rpm」のバージョンを確認して、新しいバージョンが公開されている場合は、インストール対象パッケージのURLを適宜変更してください。
https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/

以下のコマンドを実行し、Zabbix 4.4の公式リポジトリをインストールします。

# dnf -y install https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm

以下のコマンドを実行し、Zabbix Serverの関連パッケージをインストールします。

# dnf -y install zabbix-server-pgsql zabbix-web-pgsql zabbix-web-japanese zabbix-apache-conf

Zabbix Agent 2

以下のコマンドを実行し、Zabbix Agent 2をインストールします。

# dnf -y install zabbix-agent2

設定ファイルの変更

PHP

CentOS 8では、ApacheのPHP実行環境がモジュール(mod_php)からFastCGIサーバ(PHP-FPM)に変更されました。そのため、ApacheではなくPHP-FPMの設定を変更する必要があります。
viなどのテキストエディタで、PHP-FPMのZabbix用設定ファイルを開きます。

# vi /etc/php-fpm.d/zabbix.conf

設定変更内容は以下の通りです。
最低限の設定として、PHPのタイムゾーンを変更します。

# タイムゾーン行のコメントアウトを外し、Asia/Tokyoに変更
; php_value[date.timezone] = Europe/Riga
↓
php_value[date.timezone] = Asia/Tokyo

Zabbix Server

viなどのテキストエディタで、Zabbix Serverの設定ファイルを開きます。

# vi /etc/zabbix/zabbix_server.conf

設定変更内容は以下の通りです。
最低限の設定として、DBサーバへの接続情報が必要となります。

### DB関連の設定 ###

# DBサーバホスト名
# ローカルPostgreSQLを使用する場合は変更しない
# 外部DBサーバを使用する場合はコメントアウトを外し、DBサーバのIPアドレスorホスト名を指定する

# DBHost=localhost

# DB名
# 今回はデフォルトのzabbixを使用するので変更しない

DBName=zabbix


# DBユーザ名
# 今回はデフォルトのzabbixを使用するので変更しない

DBUser=zabbix


# DBパスワード
# 項目のコメントアウトを外し、クオートやスペースを含めずに指定する

# DBPassword=
↓
DBPassword=zabbixpass

# DBポート番号
# コメントアウトを外し、5432をポート番号に指定する

# DBPort=
↓
DBPort=5432

Zabbix Agent2

viなどのテキストエディタで、Zabbix Agent 2の設定ファイルを開きます。

# vi /etc/zabbix/zabbix_agent2.conf

設定変更内容は以下の通りです。
Zabbix Serverからのリモートコマンドを使用した監視の有効化と、監視を受け付けるサーバに関する設定を行います。

# リモートコマンド監視の有効化
# コメントアウトを外して、値を1に変更する

# EnableRemoteCommands=0
↓
EnableRemoteCommands=1


# 監視通信を許可するサーバIPアドレス
# Zabbixサーバ自身を監視する場合は値を変更しない
# 別サーバへエージェントをインストールする場合は、ZabbixサーバのIPアドレスを指定する

Server=127.0.0.1


# アクティブチェック監視データの送信先サーバIPアドレス
# Zabbixサーバ自身を監視する場合は値を変更しない
# 別サーバへエージェントをインストールする場合は、ZabbixサーバのIPアドレスを指定する

ServerActive=127.0.0.1


# 自ホストのホスト名
# OS上のホスト名ではなく、Zabbix監視設定上のホスト名なので注意
# 以下の例では、サーバ実機設定および監視設定であるzbx01をホスト名に指定している

Hostname=Zabbix server
↓
Hostname=zbx01

DBの設定

以下のコマンドを実行し、PostgreSQLのDBクラスタを初期化します。

# postgresql-setup --initdb
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

viなどのテキストエディタで、PostgreSQLの認証設定ファイルを開きます。

# vi /var/lib/pgsql/data/pg_hba.conf

設定変更内容は以下の通りです。
ローカルの認証をpeerからtrustに変更します。IPv4、IPv6のDB認証方式をidentからtrustに変更します。また、レプリケーション用の認証設定は不要なのでコメントアウトします。

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 indent
↓
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident
↓
#local   replication     all                                     peer
#host    replication     all             127.0.0.1/32            ident
#host    replication     all             ::1/128                 ident

以下のコマンドを実行し、PostgreSQLの自動起動設定と、サービスの起動を行います。

# systemctl enable postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.

# systemctl start postgresql

以下のコマンドを実行し、シェルの実行ユーザをpostgresに変更します。新たなDBユーザとして、zabbixを作成します。
以下の例では、Zabbix Serverの設定と合わせて、DBユーザのパスワードはzabbixpassを指定しました。

# su - postgres
$ createuser -P zabbix
新しいロールのためのパスワード:  ←DBユーザのパスワードを入力
もう一度入力してください:  ←DBユーザのパスワードを入力

以下のコマンドを実行し、DBユーザzabbixをオーナーに指定したZabbix用DBzabbixを作成します。

$ createdb -O zabbix -E Unicode -T template0 zabbix

以下のコマンドを実行し、Zabbixの初期スキーマ、データをDBにインポートします。

$ zcat /usr/share/doc/zabbix-server-pgsql/create.sql.gz | psql -U zabbix zabbix
(略)
COMMIT

以下のコマンドを実行し、ユーザをpostgresから元の作業ユーザに戻します。

$ exit

SELinuxの設定

OSのSELinux設定が有効である場合、Zabbix Serverの動作が阻害されてしまいます。
以下のコマンドを実行し、SELinuxの設定を無効化し、OSを再起動します。

# sed -i -e "s/^SELINUX=enforcing$/SELINUX=disabled/g" /etc/selinux/config 
# systemctl reboot

以下のコマンドを実行し、SELinuxが無効化(Disabled)されていることを確認します。

# getenforce 
Disabled

ファイアウォールの設定

以下のコマンドを実行し、外部からの通信を許可します。許可対象の通信は以下の通りです。

  • 10050/tcp : Zabbix Server → Zabbix Agentのパッシブ監視通信(Zbbixサーバ自身は不要、監視対象サーバでは必要)
  • 10051/tcp : Zabbix Agent → Serverのアクティブ監視通信(Zabbixサーバのみ必要)
  • http : クライアント → Zabbix WebUIのHTTP通信(Zabbixサーバのみ必要)
# firewall-cmd --add-port=10051/tcp --zone=public --permanent
success
# firewall-cmd --add-service=http --zone=public --permanent
success
# firewall-cmd --reload
success

Zabbix WebUIのSSL化(https)や、SNMP Trapの受信(162/udp)など、Zabbixサーバに対する上記以外のインバウンド通信要件がある場合は、適宜firewalldの設定を追加してください。

サービス起動

Apache

以下のコマンドを実行し、Apacheの自動起動設定とサービス起動を行います。

# systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

# systemctl start httpd

PHP-FPM

以下のコマンドを実行し、PHP-FPMの自動起動設定とサービス起動を行います。

# systemctl enable php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

# systemctl start php-fpm

Zabbix Server

以下のコマンドを実行し、Zabbix Serverの自動起動設定とサービス起動を行います。

# systemctl enable zabbix-server
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.

# systemctl start zabbix-server

Zabbix Agent2

以下のコマンドを実行し、Zabbix Agent2の自動起動設定とサービス起動を行います。

# systemctl enable zabbix-agent2
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service → /usr/lib/systemd/system/zabbix-agent2.service.

# systemctl start zabbix-agent2

WebUIの設定

初期設定ウィザード

WebUIの初期設定を行うため、作業端末のWebブラウザを起動して以下のURLにアクセスします。

http://<ZabbixサーバIPアドレス>/zabbix/

「Next step」を押下します。

全ての項目が「OK」になっていることを確認して、「Next step」を押下します。

「Password」の箇所に、DBユーザzabbixのパスワードを入力し、「Next step」を押下します。

今回は、WebUIを動作させるPHP-FPMとZabbix Serverが1台のサーバに相乗りしているので、WebUIの接続先Zabbix Server設定の変更は特に不要です。「Next step」を押下します。

「Next step」を押下します。

「Finish」を押下します。

設定が完了すると、ログイン画面に遷移します。
初期ユーザ名「Admin」、初期パスワード「zabbix」を入力し、「Sign in」を押下します。

ダッシュボードが表示されることを確認し、WebUIの初期設定は完了です。

WebUIの日本語化

初期状態では英語表記なので、日本語化を行います。
ダッシュボード右上の人物アイコンを押下します。

「Language」の項目を「Japanese (ja_JP)」に指定し、「Update」を押下します。

ダッシュボードへ画面遷移するので、日本語表示に切り替わっていることを確認します。

参考情報

日本語フォントの標準対応

以前のバージョンのZabbixでは、日本語フォントのパッケージが同時にインストールされない問題があり、個別にインストールが必要でした。
RHEL8(CentOS 8)向けZabbix 4.4は、パッケージインストール時の依存関係として「google-noto-cjk」が同時にインストールされるので、別途のフォント設定は不要になりました。
以下のコマンドでフォント設定を確認すると、google-noto-cjkフォントが指定されています。

# ls -l /etc/alternatives/zabbix-web-font 
lrwxrwxrwx. 1 root root 56 10月 11 16:33 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc

参考:
Zabbix 4.0 LTS グラフ 日本語文字化けの修正方法 ※有識者からの意見を頂き更新

Zabbixインストール時の依存パッケージについて

CentOS 8の標準パッケージ管理機能であるDNFのmodule機能を使用して、以下のミドルウェアをインストールした後、Zabbixの主要パッケージをインストールするときに要求される依存関係パッケージ一覧を採取しました。

  • Apache(apache)
  • PHP(php)
  • PostgreSQL(postgresql)

オフライン環境でZabbixをインストールする場合、上記moduleと併せて以下のパッケージファイルを用意しておく必要があります。
zabbixリポジトリのパッケージは、インターネット上から直接ダウンロードしてサーバに転送しておきます。BaseOSAppStreamリポジトリのパッケージは、インストールイメージのISOファイルをマウントしてyumリポジトリに登録することでインストールができます。

# dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-web-japanese zabbix-apache-conf
(略)
=====================================================================================================
 パッケージ                   アーキテクチャー
                                     バージョン                           リポジトリ           サイズ
=====================================================================================================
Installing:
 zabbix-apache-conf           noarch 4.4.0-1.el8                          zabbix               224 k
 zabbix-server-pgsql          x86_64 4.4.0-1.el8                          zabbix               2.5 M
 zabbix-web-japanese          noarch 4.4.0-1.el8                          zabbix                14 k
 zabbix-web-pgsql             noarch 4.4.0-1.el8                          zabbix                13 k
依存関係をインストール中:
 gd                           x86_64 2.2.5-6.el8                          AppStream            144 k
 google-noto-cjk-fonts-common noarch 20170602-9.el8                       AppStream             18 k
 google-noto-sans-cjk-ttc-fonts
                              noarch 20170602-9.el8                       AppStream             81 M
 jbigkit-libs                 x86_64 2.1-14.el8                           AppStream             55 k
 libX11                       x86_64 1.6.7-1.el8                          AppStream            612 k
 libX11-common                noarch 1.6.7-1.el8                          AppStream            157 k
 libXau                       x86_64 1.0.8-13.el8                         AppStream             36 k
 libXpm                       x86_64 3.5.12-7.el8                         AppStream             58 k
 libjpeg-turbo                x86_64 1.5.3-7.el8                          AppStream            155 k
 libssh2                      x86_64 1.8.0-8.module_el8.0.0+189+f9babebb.1
                                                                          AppStream             99 k
 libtiff                      x86_64 4.0.9-13.el8                         AppStream            188 k
 libwebp                      x86_64 1.0.0-1.el8                          AppStream            273 k
 libxcb                       x86_64 1.13-5.el8                           AppStream            230 k
 php                          x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa  AppStream            1.5 M
 php-bcmath                   x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa  AppStream             79 k
 php-gd                       x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa  AppStream             83 k
 php-ldap                     x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa  AppStream             79 k
 php-pdo                      x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa  AppStream            122 k
 php-pgsql                    x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa  AppStream            117 k
 unixODBC                     x86_64 2.3.7-1.el8                          AppStream            458 k
 OpenIPMI-libs                x86_64 2.0.25-4.el8                         BaseOS               506 k
 dejavu-fonts-common          noarch 2.35-6.el8                           BaseOS                74 k
 dejavu-sans-fonts            noarch 2.35-6.el8                           BaseOS               1.5 M
 fontconfig                   x86_64 2.13.1-3.el8                         BaseOS               275 k
 fontpackages-filesystem      noarch 1.44-22.el8                          BaseOS                16 k
 libtool-ltdl                 x86_64 2.4.6-25.el8                         BaseOS                58 k
 net-snmp-libs                x86_64 1:5.8-7.el8_0.2                      BaseOS               821 k
 zabbix-web                   noarch 4.4.0-1.el8                          zabbix               2.9 M
 fping                        x86_64 3.16-1.el8                           zabbix-non-supported  51 k
Enabling module streams:
 virt                                rhel                                                           

(略)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です