Zabbix 7.0 LTSインストール手順(RHEL9 / Apache2.4 / PHP-FPM8.0 / MySQL8.0)

はじめに

2024年6月3日、Zabbix 7.0 LTSがリリースされました。以下公式サイトに主な変更内容がまとめられています。

What’s new in
Zabbix 7.0 LTS

今回は、ミドルウェア構成としてApache + PHP-FPM + MySQLでZabbix Server 7.0 LTSおよびZabbix Agent2 7.0のインストールを検証してみました。OSはRed Hat Enterprise Linux(以下 RHEL) 9.4を使用しています。下記ページでRed Hat系ディストリビューションとして選択肢にあるAlmaLinuxやOracle Linux、CentOS Streamでも同様の設定で動作する想定です。
Download and install Zabbix

前提条件

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

  • ハードウェア: VirtualBox上の仮想マシン
  • OS: Red Hat Enterprise Linux 9.4
  • ミドルウェア:
    • Apache: 2.4.57 (OS同梱版)
    • PHP-FPM: 8.0.30 (OS同梱版)
    • MySQL: 8.0.36 (OS同梱版)
    • Zabbix Server: 7.0.0
    • Zabbix Agent 2: 7.0.0
  • 構築対象サーバはインターネットへ接続ができること
  • 各手順はroot権限を持つユーザで実施

RHEL 9は、以下記事の手順をベースにRed Hat Developer Subscription for Individualsを使用してサブスクリプション登録が完了している状態から作業を始めます。RHEL 8向けの記事ですがRHEL 9でも同様です。
【RHEL 8】Subscription Managerでサブスクリプションの登録・解除

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

# cat /etc/redhat-release 
Red Hat Enterprise Linux release 9.4 (Plow)
# uname -r
5.14.0-427.18.1.el9_4.x86_64

パッケージインストール

Zabbix Server

Zabbix 7.0 LTSの公式リポジトリをインストールします。

# dnf install -y https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest.el9.noarch.rpm

Zabbix Serverの関連パッケージをインストールします。

# dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy mysql-server

Zabbix Agent 2

Zabbix Agent 2をインストールします。

# dnf install -y zabbix-agent2

設定ファイルの変更

Zabbix Server

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

# vi /etc/zabbix/zabbix_server.conf

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

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

DBName=zabbix

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

DBUser=zabbix

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

# DBPassword=
↓
DBPassword=zabbixpass

Zabbix Agent2

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

# vi /etc/zabbix/zabbix_agent2.conf

設定変更内容は以下の通りです。監視を受け付けるサーバに関する設定を行います。

# 監視通信を許可するサーバ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の設定

DBの設定を行うため、MySQLの自動起動設定とサービスの起動を行います。

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

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

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

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

# 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 USERの箇所はZabbix Serverの設定ファイルに合わせて、DBユーザzabbixのパスワード文字列としてzabbixpassを指定します。

# mysql -u root -p
Enter password:  ←DBユーザrootのパスワードを入力
(略)
mysql> CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER zabbix@localhost IDENTIFIED BY 'zabbixpass';
Query OK, 0 rows affected (0.01 sec)

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

mysql> SET GLOBAL log_bin_trust_function_creators = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> quit;
Bye

Zabbix用のDBスキーマと初期データをデータベースに読み込みます。サーバのスペックによっては、この処理は数分~十数分かかります。

# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Enter password:  ←DBユーザzabbixのパスワードを入力

上記処理中は、別ターミナルウィンドウを開いてvmstatコマンドを実行するとサーバの負荷を確認することができて面白いです。
以下の表示例では、DBの書き込み処理が発生している間CPU実行待ちプロセス数を示すprocsr、ブロックデバイスへ書き込まれたブロック数を示すiobo、カーネルコードの実行に使用した時間を示すcpusyなどが上昇していることが確認できます。処理が完了すると各値が減少します。

# vmstat -w 1
--procs-- -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
   r    b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
   6    1            0      1675396         4320      1262280    0    0    64   295  431  505   2   6  90   2   0
   6    1            0      1671048         4320      1263740    0    0     0  1724 3393 4886   8  25  63   4   0
   5    1            0      1671048         4320      1264072    0    0     0   770 3429 5319   8  26  61   5   0
   5    0            0      1670544         4320      1264256    0    0     0   795 3803 5772   9  25  62   5   0
   4    0            0      1670544         4320      1264544    0    0     0   739 3478 5120   8  24  65   4   0

DBスキーマと初期データの読み込みが完了したら、MySQLのlog_bin_trust_function_creatorsを無効化します。

# mysql -u root -p
Enter password:  ←DBユーザrootのパスワードを入力
(略)
mysql> SET GLOBAL log_bin_trust_function_creators = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> quit;
Bye

SELinuxの設定(ブール値の有効化)

SELinuxが有効な場合、Zabbixに関するセキュリティポリシーを設定します。
まずは、Zabbixインストール時自動的に追加されるブール値の状態を確認します。

# semanage boolean -l | grep zabbix
httpd_can_connect_zabbix       (オフ   ,   オフ)  Allow httpd to can connect zabbix
zabbix_can_network             (オフ   ,   オフ)  Allow zabbix to can network
zabbix_run_sudo                (オフ   ,   オフ)  Allow zabbix to run sudo

最低限の通信が行えるよう、httpd_can_connect_zabbixzabbix_can_networkを有効化します。

# setsebool -P httpd_can_connect_zabbix on
# setsebool -P zabbix_can_network on

zabbix_run_sudoは、Zabbix Serverでsudoコマンドの発行要件がある場合に有効化します。

ファイアウォールの設定

Firewalldを使用する場合、外部からの通信を許可します。許可対象の通信は以下の通りです。

  • 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 --now httpd.service
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

PHP-FPM

PHP-FPMの自動起動設定とサービス起動を行います。

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

Zabbix Server

Zabbix Serverの自動起動設定とサービス起動を行います。

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

Zabbix Agent2

Zabbix Agent2の自動起動設定とサービス起動を行います。

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

サービス起動確認

Zabbixを構成している全サービスが起動していることを確認します。各サービスがActive: active (running)になっていれば正常に起動しています。

# systemctl status \
  httpd.service \
  php-fpm.service \
  mysqld.service \
  zabbix-server.service \
  zabbix-agent2.service \
  | grep -E "(●|Active:)"

● httpd.service - The Apache HTTP Server
     Active: active (running) since Wed 2024-06-05 01:00:54 JST; 58s ago
● php-fpm.service - The PHP FastCGI Process Manager
     Active: active (running) since Wed 2024-06-05 01:00:54 JST; 58s ago
● mysqld.service - MySQL 8.0 database server
     Active: active (running) since Wed 2024-06-05 00:20:59 JST; 40min ago
● zabbix-server.service - Zabbix Server
     Active: active (running) since Wed 2024-06-05 01:01:29 JST; 22s ago
● zabbix-agent2.service - Zabbix Agent 2
     Active: active (running) since Wed 2024-06-05 01:01:39 JST; 13s ago

WebUIの設定

初期設定ウィザード

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

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

「デフォルトの言語」の箇所に、「日本語 (ja_JP)」を選択します。
言語表示が日本語に切り替わるので、「次のステップ」を押下します。

全ての項目が「OK」になっていることを確認して、「次のステップ」を押下します。

DBの認証情報はHashiCorp VaultやCyberArk Vaultから取得することも可能ですが、今回は「プレーンテキスト」を選択してZabbix自身に認証情報の設定を行います。
「パスワード」の箇所に、DBユーザzabbixのパスワードを入力し、「次のステップ」を押下します。

「デフォルトのタイムゾーン」の箇所に、「(UTC+09:00) Asia/Tokyo」を選択します。
「次のステップ」を押下します。

「次のステップ」を押下します。

「終了」を押下します。

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

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

参考情報

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

Zabbixの主要パッケージをインストールするときに要求される依存関係パッケージ一覧を採取しました。

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

# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy
(略)
========================================================================================================================
 パッケージ                       Arch         バージョン                  リポジトリー                           サイズ
========================================================================================================================
インストール:
 zabbix-apache-conf               noarch       7.0.0-release1.el9          zabbix                                  12 k
 zabbix-selinux-policy            x86_64       7.0.0-release1.el9          zabbix                                 285 k
 zabbix-server-mysql              x86_64       7.0.0-release1.el9          zabbix                                 2.3 M
 zabbix-sql-scripts               noarch       7.0.0-release1.el9          zabbix                                 7.8 M
 zabbix-web-japanese              noarch       7.0.0-release1.el9          zabbix                                  12 k
 zabbix-web-mysql                 noarch       7.0.0-release1.el9          zabbix                                  11 k
依存関係のインストール:
 OpenIPMI-libs                    x86_64       2.0.32-3.el9                rhel-9-for-x86_64-appstream-rpms       518 k
 apr                              x86_64       1.7.0-12.el9_3              rhel-9-for-x86_64-appstream-rpms       126 k
 apr-util                         x86_64       1.6.1-23.el9                rhel-9-for-x86_64-appstream-rpms        97 k
 apr-util-bdb                     x86_64       1.6.1-23.el9                rhel-9-for-x86_64-appstream-rpms        14 k
 fping                            x86_64       5.1-1.el9                   zabbix-non-supported                    35 k
 gd                               x86_64       2.3.2-3.el9                 rhel-9-for-x86_64-appstream-rpms       134 k
 httpd                            x86_64       2.4.57-8.el9                rhel-9-for-x86_64-appstream-rpms        52 k
 httpd-core                       x86_64       2.4.57-8.el9                rhel-9-for-x86_64-appstream-rpms       1.5 M
 httpd-filesystem                 noarch       2.4.57-8.el9                rhel-9-for-x86_64-appstream-rpms        15 k
 httpd-tools                      x86_64       2.4.57-8.el9                rhel-9-for-x86_64-appstream-rpms        87 k
 jbigkit-libs                     x86_64       2.1-23.el9                  rhel-9-for-x86_64-appstream-rpms        56 k
 libXpm                           x86_64       3.5.13-10.el9               rhel-9-for-x86_64-appstream-rpms        61 k
 libtiff                          x86_64       4.4.0-12.el9                rhel-9-for-x86_64-appstream-rpms       202 k
 libtool-ltdl                     x86_64       2.4.6-45.el9                rhel-9-for-x86_64-appstream-rpms        39 k
 libwebp                          x86_64       1.2.0-8.el9_3               rhel-9-for-x86_64-appstream-rpms       282 k
 libxslt                          x86_64       1.1.34-9.el9                rhel-9-for-x86_64-appstream-rpms       247 k
 mariadb-connector-c              x86_64       3.2.6-1.el9_0               rhel-9-for-x86_64-appstream-rpms       203 k
 mariadb-connector-c-config       noarch       3.2.6-1.el9_0               rhel-9-for-x86_64-appstream-rpms        11 k
 net-snmp-libs                    x86_64       1:5.9.1-13.el9              rhel-9-for-x86_64-appstream-rpms       762 k
 nginx-filesystem                 noarch       1:1.20.1-14.el9_2.1         rhel-9-for-x86_64-appstream-rpms        11 k
 php-bcmath                       x86_64       8.0.30-1.el9_2              rhel-9-for-x86_64-appstream-rpms        35 k
 php-common                       x86_64       8.0.30-1.el9_2              rhel-9-for-x86_64-appstream-rpms       684 k
 php-fpm                          x86_64       8.0.30-1.el9_2              rhel-9-for-x86_64-appstream-rpms       1.6 M
 php-gd                           x86_64       8.0.30-1.el9_2              rhel-9-for-x86_64-appstream-rpms        41 k
 php-ldap                         x86_64       8.0.30-1.el9_2              rhel-9-for-x86_64-appstream-rpms        41 k
 php-mbstring                     x86_64       8.0.30-1.el9_2              rhel-9-for-x86_64-appstream-rpms       470 k
 php-mysqlnd                      x86_64       8.0.30-1.el9_2              rhel-9-for-x86_64-appstream-rpms       152 k
 php-pdo                          x86_64       8.0.30-1.el9_2              rhel-9-for-x86_64-appstream-rpms        85 k
 php-xml                          x86_64       8.0.30-1.el9_2              rhel-9-for-x86_64-appstream-rpms       138 k
 redhat-logos-httpd               noarch       90.4-2.el9                  rhel-9-for-x86_64-appstream-rpms        18 k
 unixODBC                         x86_64       2.3.9-4.el9                 rhel-9-for-x86_64-appstream-rpms       495 k
 zabbix-web                       noarch       7.0.0-release1.el9          zabbix                                 8.3 M
 zabbix-web-deps                  noarch       7.0.0-release1.el9          zabbix                                  12 k
弱い依存関係のインストール:
 apr-util-openssl                 x86_64       1.6.1-23.el9                rhel-9-for-x86_64-appstream-rpms        17 k
 mod_http2                        x86_64       2.0.26-2.el9_4              rhel-9-for-x86_64-appstream-rpms       167 k
 mod_lua                          x86_64       2.4.57-8.el9                rhel-9-for-x86_64-appstream-rpms        61 k

トランザクションの概要
========================================================================================================================
インストール  42 パッケージ

ダウンロードサイズの合計: 27 M
インストール後のサイズ: 96 M
(略)

Zabbix Agent 2の依存関係にあるパッケージは以下の通りです。

# dnf install zabbix-agent2
(略)
========================================================================================================================
 パッケージ                    アーキテクチャー       バージョン                           リポジトリー           サイズ
========================================================================================================================
インストール:
 zabbix-agent2                 x86_64                 7.0.0-release1.el9                   zabbix                 5.8 M

トランザクションの概要
========================================================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 5.8 M
インストール後のサイズ: 20 M
(略)

Zabbix関連パッケージの除外設定

以下公式サイトダウンロードページ内のインストール手順では、a. Install Zabbix repositoryの項目でEPELリポジトリをインストールしている場合に実施するZabbix関連パッケージの除外設定が記されています。
Download and install Zabbix

EPELリポジトリをインストールしていない状態でこの設定を行うと、パッケージインストール時にdnfコマンドに以下のエラーが発生します。同リポジトリを使用しない場合、Zabbix関連パッケージの除外設定は不要です。

# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-apache-conf zabbix
-sql-scripts zabbix-selinux-policy mysql-server
(略)
サブスクリプション管理リポジトリーを更新しています。
レポジトリ 'epel' idを使用した設定内に見つかりません。

Zabbix公式リポジトリのGPG鍵

(注意)
本項の問題は、04-Jun-2024 12:17にリリースされたzabbix-release-latest.el9.noarch.rpm(実体はzabbix-release-7.0-2.el9.noarch.rpm)をZabbix公式リポジトリのインストールに使用することで解消されました。自動的にインポートされるGPG鍵もRPM-GPG-KEY-ZABBIX-08EFA7DDとなっています。

パッケージインストール時、自動的にインポートされるZabbix公式リポジトリのGPG鍵を使用するとfpingのパッケージ検証に失敗しました。

# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-apache-conf zabbix
-sql-scripts zabbix-selinux-policy mysql-server
(略)
Zabbix Official Repository non-supported - x86_64                                       123 kB/s | 1.3 kB     00:00
GPG 鍵 0x79EA5ED4 をインポート中:
 Userid     : "Zabbix SIA <packager@zabbix.com>"
 Fingerprint: FBAB D5FB 2025 5ECA B22E E194 D13D 58E4 79EA 5ED4
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
鍵のインポートに成功しました
鍵をインポートしても役に立ちませんでした。鍵が間違っていませんか?
fping-5.1-1.el9.x86_64.rpm の公開鍵がインストールされていません. 失敗したパッケージは: fping-5.1-1.el9.x86_64
 GPG 鍵が設定されています: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
ダウンロード済みのパッケージは、次の正常なトランザクションまでキャッシュに保存されました。
'dnf clean packages' を実行することでキャッシュパッケージを削除できます。
エラー: GPG の確認に失敗しました

上記実行結果を確認すると、Zabbix公式リポジトリから自動的にインポートされるGPG鍵はRPM-GPG-KEY-ZABBIX-79EA5ED4です。
fpingの署名は異なるGPG鍵で行われているようです。Zabbix公式リポジトリ(Zabbix Official Repository)のファイル一覧からいくつか試してみたこところ、事前にRPM-GPG-KEY-ZABBIX-08EFA7DDをインポートしておくことでパッケージ検証に成功するようになりました。

# rpm --import RPM-GPG-KEY-ZABBIX-08EFA7DD

今後修正される可能性はありますが、本検証を実施した2024/6/5現在ではこの作業が必要です。

参考文献

Download and install Zabbix
Zabbix Documentation 7.0

コメントを残す

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