【RHEL9】Zabbixサーバを構築する(MariaDB + Apache + PHP)

【RHEL9】Zabbixサーバを構築する(MariaDB + Apache + PHP)

ZabbixをRHEL9上に構築した手順をまとめる。構成は「Zabbix 7.0 LTS + MariaDB + Apache + PHP」で、シンプルなオンプレ監視サーバとして動作させる構成にした。


構成イメージ

graph TB
    subgraph RHEL["RHEL Server"]
        subgraph Zabbix["Zabbix 7.0 LTS"]
            ZS["Zabbix Server
ポート: 10051"] ZA["Zabbix Agent"] end subgraph WebStack["Web Stack"] Apache["Apache HTTP Server
ポート: 80/443"] PHP["PHP
PHP-FPM"] ZUI["Zabbix UI
Web Interface"] end subgraph Database["Database"] MariaDB["MariaDB
ポート: 3306"] DBData["Zabbix Database
zabbix DB"] end end subgraph Users["ユーザー"] WebUser["Web ブラウザ
ユーザー"] end %% 内部接続 ZS -->|メトリクス格納| MariaDB ZA -->|監視データ送信| ZS Apache -->|リクエスト処理| PHP PHP -->|Zabbix UI実行| ZUI ZUI -->|クエリ実行| MariaDB MariaDB --> DBData %% 外部接続 WebUser -->|HTTP/HTTPS| Apache Apache -->|UI表示| WebUser %% スタイル定義 classDef rhel fill:#ffb3b3,stroke:#999,stroke-width:2px,color:#333 classDef zabbix fill:#b3d9ff,stroke:#999,stroke-width:2px,color:#333 classDef web fill:#fff9e6,stroke:#999,stroke-width:2px,color:#333 classDef db fill:#c9e4ff,stroke:#999,stroke-width:2px,color:#333 classDef apache fill:#ffe6b3,stroke:#999,stroke-width:2px,color:#333 classDef php fill:#e6ccff,stroke:#999,stroke-width:2px,color:#333 class RHEL rhel class Zabbix zabbix class WebStack web class Database db class Apache apache class PHP php

1. システムの初期更新

まず、パッケージを最新化しておく。

# dnf update -y

[root@localhost ~]# dnf update -y
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 0:10:07 前の 2025年11月01日 22時38分33秒 に実施しました。
依存関係が解決しました。
===============================================================================================================================================
 パッケージ                                Arch          バージョン                              リポジトリー                            サイズ
===============================================================================================================================================
インストール:
 kernel                                    x86_64        5.14.0-570.58.1.el9_6                   rhel-9-for-x86_64-baseos-rpms           1.8 M
アップグレード:
 NetworkManager                            x86_64        1:1.52.0-7.el9_6                        rhel-9-for-x86_64-baseos-rpms           2.3 M
 NetworkManager-libnm                      x86_64        1:1.52.0-7.el9_6                        rhel-9-for-x86_64-baseos-rpms           1.9 M
 NetworkManage
(省略)

ZabbixはPHPやMariaDBなど複数のパッケージに依存している。システムが古い状態だと依存関係エラーや脆弱性が残ることがあるため、最初に必ず dnf update を実行する。


2. SELinuxとFirewalldの設定

Zabbixの動作に支障が出ないよう、最低限のセキュリティ設定を調整する。

SELinuxを永続的に無効化
# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

[root@localhost ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

設定反映のため再起動
# reboot

[root@localhost ~]# reboot

反映確認
# getenforce

[root@localhost ~]# getenforce
Disabled


Firewalldで必要なポートを開放
# sudo firewall-cmd --permanent --add-port=80/tcp # Webアクセス用(HTTP)
# sudo firewall-cmd --permanent --add-port=10051/tcp # Zabbixサーバ通信
# sudo firewall-cmd --reload

[root@localhost ~]# firewall-cmd --permanent --add-port=80/tcp
success
[root@localhost ~]# firewall-cmd --permanent --add-port=10051/tcp
success
[root@localhost ~]# firewall-cmd --reload
success

SELinuxが有効のままだとZabbixサーバやPHP-FPMがDBやWebアクセスをブロックする場合がある。Firewalld側では、Zabbixが使用するHTTP(80)とServer(10051)のポートを開放しておく。


3. Zabbix公式リポジトリの追加

ZabbixはRHEL標準リポジトリには含まれないため、公式リポジトリを追加する。
# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-3.el9.noarch.rpm
# dnf clean all

[root@localhost ~]# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-3.el9.noarch.rpm
https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-3.el9.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.rWwlpS: ヘッダー V4 RSA/SHA512 Signature、鍵 ID b5333005: NOKEY
Verifying...                          ################################# [100%]
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:zabbix-release-7.0-3.el9         ################################# [100%]
[root@localhost ~]# dnf clean all
サブスクリプション管理リポジトリーを更新しています。
17 ファイルが削除されました

リポジトリを追加することで、Zabbix関連パッケージを dnf 経由で簡単に導入できるようになる。


4. パッケージのインストール

Zabbixサーバ、Web UI、データベース、エージェントをまとめてインストールする。

# dnf install -y zabbix-server-mysql zabbix-web-mysql \
zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy \
zabbix-agent mariadb-server

[root@localhost ~]# sudo dnf install -y zabbix-server-mysql zabbix-web-mysql \
zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy \
zabbix-agent mariadb-server
サブスクリプション管理リポジトリーを更新しています。
Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)                                                        38 MB/s |  71 MB     00:01
Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)                                                           26 MB/s |  84 MB     00:03
Zabbix Official Repository - x86_64                                                                            278 kB/s | 390 kB     00:01
Zabbix Official Repository non-supported - x86_64                                                              1.1 kB/s | 1.1 kB     00:01
依存関係が解決しました。
===============================================================================================================================================
 パッケージ                             アーキテクチャー   バージョン                       リポジトリー                                 サイズ
===============================================================================================================================================
インストール:
 mariadb-server                         x86_64             3:10.5.27-1.el9_5                rhel-9-for-x86_64-appstream-rpms             9.8 M
 zabbix-agent                           x86_64             7.0.20-release1.el9              zabbix                                       628 k
 zabbix-apache-conf                     noarch             7.0.20-release1.el9              zabbix                                        13 k
 zabbix-selinux-policy                  x86_64             7.0.20-release1.e
(省略)

5. MariaDBの起動と初期設定

MariaDBを起動して初期設定を行う。

# systemctl enable --now mariadb

[root@localhost ~]# systemctl enable --now mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.


# mysql_secure_installation

[root@localhost ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

(Y/n形式で質問に答えていきセットアップを進める)

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

mysql_secure_installation ではrootパスワード設定や匿名ユーザー削除などを行う。セキュリティ強化のため必ず実行しておく。


6. Zabbix用データベースの作成

Zabbixサーバが利用するデータベースを作成する。

# mysql -uroot -p

[root@localhost ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.5.27-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

以下のSQLを実行:

> CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
> CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@123';
> GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
> FLUSH PRIVILEGES;
> EXIT;

MariaDB [(none)]> CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zabbix@123';
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> EXIT;
Bye

utf8mb4 を指定することで、マルチバイト文字や絵文字も扱えるようになる。


7. 初期スキーマの投入

ZabbixのDB構造と初期データを投入する。

# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix

#パスワードはユーザ作成時のZabbix@123を入力
[root@localhost ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
Enter password:
[root@localhost ~]#

DBサイズは数百MB程度になる。完了まで少し時間がかかる。


8. Zabbixサーバ設定ファイルの編集

設定バックアップ作成
# cp -p /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.BK

[root@localhost ~]# cp -p /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.BK
[root@localhost ~]#


# vi /etc/zabbix/zabbix_server.conf

[root@localhost ~]# vi /etc/zabbix/zabbix_server.conf

ZabbixサーバがMariaDBへ接続する際に使用するパスワードを指定する。
DBPassword=Zabbix@123

### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
  DBPassword=Zabbix@123

差分確認
# diff /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.BK

[root@localhost ~]# diff /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.BK
131c131
<   DBPassword=Zabbix@123
---
> # DBPassword=
[root@localhost ~]#

9. PHPとApacheの設定

ZabbixのWeb UIが正しく動作するようにPHP-FPMの設定を変更する。

設定バックアップ
# cp -p /etc/php-fpm.d/zabbix.conf /etc/php-fpm.d/zabbix.conf.BK

[root@localhost ~]# cp -p /etc/php-fpm.d/zabbix.conf /etc/php-fpm.d/zabbix.conf.BK
[root@localhost ~]#

設定編集
# vi /etc/php-fpm.d/zabbix.conf

[root@localhost ~]# vi /etc/php-fpm.d/zabbix.conf
[root@localhost ~]#

タイムゾーン設定を追加:
php_value[date.timezone] = Asia/Tokyo

php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Tokyo

タイムゾーンを正しく設定しておかないと、Web画面の時刻がずれて表示される。

差分確認
# diff /etc/php-fpm.d/zabbix.conf /etc/php-fpm.d/zabbix.conf.BK

[root@localhost ~]# diff /etc/php-fpm.d/zabbix.conf /etc/php-fpm.d/zabbix.conf.BK
25d24
< php_value[date.timezone] = Asia/Tokyo
[root@localhost ~]#

10. サービス起動と自動起動設定

# systemctl enable --now zabbix-server zabbix-agent httpd php-fpm

[root@localhost ~]# systemctl enable --now zabbix-server zabbix-agent httpd php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent.service → /usr/lib/systemd/system/zabbix-agent.service.
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
[root@localhost ~]#

これでZabbixサーバ、エージェント、Webサーバがすべて起動する。
再起動後も自動で立ち上がるよう enable を付けておく。


11. Webインストーラで初期設定

ブラウザで以下にアクセス:
http://<サーバIP>/zabbix

使用言語を選択

前提条件のチェック、すべてOKであることを確認して次へ

インストーラに沿って以下を入力する。

項目
Database typeMySQL
Database hostlocalhost
Database namezabbix
Userzabbix
PasswordZabbix@123
Zabbix server name任意(例:Zabbix監視サーバ)

パラメータを確認し問題なければ次のステップ押下後にWebインターフェースのセットアップが完了する。


12. 管理画面へログイン

初期アカウント情報は以下の通り。

ユーザー名: Admin
パスワード: zabbix

ログイン後はパスワードを変更しておく。


13. 動作確認

Zabbixサーバとエージェントの状態を確認する。

Webダッシュボード上で「Zabbixサーバーの起動 はい」が表示されていれば構築完了。

まとめ

RHEL9でのZabbix構築は、Zabbix 7.0以降かなりシンプルになっている。
基本は以下の流れを押さえればよい。

  1. システム更新
  2. SELinux・Firewalld調整
  3. リポジトリ追加
  4. パッケージ導入
  5. DB作成+初期データ投入
  6. 設定変更
  7. サービス起動とWeb設定

これでオンプレ環境の監視基盤が整う。次はSNMP監視や通知設定などを追加していく予定。

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *