Zabbix 4.4 インストール手順(CentOS8 / Nginx1.14 / PHP7.2 / MySQL8.0)

はじめに

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

What’s New in Zabbix 4.4

今回は、CentOS 8で公式リポジトリに追加されたNginxをApacheの代わりに使用し、Nginx + PHP + MySQLで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
  • ミドルウェア:
    • Nginx: 1.14.1 (OS同梱版)
    • PHP: 7.2.11 (OS同梱版)
    • MySQL: 8.0.13 (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関連パッケージおよび依存パッケージをインストールします。

Nginx

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

# dnf -y module install nginx

PHP

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

# dnf -y module install php

MySQL

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

# dnf -y module install mysql

Zabbix Server

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

# 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-mysql zabbix-web-japanese zabbix-nginx-conf

Zabbix Agent 2

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

# dnf -y install zabbix-agent2

設定ファイルの変更

Nginx

NginxのZabbix用設定を有効化します。
viなどのテキストエディタで、NginxのZabbix用設定ファイルを開きます。

# vi /etc/nginx/conf.d/zabbix.conf

設定変更内容は以下の通りです。
設定ファイル中listenのコメントアウトを外します。

server {
#        listen          80;
(略)
↓
server {
        listen          80;
(略)

Nginxのデフォルト設定を一部無効化します。
viなどのテキストエディタで、Nginxの設定ファイルを開きます。

# vi /etc/nginx/nginx.conf

設定変更内容は以下の通りです。
設定ファイル中listenserver_nameの行をコメントアウトします。

(略)
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
(略)
↓
(略)
    server {
        #listen       80 default_server;
        #listen       [::]:80 default_server;
        #server_name  _;
(略)

PHP

Nginxを使用する場合、PHPの実行はFast-CGIサーバであるPHP-FPMと連携して行われます。
viなどのテキストエディタで、PHP-FPMのZabbix用設定ファイルを開きます。

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

設定変更内容は以下の通りです。
最低限の設定として、実行ユーザとグループ、タイムゾーンを変更します。

# ユーザとグループをnginxへ変更
user = apache
group = apache
↓
user = nginx
group = nginx

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

PHP-FPMの不要なデフォルト設定を無効化します。
以下のコマンドで、設定ファイル名をリネームし、サービス起動時に読み込まれないようにします。

# mv /etc/php-fpm.d/www.conf{,.bak}

Zabbix Server

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

# vi /etc/zabbix/zabbix_server.conf

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

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

# DBサーバホスト名
# 今回はローカルにDBをインストールするのでコメントアウトしたまま
# 外部DBサーバを使用する場合はコメントアウトを外し、DBサーバのIPアドレスorホスト名を指定する

# DBHost=localhost


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

DBName=zabbix


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

DBUser=zabbix


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

# DBPassword=
↓
DBPassword=zabbixpass

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

ディレクトリ所有権の変更

デフォルトでは、所有権がapacheになっているディレクトリがいくつかあるので、Nginxがアクセスできるよう、所有権をnginxに変更します。

以下のコマンドを実行し、Zabbix WebUI用の設定ファイルディレクトリの所有権を変更します。

# ls -ld /etc/zabbix/web/
drwxr-x---. 2 apache apache 33 10月 15 22:19 /etc/zabbix/web/

# chown nginx:nginx /etc/zabbix/web

# ls -ld /etc/zabbix/web/
drwxr-x---. 2 nginx nginx 33 10月 15 22:19 /etc/zabbix/web/

以下のコマンドを実行し、PHP用の動的ファイルディレクトリの所有権を変更します。

# ls -ld /var/lib/php/{opcache,session,wsdlcache}
drwxrwx---. 2 root apache 6  6月 26 00:02 /var/lib/php/opcache
drwxrwx---. 2 root apache 6  6月 26 00:02 /var/lib/php/session
drwxrwx---. 2 root apache 6  6月 26 00:02 /var/lib/php/wsdlcache

# chown root:nginx /var/lib/php/{opcache,session,wsdlcache}

# ls -ld /var/lib/php/{opcache,session,wsdlcache}
drwxrwx---. 2 root nginx 6  6月 26 00:02 /var/lib/php/opcache
drwxrwx---. 2 root nginx 6  6月 26 00:02 /var/lib/php/session
drwxrwx---. 2 root nginx 6  6月 26 00:02 /var/lib/php/wsdlcache

DBの設定

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

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

# systemctl start mysqld

以下のコマンドを実行し、MySQLの初期設定を行います。
なお、MySQL 8.0ではパスワードポリシーの指定があります。Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:の箇所で、以下のポリシーを選択できます。

  • 0: 8文字以上
  • 1: 8文字以上、英数大文字、小文字、記号を全て含む。
  • 2: 8文字以上、英数大文字、小文字、記号、辞書ファイルの指定文字列を全て含む。

設定例中のDBユーザrootのパスワードは、パスワードポリシーを0(LOW)、パスワード文字列を「zabbixpass」を指定しています。

# mysql_secure_installation
(略)
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y ←yを入力
(略)
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 ←0を入力
(略)
New password: ←DBユーザrootのパスワードを入力

Re-enter new password: ←再度DBユーザrootのパスワードを入力
(略)
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y ←yを入力
(略)
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y ←yを入力
Success.

All done! 

以下のコマンドを実行し、Zabbix用のデータベースとDBユーザを作成します。
CREATE DATABASEでデータベースを作成する箇所については、文字コードをutf8mb4、照合順序をutf8mb4_ja_0900_as_csに指定します。これは、MySQL 8から実装された日本語に最適化された組み合わせです。
設定例中の<パスワード>は、Zabbix Serverの設定ファイルに合わせてDBユーザzabbixのパスワード文字列を「zabbixpass」を指定します。

# mysql -u root -p
Enter password:  ←DBユーザrootのパスワードを入力
(略)
mysql> CREATE DATABASE zabbix character set utf8mb4 collate utf8mb4_ja_0900_as_cs;
Query OK, 1 row affected (0.06 sec)

mysql> CREATE USER zabbix@localhost IDENTIFIED BY '<パスワード>';
Query OK, 0 rows affected (0.07 sec)

mysql> GRANT ALL ON zabbix.* TO zabbix@localhost;
Query OK, 0 rows affected (0.10 sec)

mysql> quit;
Bye

以下のコマンドを実行し、Zabbix用のスキーマファイルをデータベースに読み込みます。
サーバのスペックによっては、この処理には数分かかる場合があります。

# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u zabbix -p zabbix
Enter password:  ←DBユーザzabbixのパスワードを入力

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

ファイアウォールの設定

Zabbixに関連する通信要件は以下の通りです。

  • 10050/tcp : Zabbix Server → Zabbix Agentのパッシブ監視通信(Zbbixサーバ自身は不要、監視対象サーバでは必要)
  • 10051/tcp : Zabbix Agent → Serverのアクティブ監視通信(Zabbixサーバのみ必要)
  • http : クライアント → Zabbix WebUIのHTTP通信(Zabbixサーバのみ必要)

以下のコマンドを実行し、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 nginx
CCreated symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

# systemctl start nginx

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にアクセスします。
Apache構成の場合と異なり、NginxのZabbix用初期設定では、URLの末尾にzabbixは付きません。

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

「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の主要パッケージをインストールするときに要求される依存関係パッケージ一覧を採取しました。

  • Nginx(nginx)
  • PHP(php)
  • MySQL(mysql)

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

# dnf install zabbix-server-mysql zabbix-web-japanese zabbix-nginx-conf
(略)
=====================================================================================================
 パッケージ                   アーキテクチャー
                                     バージョン                           リポジトリ           サイズ
=====================================================================================================
Installing:
 zabbix-nginx-conf            noarch 4.4.0-1.el8                          zabbix               225 k
 zabbix-server-mysql          x86_64 4.4.0-1.el8                          zabbix               2.5 M
 zabbix-web-japanese          noarch 4.4.0-1.el8                          zabbix                14 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
 libssh2                      x86_64 1.8.0-8.module_el8.0.0+189+f9babebb.1
                                                                          AppStream             99 k
 mysql-libs                   x86_64 8.0.17-3.module_el8.0.0+181+899d6349 AppStream            1.2 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-mysqlnd                  x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa  AppStream            190 k
 php-pdo                      x86_64 7.2.11-1.module_el8.0.0+56+d1ca79aa  AppStream            122 k
 unixODBC                     x86_64 2.3.7-1.el8                          AppStream            458 k
 OpenIPMI-libs                x86_64 2.0.25-4.el8                         BaseOS               506 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
 zabbix-web-mysql             noarch 4.4.0-1.el8                          zabbix                13 k
 fping                        x86_64 3.16-1.el8                           zabbix-non-supported  51 k
Enabling module streams:
 virt                                rhel                                                           

(略)

コメントを残す

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