はじめに
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を構築するにあたり満たさなければならない要件は こちら のページから調べることが出来ます。
本番環境に向けて構築する場合に特に確認しておいた方が良い箇所は「データベースのサイジング」となるかと思います。
ここを甘く見積もっていると運用フェーズで痛い目にあうかもしれないです。(私は一度痛い目を見るハメになりました...。その時はディスク容量を増やす事で事無きを得ました。ディスクの構成が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サーバ側インストール
RHEL9のリポジトリに入っているPostgreSQLのバージョンを調べ、インストールします。
(最新バージョンのPostgreSQLを入手したい場合は、Postgres公式サイトのリポジトリから持ってくる必要があるようです。)
# 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 パッケージ
(省略)
完了しました!
初期セットアップをします。
# postgresql-setup --initdb
* Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
接続と認証の設定をします。
以下のように書き換えます。デフォルト状態のident認証、peer認証では接続出来ないためです。
zabbixユーザでzabbixデータベースへアクセスするための設定を追加しました。
# 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を起動
# 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
# 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は構築できるはずです。
# 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」を設定しました。
DBPassword=password
サービスを起動させます
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
# systemctl start zabbix-server zabbix-agent httpd php-fpm
Zabbixエージェント側インストール
インストール方法は こちら のページから調べることができます。
# 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のネットワーク要件を確認して下さい。どのような通信の仕方をしているかはこのような サイト を参考にすればイメージし易いかと思います
# firewall-cmd --add-port=80/tcp --add-port=10051/tcp --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-all
SELinuxの無効化
動作確認する際にSELinuxが有効化されていると調査の邪魔になるので無効化します(単純に理解していないだけですが。)
# grubby --update-kernel ALL --args selinux=0
# reboot
# getenforce
ここまで来たら最低限の設定は終わっているはずなので、Zabbixにログインしてみたいと思います。
ブラウザから http://<IPアドレス>/zabbix で入ってみます。
そしたら、以下のような画面に入れると思います。
Zabbixインストール手順時に入力したパスワードを入れて、次へ進みます。
タイムゾーンを「Asia/Tokyo」に設定して、次へ進みます。
ログイン画面で以下の情報を記載して、ログイン出来ます。
ユーザ名 : Admin
パスワード : zabbix
ログイン情報は 公式ページ に記載あります