最終更新: 2026年3月
検証環境: AlmaLinux 9.5 / MySQL 8.0 / Zabbix 7.0.23 LTS / Apache(httpd)
Zabbixの導入において最もつまずきやすいのがインストール工程である。公式ドキュメントは網羅的だが、OS側の前提設定やSELinux・ファイアウォールの対応まで含めた一気通貫の手順が見つかりにくい。
本記事では、AlmaLinux 9の最小インストールからZabbix 7.0 LTSの構築完了まで、コマンドベースで再現可能な手順を一通り解説する。データベースはMySQL 8.0、WebサーバーはApache(httpd)を使用するオーソドックスな構成である。
構成概要
本記事で構築するZabbix環境の構成を以下に示す。
| コンポーネント | バージョン / 構成 |
|---|---|
| OS | AlmaLinux 9.5(最小インストール) |
| Zabbix Server | 7.0 LTS(7.0.23) |
| データベース | MySQL 8.0(mysql-server) |
| Webサーバー | Apache(httpd)+ PHP 8.0 |
| Zabbix Agent | Zabbix Agent 2 |
| Zabbix Frontend | Zabbix Web(Apache + PHP) |
すべてのコンポーネントを1台のサーバーにインストールするオールインワン構成である。小〜中規模環境(監視対象500台以下)であればこの構成で十分な性能が得られる。
大規模環境ではZabbixサーバー、データベース、フロントエンドを分離する構成が推奨されるが、本記事の手順をベースに分離構成へ拡張できる。
STEP 1: AlmaLinux 9 の初期設定
Zabbixのインストールに進む前に、OS側の初期設定を実施する。AlmaLinux 9の最小インストール(Minimal Install)が完了した直後の状態を前提とする。
1-1. システムの最新化
まず、全パッケージを最新の状態にアップデートする。
sudo dnf update -y
カーネルが更新された場合は再起動する。
sudo reboot
1-2. タイムゾーンと時刻同期の設定
Zabbixの監視データは時刻に強く依存するため、正確な時刻設定は必須である。
# タイムゾーンをAsia/Tokyoに設定
sudo timedatectl set-timezone Asia/Tokyo
# 時刻同期の確認
timedatectl
NTP service: active と表示されていればchronydによる時刻同期が有効である。AlmaLinux 9ではchronydがデフォルトでインストール・有効化されている。
もしNTPが無効の場合は以下を実行する。
sudo systemctl enable --now chronyd
1-3. ホスト名の設定
Zabbixサーバー自体の監視にも使用するため、識別しやすいホスト名を設定する。
sudo hostnamectl set-hostname zabbix-server
/etc/hosts にもホスト名を追記する。
echo "127.0.0.1 zabbix-server" | sudo tee -a /etc/hosts
1-4. 必要パッケージのインストール
Zabbixの構築に必要な基本パッケージをインストールする。
sudo dnf install -y vim wget curl tar gzip net-tools bind-utils
1-5. SELinux の設定
AlmaLinux 9ではSELinuxがデフォルトで Enforcing モードになっている。Zabbixは公式にSELinuxポリシーを提供しているため、SELinuxを有効のまま運用することを推奨する。
現在のSELinux状態を確認する。
getenforce
Enforcing と表示されれば有効である。Zabbix用のSELinuxポリシーはZabbixパッケージのインストール時に自動適用されるため、この段階では特別な設定は不要である。
なお、SELinuxを無効化する方法を紹介しているサイトも多いが、本番環境ではセキュリティ上の理由からSELinuxの有効化を推奨する。どうしても無効化が必要な場合は以下の手順となる。
# SELinuxの無効化(非推奨)
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sudo reboot
1-6. ファイアウォールの設定
Zabbixで使用するポートを事前に開放しておく。
# HTTP(80)とHTTPS(443)— Zabbixフロントエンド用
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# Zabbix Server(10051)— アクティブエージェントからの接続受付
sudo firewall-cmd --permanent --add-port=10051/tcp
# Zabbix Agent(10050)— サーバー自身の監視用
sudo firewall-cmd --permanent --add-port=10050/tcp
# 設定の反映
sudo firewall-cmd --reload
# 確認
sudo firewall-cmd --list-all
SNMP監視を行う場合は、別途UDP 161番ポートの開放は不要である(ZabbixサーバーからSNMP対象機器へリクエストを送信する方向であるため、サーバー側の受信ポート開放は必要ない)。ただし、SNMPトラップを受信する場合はUDP 162番ポートの開放が必要となる。
STEP 2: MySQL 8.0 のインストールと初期設定
2-1. MySQL のインストール
AlmaLinux 9にはMySQL 8.0がAppStreamリポジトリで提供されている。
# MySQLモジュールの有効化とインストール
sudo dnf module enable mysql:8.0 -y
sudo dnf install mysql-server -y
2-2. MySQL の起動と自動起動設定
sudo systemctl enable --now mysqld
2-3. MySQL の初期セキュリティ設定
mysql_secure_installation を実行して初期セキュリティ設定を行う。
sudo mysql_secure_installation
以下の質問に順番に回答する。
| 質問 | 推奨回答 |
|---|---|
| VALIDATE PASSWORD component のセットアップ | y(有効化) |
| パスワードポリシーのレベル | 1(MEDIUM)以上 |
| root パスワードの設定 | 複雑なパスワードを入力 |
| anonymous ユーザーの削除 | y |
| root のリモートログイン禁止 | y |
| test データベースの削除 | y |
| 権限テーブルの再読み込み | y |
2-4. Zabbix 用データベースとユーザーの作成
MySQLにrootでログインし、Zabbix用のデータベースとユーザーを作成する。
mysql -u root -p
以下のSQLを実行する。<password> は実際に使用するパスワードに置き換える。
-- Zabbix用データベースの作成(文字コードはutf8mb4を使用)
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
-- Zabbix用ユーザーの作成
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '<password>';
-- 権限の付与
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
-- グローバル権限の設定(初期スキーマインポートに必要)
SET GLOBAL log_bin_trust_function_creators = 1;
-- 反映
FLUSH PRIVILEGES;
EXIT;
log_bin_trust_function_creators はZabbixのスキーマにストアドファンクションが含まれるため、インポート時に必要となる設定である。スキーマインポート完了後に無効化する。
2-5. MySQL のチューニング(推奨)
デフォルトのMySQL設定はZabbixの運用には不十分な場合がある。/etc/my.cnf.d/zabbix.cnf を作成して基本的なチューニングを行う。
sudo vi /etc/my.cnf.d/zabbix.cnf
以下を記述する。メモリ4GB以上の環境を想定した設定例である。
[mysqld]
# InnoDB バッファプール(物理メモリの50%程度を目安)
innodb_buffer_pool_size = 2G
# InnoDB ログファイルサイズ
innodb_log_file_size = 512M
# InnoDB フラッシュ設定(パフォーマンス優先)
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
# 最大接続数
max_connections = 300
# スロークエリログの有効化
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
スロークエリログのディレクトリを作成する。
sudo mkdir -p /var/log/mysql
sudo chown mysql:mysql /var/log/mysql
設定を反映するためMySQLを再起動する。
sudo systemctl restart mysqld
STEP 3: Zabbix 7.0 LTS のインストール
3-1. Zabbix 公式リポジトリの追加
Zabbix公式リポジトリをインストールする。AlmaLinux 9はRHEL 9互換のパッケージを使用する。
sudo rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
sudo dnf clean all
3-2. Zabbix パッケージのインストール
Zabbixサーバー、フロントエンド、Agent 2を一括でインストールする。
sudo dnf install -y \
zabbix-server-mysql \
zabbix-web-mysql \
zabbix-apache-conf \
zabbix-sql-scripts \
zabbix-selinux-policy \
zabbix-agent2 \
zabbix-agent2-plugin-*
各パッケージの役割は以下の通りである。
| パッケージ | 役割 |
|---|---|
| zabbix-server-mysql | Zabbixサーバー本体(MySQL版) |
| zabbix-web-mysql | Webフロントエンド(MySQL版) |
| zabbix-apache-conf | Apache用の設定ファイル |
| zabbix-sql-scripts | データベース初期スキーマ |
| zabbix-selinux-policy | SELinux用ポリシー |
| zabbix-agent2 | Zabbix Agent 2(サーバー自身の監視用) |
| zabbix-agent2-plugin-* | Agent 2の各種プラグイン |
3-3. 日本語環境の準備
Zabbix Web UIを日本語で使用する場合、以下のパッケージをインストールする。
sudo dnf install -y glibc-langpack-ja zabbix-web-japanese
日本語フォントが不足しているとグラフの文字が豆腐(□□)になるため、フォントパッケージもインストールする。
sudo dnf install -y google-noto-sans-cjk-jp-fonts
STEP 4: データベースの初期化
4-1. 初期スキーマのインポート
Zabbixの初期スキーマとデータをMySQLにインポートする。データ量が大きいため数分かかる場合がある。
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
パスワードの入力を求められたら、STEP 2で設定したzabbixユーザーのパスワードを入力する。
4-2. log_bin_trust_function_creators の無効化
スキーマインポートが完了したら、STEP 2で有効化した log_bin_trust_function_creators を無効化する。
mysql -u root -p
SET GLOBAL log_bin_trust_function_creators = 0;
EXIT;
4-3. インポートの確認
スキーマが正しくインポートされたか確認する。
mysql -u zabbix -p -e "USE zabbix; SHOW TABLES;" | head -20
actions、hosts、items 等のテーブルが表示されれば成功である。
STEP 5: Zabbix Server の設定
5-1. 設定ファイルの編集
Zabbixサーバーの設定ファイルを編集する。
sudo vi /etc/zabbix/zabbix_server.conf
最低限変更が必要なパラメータは以下の通りである。
# データベース接続設定
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<password>
DBPassword にはSTEP 2で設定したzabbixユーザーのパスワードを記述する。
5-2. パフォーマンス関連の推奨設定
デフォルト値でも動作するが、監視対象が増えた際のボトルネックを防ぐため以下のパラメータも調整しておく。
# キャッシュサイズ(デフォルト: 32M)
CacheSize=128M
# ヒストリキャッシュサイズ(デフォルト: 16M)
HistoryCacheSize=64M
# ポーラープロセス数(デフォルト: 5)
StartPollers=10
# SNMPポーラープロセス数(デフォルト: 1)
StartPollersUnreachable=3
# ICMP Pingerプロセス数(デフォルト: 1)
StartPingers=3
設定値は監視対象の規模に応じて調整する。上記は監視対象100〜300台程度を想定した値である。
5-3. Zabbix Server の起動
sudo systemctl enable --now zabbix-server
起動後、ログを確認してエラーがないことを確認する。
sudo tail -50 /var/log/zabbix/zabbix_server.log
以下のようなメッセージが表示されれば正常起動である。
Starting Zabbix Server. Zabbix 7.0.23 (revision xxxxxx).
server #0 started [main process]
server #1 started [configuration syncer #1]
...
cannot connect to database のようなエラーが出る場合は、zabbix_server.conf のDB設定を見直す。
STEP 6: Zabbix フロントエンドの設定
6-1. PHP タイムゾーンの設定
Zabbix用のPHP設定ファイルでタイムゾーンを設定する。
sudo vi /etc/php-fpm.d/zabbix.conf
以下の行のコメントアウトを外してタイムゾーンを設定する。
php_value[date.timezone] = Asia/Tokyo
6-2. Apache と php-fpm の起動
sudo systemctl enable --now httpd php-fpm
6-3. Zabbix Agent 2 の設定と起動
サーバー自身の監視のため、Agent 2を設定して起動する。
sudo vi /etc/zabbix/zabbix_agent2.conf
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=zabbix-server
sudo systemctl enable --now zabbix-agent2
STEP 7: Web UI 初期セットアップウィザード
ブラウザでZabbixフロントエンドにアクセスし、初期セットアップウィザードを完了する。
7-1. ウィザードへのアクセス
ブラウザで以下のURLにアクセスする。
http://<サーバーのIPアドレス>/zabbix
7-2. ウィザードの各ステップ
ステップ 1: Welcome
言語を選択する。「Japanese (ja_JP)」を選択すると以降のステップが日本語で表示される。「次のステップ」をクリックする。
ステップ 2: 前提条件のチェック
PHPのバージョンや必要な拡張モジュールが確認される。すべての項目が「OK」になっていることを確認する。
「Fail」の項目がある場合は、不足しているPHPモジュールをインストールする。通常、本記事の手順通りにパッケージをインストールしていれば問題は発生しない。
ステップ 3: データベース接続の設定
| 項目 | 設定値 |
|---|---|
| データベースタイプ | MySQL |
| データベースホスト | localhost |
| データベースポート | 0(デフォルト) |
| データベース名 | zabbix |
| ユーザー | zabbix |
| パスワード | (STEP 2で設定したパスワード) |
ステップ 4: Zabbix Server の設定
| 項目 | 設定値 |
|---|---|
| ホスト | localhost |
| ポート | 10051 |
| 名前 | (任意。ダッシュボードに表示される名前) |
ステップ 5: GUI 設定
| 項目 | 設定値 |
|---|---|
| デフォルトのタイムゾーン | (UTC+09:00) Asia/Tokyo |
| デフォルトのテーマ | Blue(任意) |
ステップ 6: 設定の確認
入力内容を確認し、「次のステップ」をクリックする。
ステップ 7: インストール完了
「おめでとうございます!Zabbixフロントエンドのインストールが完了しました。」と表示されればセットアップ完了である。
7-3. 初回ログイン
セットアップ完了後、ログイン画面が表示される。デフォルトの管理者アカウントでログインする。
| 項目 | 値 |
|---|---|
| ユーザー名 | Admin(大文字のAに注意) |
| パスワード | zabbix |
ログイン後、直ちにパスワードを変更する。パスワードの変更手順は「Zabbix 7.0 導入後にやるべき初期設定 10選」の記事を参照していただきたい。
STEP 8: 動作確認
8-1. Zabbix Server 自身の監視確認
初期状態で「Zabbix server」というホストが登録されている。このホストにはデフォルトで「Linux by Zabbix agent」テンプレートと「Zabbix server health」テンプレートがリンクされている。
監視データ → 最新データ → ホスト: Zabbix server
数分待つと、CPU使用率やメモリ使用率などのデータが取得され始める。「ZBX」アイコンが緑色になっていればAgent通信が正常に動作している。
8-2. サービスの稼働状況の確認
各サービスの稼働状況を一括で確認する。
sudo systemctl status zabbix-server zabbix-agent2 httpd php-fpm mysqld
すべてのサービスが active (running) であれば正常である。
8-3. ログの最終確認
各コンポーネントのログにエラーがないことを確認する。
# Zabbix Server
sudo tail -20 /var/log/zabbix/zabbix_server.log
# Zabbix Agent 2
sudo tail -20 /var/log/zabbix/zabbix_agent2.log
# Apache
sudo tail -20 /var/log/httpd/error_log
トラブルシューティング
よくある問題と対処法
問題: Web UIにアクセスできない(接続拒否)
| 確認項目 | コマンド |
|---|---|
| Apacheが起動しているか | sudo systemctl status httpd |
| ファイアウォールでHTTPが許可されているか | sudo firewall-cmd --list-all |
| ポート80がLISTENしているか | ss -tlnp | grep :80 |
問題: Web UIに「Zabbix server is not running」と表示される
| 確認項目 | コマンド |
|---|---|
| Zabbix Serverが起動しているか | sudo systemctl status zabbix-server |
| サーバーログにエラーがないか | sudo tail -50 /var/log/zabbix/zabbix_server.log |
| DB接続が正しいか | mysql -u zabbix -p -e "USE zabbix; SELECT COUNT(*) FROM hosts;" |
問題: 「Database error」が表示される
| 確認項目 | 対処 |
|---|---|
| MySQLが起動しているか | sudo systemctl status mysqld |
| zabbixユーザーの権限 | MySQLにrootでログインし SHOW GRANTS FOR 'zabbix'@'localhost'; で確認 |
| パスワードの一致 | zabbix_server.conf と /etc/zabbix/web/zabbix.conf.php のパスワードが一致しているか確認 |
問題: グラフの日本語が文字化け(豆腐□□)する
# フォントがインストールされているか確認
fc-list | grep -i noto
# 未インストールの場合
sudo dnf install -y google-noto-sans-cjk-jp-fonts
# php-fpmを再起動
sudo systemctl restart php-fpm
問題: SELinuxがZabbixの動作をブロックしている
# SELinuxの拒否ログを確認
sudo ausearch -m avc -ts recent
# Zabbix用のSELinuxポリシーがインストールされているか確認
rpm -qa | grep zabbix-selinux
# カスタムポリシーが必要な場合
sudo setsebool -P httpd_can_connect_zabbix on
sudo setsebool -P zabbix_can_network on
構成のバリエーション
Nginx を使用する場合
本記事ではApache(httpd)を使用したが、Nginxを使用する場合はパッケージを以下に変更する。
# Apacheの代わりにNginx版をインストール
sudo dnf install -y zabbix-nginx-conf
# httpd関連パッケージは不要
# zabbix-apache-conf → zabbix-nginx-conf に置き換え
Nginx版の場合、/etc/nginx/conf.d/zabbix.conf にZabbix用の設定ファイルが配置される。listen ポートとサーバー名を環境に合わせて編集する。
sudo vi /etc/nginx/conf.d/zabbix.conf
server {
listen 8080;
server_name zabbix.example.com;
...
}
PostgreSQL を使用する場合
MySQLの代わりにPostgreSQLを使用する場合は、パッケージとスキーマインポートの手順が異なる。
# PostgreSQL版のパッケージ
sudo dnf install -y zabbix-server-pgsql zabbix-web-pgsql
# データベース作成
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
PostgreSQL版はTimescaleDB拡張との組み合わせにより、大規模環境でのヒストリテーブルの自動パーティショニングが可能となる。大量の監視データを扱う環境では有力な選択肢である。
Rocky Linux 9 での手順の違い
Rocky Linux 9はAlmaLinux 9と同じRHEL 9互換ディストリビューションであり、本記事の手順がそのまま適用可能である。Zabbix公式リポジトリのURLのみ以下に変更する。
sudo rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
それ以外のすべての手順は同一である。
まとめ
AlmaLinux 9 + MySQL 8.0構成でのZabbix 7.0 LTSインストール手順を解説した。
- AlmaLinux 9の初期設定(タイムゾーン、SELinux、ファイアウォール)
- MySQL 8.0のインストールと初期設定
- Zabbix公式リポジトリの追加とパッケージインストール
- データベースの初期スキーマインポート
- Zabbix Serverの設定と起動
- フロントエンドの設定と初期セットアップウィザード
- 動作確認
インストールが完了したら、次のステップとして「Zabbix 7.0 導入後にやるべき初期設定 10選」の記事に進み、パスワード変更やハウスキーピングの最適化、通知設定などの本番運用に必要な設定を行う。
関連記事:
- Zabbix 7.0 導入後にやるべき初期設定 10選
- Zabbix バージョン比較 — 7.0 LTS / 7.4 / 8.0 の違いと選び方
- Zabbix で Yamaha RTX を SNMP 監視する方法 — 基礎から設定まで完全解説
本記事の内容は検証環境での結果であり、本番環境への適用は各自の環境に合わせて十分にテストのうえ実施していただきたい。

