RHEL9.5にZabbix7.0LTSをインストールする

## はじめに
VirtualBox上にRHEL9.5を乗せてZabbix 7.0 LTSをインストールする手順を紹介します。
インストール後の監視設定は別記事で紹介する予定です。

## 環境
今回使用するソフトウェアとホストについては、以下の通りです。
#### ソフトウェア
+ Apache2.4.62
+ PostgreSQL16.8
+ Zabbix7.0.12
+ php8.0.30

#### ホスト
+ ホスト1(Zabbixサーバ)
 IPアドレス:192.168.10.31/24, ホスト名:RHEL95-01
+ ホスト2(Zabbixエージェント)
 IPアドレス:192.168.10.32/24, ホスト名:RHEL95-02


## 要件
Zabbixを構築するにあたり満たさなければならない要件は [こちら](https://www.zabbix.com/documentation/7.0/jp/manual/installation/requirements) のページから調べることが出来ます。
本番環境に向けて構築する場合に特に確認しておいた方が良い箇所は「データベースのサイジング」となるかと思います。
ここを甘く見積もっていると運用フェーズで痛い目にあうかもしれないです。(私は一度痛い目を見るハメになりました...。その時はディスク容量を増やす事で事無きを得ました。ディスクの構成がLVM構成だったので何とか対応出来ました。)


    ### 1. ハードウェア要件
    あくまで検証目的のため考慮しない
    
    ### 2. サポートするプラットフォーム
    RHEL上に構築するため問題なし
    
    ### 3. ソフトウェア要件
    詳しくは以下を参照
    必須ステータスが **YES** と **どれか一つ** のパッケージをインストールしていきます。
    
    #### 3.1 サードパーティの外部周辺ソフトウェア
    PostgreSQL : 13.0~17.X
    ※Zabbix7.0.6以降からPostgreSQL17.Xをサポート対象に追加
    
    #### 3.2 Webインターフェース
    PHP : 8.0.0~8.4.X
    Apache : 2.4以降
    PostgreSQL
    PHP拡張機能 : mysqliからsessionまで
    　→必要なパッケージはインストールされる
     　特定の機能を利用したい時に該当パッケージのインストールを行えば良いと思います
    
    #### 3.3 クライアント側のWebブラウザ
    CookieとJavaScriptを有効化
    
    #### 3.4 サーバー/プロキシ
    libpcre2からlibpq5まで
    　→必要なパッケージはインストールされる(パッケージ名はプラットフォームによって少し違ってくるようです)
     　特定の機能を利用したい時に該当パッケージのインストールを行えば良いと思います（NW機器も監視するならSNMP監視をする事にはなると思うので、net-snmpパッケージをインストールするといった感じで）
    
    #### 3.5 Webサービス
    使用する予定はないため無視する
    
    #### 3.6 エージェント
    libpcre2からlibiconvまで
    　→必要なパッケージはインストールされる
    
    #### 3.7 エージェント2
    今回はZabbixエージェントにて構築するため無視する
    
    #### 3.8 Javaゲートウェイ
    今回はJavaゲートウェイは使用しないため無視する
    
    #### 4. デフォルトのポート番号
    ファイアウォールで *tcp/10050* と *tcp/10051* の穴開けをします
    
    #### 5. データベースのサイジング
    以下の観点は押さえておいた方が良いかと
    * ディスク容量は多めに見積もる事
    * Zabbixのデータベースが格納されているディスク容量の監視の閾値は70%程からアラートを発砲するようにする事（80%,90%だとギリギリ。状況確認、原因調査、対応策の検証、会議...etc で時間が足りなくなってくるはず）
    * 追加要件等によって監視対象ホスト数が増加する事を想定して、DB肥大化した場合の対応手順を確立しておく事
    
    #### 6. 時刻同期
    検証目的のため考慮しない
    
    #### 7. ネットワーク要件
    特になし



## Zabbixサーバ側インストール

+ ### PostgreSQL
RHEL9のリポジトリに入っているPostgreSQLのバージョンを調べ、インストールします。
(最新バージョンのPostgreSQLを入手したい場合は、Postgres公式サイトのリポジトリから持ってくる必要があるようです。)
```shell-session
# dnf module list postgresql
Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)
Name                  Stream            Profiles                      Summary
postgresql            15                client, server [d]            PostgreSQL server and client module
postgresql            16                client, server [d]            PostgreSQL server and client module

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

# dnf module enable postgresql:16
=============================================================================================================================================================================================================================================
 パッケージ                                               アーキテクチャー                                        バージョン                                                  リポジトリー                                             サイズ
=============================================================================================================================================================================================================================================
モジュールストリームの有効化中:
 postgresql                                                                                                       16

トランザクションの概要
=============================================================================================================================================================================================================================================

これでよろしいですか? [y/N]: y
完了しました!

# dnf module install postgresql
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 1:23:58 前の 2025年04月28日 12時27分55秒 に実施しました。
依存関係が解決しました。
=============================================================================================================================================================================================================================================
 パッケージ                                              アーキテクチャー                       バージョン                                                            リポジトリー                                                     サイズ
=============================================================================================================================================================================================================================================
group/moduleパッケージをインストール:
 postgresql-server                                       x86_64                                 16.8-1.module+el9.5.0+22865+f9400010                                  rhel-9-for-x86_64-appstream-rpms                                 7.0 M
依存関係のインストール:
 libicu                                                  x86_64                                 67.1-9.el9                                                            rhel-9-for-x86_64-baseos-rpms                                    9.6 M
 postgresql                                              x86_64                                 16.8-1.module+el9.5.0+22865+f9400010                                  rhel-9-for-x86_64-appstream-rpms                                 1.9 M
 postgresql-private-libs                                 x86_64                                 16.8-1.module+el9.5.0+22865+f9400010                                  rhel-9-for-x86_64-appstream-rpms                                 145 k
モジュールプロファイルのインストール中:
 postgresql/server

トランザクションの概要
=============================================================================================================================================================================================================================================
インストール  4 パッケージ
(省略)
完了しました！
```

初期セットアップをします。
```shell-session
# postgresql-setup --initdb
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
```

接続と認証の設定をします。
以下のように書き換えます。デフォルト状態のident認証、peer認証では接続出来ないためです。
zabbixユーザでzabbixデータベースへアクセスするための設定を追加しました。
```conf:/usr/lib/pgsql/data/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "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                 ident

# Zabbix connections:
host    zabbix          zabbix          127.0.0.1/32            scram-sha-256
host    zabbix          zabbix          ::1/128                 scram-sha-256

# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident
```




PostgreSQLを起動
```shell-session
# systemctl enable postgresql.service
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.
# systemctl start postgresql.service
# systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; preset: disabled)
     Active: active (running) since Mon 2025-04-28 13:58:49 JST; 8s ago
    Process: 12237 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
   Main PID: 12239 (postgres)
      Tasks: 7 (limit: 4643)
     Memory: 17.4M
        CPU: 28ms
     CGroup: /system.slice/postgresql.service
             tq12239 /usr/bin/postgres -D /var/lib/pgsql/data
             tq12240 "postgres: logger "
             tq12241 "postgres: checkpointer "
             tq12242 "postgres: background writer "
             tq12244 "postgres: walwriter "
             tq12245 "postgres: autovacuum launcher "
             mq12246 "postgres: logical replication launcher "

 4月 28 13:58:49 RHEL95-01 systemd[1]: Starting PostgreSQL database server...
 4月 28 13:58:49 RHEL95-01 postgres[12239]: 2025-04-28 13:58:49.553 JST [12239] LOG:  ログ出力をログ収集プロセスにリダイレクトしています
 4月 28 13:58:49 RHEL95-01 postgres[12239]: 2025-04-28 13:58:49.553 JST [12239] ヒント:  ここからのログ出力はディレクトリ"log"に現れます。
 4月 28 13:58:49 RHEL95-01 systemd[1]: Started PostgreSQL database server.
```

以下のコマンドで接続出来るか確認します
\# psql -h localhost -p 5432 -U zabbix -d zabbix





+ ### Apache
```shell-session
# dnf install httpd
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 1:32:13 前の 2025年04月28日 12時27分55秒 に実施しました。
依存関係が解決しました。
=============================================================================================================================================================================================================================================
 パッケージ                                               アーキテクチャー                             バージョン                                               リポジトリー                                                           サイズ
=============================================================================================================================================================================================================================================
インストール:
 httpd                                                    x86_64                                       2.4.62-1.el9_5.2                                         rhel-9-for-x86_64-appstream-rpms                                        51 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
 httpd-core                                               x86_64                                       2.4.62-1.el9_5.2                                         rhel-9-for-x86_64-appstream-rpms                                       1.5 M
 httpd-filesystem                                         noarch                                       2.4.62-1.el9_5.2                                         rhel-9-for-x86_64-appstream-rpms                                        15 k
 httpd-tools                                              x86_64                                       2.4.62-1.el9_5.2                                         rhel-9-for-x86_64-appstream-rpms                                        86 k
 mailcap                                                  noarch                                       2.1.49-5.el9                                             rhel-9-for-x86_64-baseos-rpms                                           35 k
 redhat-logos-httpd                                       noarch                                       90.4-2.el9                                               rhel-9-for-x86_64-appstream-rpms                                        18 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.1                                         rhel-9-for-x86_64-appstream-rpms                                       167 k
 mod_lua                                                  x86_64                                       2.4.62-1.el9_5.2                                         rhel-9-for-x86_64-appstream-rpms                                        60 k

トランザクションの概要
=============================================================================================================================================================================================================================================
インストール  12 パッケージ
(省略)
完了しました！
```


+ ### Zabbix
インストール方法は [こちら](https://www.zabbix.com/jp/download?zabbix=7.0&os_distribution=red_hat_enterprise_linux&os_version=9&components=server_frontend_agent&db=pgsql&ws=apache) のページから調べることができます。
上記で必須パッケージの事を記載していましたが、公式の手順通りにコピペしていくだけでZabbixは構築できるはずです。

```shell-session
# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
# dnf clean all
# dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
# sudo -u postgres createuser --pwprompt zabbix
# sudo -u postgres createdb -O zabbix zabbix
# zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
```

先ほど設定したパスワードをここに記載します。検証目的なので、Zabbix公式サイト通りに「password」を設定しました。
```conf:/etc/zabbix/zabbix_server.conf
DBPassword=password
```

サービスを起動させます
```shell-session
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
# systemctl start zabbix-server zabbix-agent httpd php-fpm
```






## Zabbixエージェント側インストール
+ ### Zabbix
インストール方法は [こちら](https://www.zabbix.com/jp/download?zabbix=7.0&os_distribution=red_hat_enterprise_linux&os_version=9&components=agent&db=&ws=) のページから調べることができます。

```shell-session
# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
# dnf clean all
# dnf install zabbix-agent
# systemctl enable zabbix-agent
# systemctl start zabbix-agent
```





## firewalldの設定
穴開けするポート番号はZabbixのネットワーク要件を確認して下さい。どのような通信の仕方をしているかはこのような [サイト](https://satimo.org/2021/02/zabbix-passive-active-check/) を参考にすればイメージし易いかと思います

+ #### Zabbixサーバ側
```shell-session
# firewall-cmd --add-port=80/tcp --add-port=10051/tcp --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
```

+ #### Zabbixエージェント側
```shell-session
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
```




## SELinuxの無効化
動作確認する際にSELinuxが有効化されていると調査の邪魔になるので無効化します(単純に理解していないだけですが。)

```shell-session
# grubby --update-kernel ALL --args selinux=0
# reboot
# getenforce
```



----


ここまで来たら最低限の設定は終わっているはずなので、Zabbixにログインしてみたいと思います。
ブラウザから **http://\<IPアドレス>/zabbix** で入ってみます。
そしたら、以下のような画面に入れると思います。

![スクリーンショット_28-4-2025_171441_192.168.10.31.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538284/03316f09-1dca-474c-b6ca-05e95125f1f5.jpeg)


全て「OK」となっていたら次へ進みます。
![スクリーンショット_28-4-2025_171544_192.168.10.31.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538284/83fcdff3-2b69-4345-8d01-27f6c699e749.jpeg)

Zabbixインストール手順時に入力したパスワードを入れて、次へ進みます。
![スクリーンショット_28-4-2025_171743_192.168.10.31.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538284/540c44c7-5b6c-4711-a6fc-28f451ae1bd3.jpeg)

タイムゾーンを「Asia/Tokyo」に設定して、次へ進みます。
![スクリーンショット_28-4-2025_18118_192.168.10.31.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538284/379a6b6b-d043-4bfd-a8ee-de5557d8efd0.jpeg)

設定に問題が無ければ、次へ進みます。
![スクリーンショット_28-4-2025_18154_192.168.10.31.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538284/12fb50c6-a2a3-44f7-8979-c77af61e060a.jpeg)

「完了」をクリックして、初期セットアップは完了します。
![スクリーンショット_28-4-2025_18244_192.168.10.31.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538284/761e59cd-f036-4dec-a780-728fd10a75e2.jpeg)

ログイン画面で以下の情報を記載して、ログイン出来ます。
ユーザ名 : Admin
パスワード : zabbix
![スクリーンショット_28-4-2025_18751_192.168.10.31.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538284/f37250e4-2c1b-456f-92e0-792eb304dab8.jpeg)


:::note info
ログイン情報は [公式ページ](https://www.zabbix.com/documentation/7.0/jp/manual/quickstart/login) に記載あります
:::

これにて、Zabbixのインストールは終わりです！
![スクリーンショット_28-4-2025_18172_192.168.10.31.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3538284/8247b308-eff4-4277-b7aa-417eaa91ff77.jpeg)