2026年8月8日
2026年8月8日
ZabbixサーバーのインストールとAgent設定(Ubuntu・MySQL・Nginx構成の手順と疎通確認)
Zabbix サーバーは、公式リポジトリからパッケージを入れ、データベースに初期スキーマを流し込み、Web 画面の初期設定を終えれば動き始めます。監視対象には Zabbix Agent を入れ、設定ファイルの Server・ServerActive・Hostname の3項目をサーバー側の登録内容と合わせるのが要点です。この記事では、Ubuntu・MySQL(MariaDB)・Nginx の構成を例に、サーバーの構築から Agent の設定、つながらないときの切り分けまでを順に説明します。
構成と事前に決めておくこと
作業を始める前に、次の3点を決めておくと手戻りが減ります。
- バージョン: Zabbix には長期サポート(LTS)版と、新機能が早く入る通常版があります。業務用の監視なら LTS 版が基本です。LTS は 6.0、7.0 と続き、次の LTS も順次提供されます(2026年10月現在)。どの版が最新かは公式サイトのダウンロードページで確認してください。本記事のコマンドは 7.0 LTS を例にしていますが、流れは新しい版でもほぼ同じです。
- データベースと Web サーバー: MySQL / MariaDB / PostgreSQL、Nginx / Apache から選べます。WordPress サーバーと同じ技術に揃えると運用の知識を使い回せます。
- Agent の種類: 従来の Zabbix Agent(C 言語製)と、Go 言語製の Zabbix Agent 2 があります。Agent 2 は MySQL や Docker などのプラグイン監視が組み込まれており、新しく構築するなら Agent 2 を選ぶ例が増えています。どちらも設定項目の考え方は同じです。
監視サーバーと WordPress の本番サーバーは、できれば別のマシンにします。本番が落ちたときに監視も一緒に止まると、通知が届かないためです。
手順1: 公式リポジトリを登録する
Ubuntu 標準のリポジトリにも Zabbix は含まれていますが、版が古いことが多いため、公式リポジトリを使います。公式ダウンロードページで「Zabbix のバージョン・OS・OS のバージョン・コンポーネント・データベース・Web サーバー」を選ぶと、その組み合わせ専用のコマンドが表示されます。ファイル名は版や OS で変わるので、下の例をそのまま打たず、表示されたコマンドを使ってください。
# 例: 公式ページに表示された zabbix-release パッケージを取得して登録
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update
# サーバー・Web画面・SQLスクリプト・Agent 2 を導入
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
データベース本体(MySQL または MariaDB)が未導入なら、先に入れておきます。
手順2: データベースを作成して初期スキーマを流し込む
Zabbix 用のデータベースとユーザーを作ります。文字コードは utf8mb4、照合順序は utf8mb4_bin を指定します。照合順序が違うと、起動時に警告が出たり、大文字小文字の区別で不具合が起きたりします。
-- sudo mysql で接続して実行
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'your-db-password';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
続いて初期スキーマを流し込みます。数分かかることがあり、その間は何も表示されませんが正常です。
# 7.0 の例。新しい版では /usr/share/zabbix/sql-scripts/mysql/ の場合もあります
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
スキーマのファイルが見つからないときは、dpkg -L zabbix-sql-scripts | grep server.sql で実際の場所を確かめます。流し込みが終わったら、一時的に変えた設定を戻します。
SET GLOBAL log_bin_trust_function_creators = 0;
手順3: サーバーと Web 画面を設定して起動する
/etc/zabbix/zabbix_server.conf の DBPassword に、手順2で決めたパスワードを書きます。このファイルにはパスワードが平文で入るため、所有者とパーミッション(パッケージ標準では zabbix ユーザー以外が読めない設定)を変えないようにします。
# /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=your-db-password
Nginx 用の設定は /etc/zabbix/nginx.conf に入っています。listen と server_name のコメントを外し、環境に合わせて書き換えます。
server {
listen 8080;
server_name zabbix.example.com;
# 以下はパッケージの記述のまま
設定ができたらサービスを起動し、自動起動を有効にします。PHP-FPM のサービス名は PHP の版によって変わります。
sudo nginx -t
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.3-fpm
ブラウザーで http://zabbix.example.com:8080/ を開くと初期設定ウィザードが始まります。言語、前提条件のチェック、データベース接続、タイムゾーンを順に設定します。前提条件で PHP の項目が不合格になる場合は、表示された設定値(メモリや実行時間など)を PHP-FPM 側で直してから再読み込みします。
ウィザードが終わると、初期管理者 Admin でログインできます(初期パスワードは公式ドキュメントに記載されています)。ログインしたら最初にこのパスワードを変更してください。初期値のまま外部から到達できる状態は、乗っ取りの入口になります。あわせて、Web 画面は IP 制限や VPN の内側に置き、インターネットへ直接公開しない構成を検討します。
手順4: 監視対象に Agent を入れて設定する
WordPress を動かしているサーバーなど、監視したいホストにも同じ公式リポジトリを登録し、Agent を入れます。
sudo apt install zabbix-agent2
設定ファイルは Agent 2 なら /etc/zabbix/zabbix_agent2.conf、従来の Agent なら /etc/zabbix/zabbix_agentd.conf です。最低限、次の3項目を設定します。
# 監視サーバーのIP。この相手からの問い合わせだけを受け付ける(パッシブチェック)
Server=192.0.2.10
# Agent から監視サーバーへ能動的にデータを送る先(アクティブチェック)
ServerActive=192.0.2.10
# Web画面で登録する「ホスト名」と1文字も違わない名前にする
Hostname=wp-web01
3つの役割を区別しておくと、つまずいたときに原因が読めます。
- パッシブチェック: サーバーが Agent の 10050 番ポートに問い合わせます。
Serverに書いた IP 以外からの接続は拒否されます。 - アクティブチェック: Agent がサーバーの 10051 番ポートへ接続し、監視項目の一覧を受け取って値を送ります。
ServerActiveとHostnameが使われます。 - Hostname: アクティブチェックでは、サーバーはこの名前でホストを探します。Web 画面の登録名と大文字小文字まで一致させます。
ファイアウォールでは、10050 番を監視サーバーからだけ開けます。
sudo ufw allow from 192.0.2.10 to any port 10050 proto tcp
sudo systemctl restart zabbix-agent2
sudo systemctl enable zabbix-agent2
監視サーバー側でも、Agent からのアクティブチェックを受けるために 10051 番を監視対象のサーバーからだけ開けておきます。
通信を暗号化する(PSK)
Agent とサーバーの通信は、初期状態では暗号化されません。インターネットを経由する場合は、事前共有鍵(PSK)での暗号化を設定します。
openssl rand -hex 32 | sudo tee /etc/zabbix/zabbix_agent2.psk
sudo chown zabbix:zabbix /etc/zabbix/zabbix_agent2.psk
sudo chmod 600 /etc/zabbix/zabbix_agent2.psk
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=wp-web01-psk
TLSPSKFile=/etc/zabbix/zabbix_agent2.psk
Web 画面のホスト設定の暗号化タブにも、同じ PSK の識別子と値を入力します。片側だけ設定すると通信できなくなるので、両方を続けて設定します。
手順5: Web 画面でホストを登録して疎通を確かめる
Web 画面のホスト一覧(7.0 では「データ収集」メニュー、6.0 では「設定」メニューの中にあります)から新しいホストを作ります。画面の表記は版によって変わるため、見当たらない場合はメニューを順に確認してください。
- ホスト名: Agent の
Hostnameと同じ値 - インターフェース: 「エージェント」を追加し、監視対象の IP とポート 10050
- テンプレート: 「Linux by Zabbix agent」(アクティブチェック中心なら「Linux by Zabbix agent active」)
- ホストグループ: 任意(例: WordPress servers)
登録後、まず監視サーバーから zabbix_get で Agent に問い合わせます(zabbix-get パッケージが必要です)。
zabbix_get -s 192.0.2.20 -k agent.ping
# 1 が返れば、パッシブチェックの経路と Server 設定は正しい
数分待ってホスト一覧の可用性アイコンが緑になり、最新データに CPU やメモリの値が並べば完了です。
つながらないときの切り分け
ログはサーバーが /var/log/zabbix/zabbix_server.log、Agent が /var/log/zabbix/zabbix_agent2.log(従来版は zabbix_agentd.log)です。よくある原因を起こりやすい順に挙げます。
- ファイアウォールで止まっている:
zabbix_getがConnection refusedやタイムアウトになる場合です。監視対象でss -lntp | grep 10050を実行し、Agent が待ち受けているかを確認し、次に ufw やクラウドのセキュリティグループで 10050 番が開いているかを見ます。 - Server の IP が違う: Agent のログに、接続元が許可されていない旨のメッセージが出ます。監視サーバーが NAT の内側にあると、Agent から見た接続元 IP が想定と違うことがあります。ログに出た IP を
Serverに書きます。 - Hostname の不一致: アクティブチェックだけ値が入らない場合はこれを疑います。サーバーのログに、ホストが見つからない旨のメッセージが出ます。Agent の
Hostnameと Web 画面のホスト名を一字ずつ比べます。 - PSK の設定ずれ: 暗号化を設定した後に通信が止まった場合です。識別子・鍵の値・
TLSConnect/TLSAcceptの組み合わせを両側で見直します。 - サーバー自体が DB に接続できていない: Web 画面に「Zabbix server is not running」と表示される場合は、サーバーのログで DB 接続エラーを確認し、
DBPasswordと MySQL のユーザー権限を見直します。
設定ファイルを変えたら、Agent を再起動してからもう一度 zabbix_get で確かめる、という順で一つずつ潰していくと原因を取り違えません。
運用前に確認しておきたいこと
- 監視サーバー自身の DB は監視データで大きくなります。ディスク残量と、ヒストリやトレンドの保存期間(ハウスキーパー設定)を最初に見直します。
- Zabbix のアップグレードでは DB スキーマが自動で更新されます。作業前に DB のバックアップを取り、検証環境で手順を試してから本番に当てます。
- 通知(メールやチャット)を設定しないと、障害が起きても画面を見るまで気づけません。ホスト登録が済んだら、メディアタイプとアクションの設定に進みます。
まとめ
- 公式ダウンロードページで版・OS・DB・Web サーバーを選び、表示されたコマンドでリポジトリを登録する
- DB は utf8mb4 / utf8mb4_bin で作成し、スキーマ投入後に
log_bin_trust_function_creatorsを戻す - 初期管理者のパスワードはすぐ変更し、Web 画面はインターネットへ直接公開しない
- Agent は
Server・ServerActive・Hostnameの3項目が要点。Hostname は Web 画面の登録名と一致させる - 10050 番(パッシブ)と 10051 番(アクティブ)を、相手を限定して開ける
- 疎通は
zabbix_get -k agent.pingとログで確かめ、ファイアウォール → Server → Hostname → PSK の順に切り分ける