SSD Nodes Learn
ガイド Matt Connor著者 Matt Connor ・更新日 2026-07-24

Ubuntu 24.04にZabbix 7.0 LTSをインストールする方法

Ubuntu 24.04にZabbix 7.0 LTSを構築する手順を解説します。MySQLスキーマのインポートやnginxの設定、agent2の導入方法をまとめました。データベースのパスワード設定ミスやnginxのコメントアウト解除忘れなど、構築時によく発生するエラーの解決策も詳しく紹介します。

作成するもの

Zabbix 7.0 LTS スタックをフルセットで実行する、単一の Ubuntu 24.04 VPS を構築します。構成要素は、ポーリングとアラートを行う zabbix-server デーモン、全メトリクスを保存する MariaDB/MySQL データベース、nginx で配信される PHP フロントエンド、そして自身のメトリクスを収集する zabbix-agent2 です。構築完了後、2台目のサーバーを監視対象として追加し、テンプレートを適用すれば、ディスクの満杯やサービスの停止を即座にメールで通知できます。

Zabbix は、単なるステータス表示ツールよりも高機能です。テンプレート、トリガー、エスカレーション、履歴保持機能を備えた本格的な時系列データシステムです。トラブルの多くは、以下の3つの手順の飛ばしが原因で発生します。データベーススキーマのインポート、サーバーが実際に参照するデータベースパスワードの設定、および nginx 設定ファイルにおける2行のコメントアウト解除です。これらが正しく設定されていれば、構築は非常に簡単です。もし、単なる死活監視と共有可能なステータスページのみが必要な場合は、軽量な Uptime Kuma ステータスモニター をコンテナ1つで実行できます。一方、メトリクスごとの閾値設定や、多数のホストにわたるエスカレーションが必要な場合は、Zabbix が最適です。

7.0 LTS ラインを使用してください。サーバー、フロントエンド、agent2、およびスキーマはセットでバージョン管理されており、長期間のセキュリティ修正が提供されます。以下のリポジトリファイル名をコピーする前に、公式の Zabbix ダウンロードページを確認してください。latest リリースパッケージは常に最新の 7.0 ポイントリリースを指しますが、特定の 7.0-N ビルドを指定したい場合は、ページにそのファイル名も記載されています。ここに記載されているその他のコマンドは、7.0 ライン全体で共通して使用可能です。

サイズ、ポート、および前提条件

rootまたはsudo権限を持つ、新規のUbuntu 24.04 KVM VPSを想定します。リソースについては、現実的な最小構成を考慮してください。少数のホストを監視する場合、1つのサーバーでserver、database、nginx、PHPを動作させるには、2 GBのRAMと2つのvCPUが必要です。1 GBのサーバーでも起動はしますが、履歴が増えるとdatabaseのメモリが不足します。数十台のホストを管理する場合は4 GBを計画してください。100台を超える場合は、databaseを別のサーバーに移動してください。ディスク容量は、収集するアイテム数と履歴の保持期間に応じて増加します。最初は数GBを見込んでおいてください。housekeeperが、設定したretention windowsに従って古いデータを削除します。

ポート: フロントエンド用として80および443を使用します。これらは公開するか、自身のIPに制限してください。サーバーは、データを受け取るactive agentsからのTCP 10051をリッスンします。各agentは、サーバーからのポーリングを受けるためにTCP 10050をリッスンします。ファイアウォールがある場合は、公開するものだけを開放してください。フロントエンドにはDNS A recordを設定することを推奨します。証明書を適用する必要があるためです。Zabbixは他のすべてのサービスを監視するため、後付けではなく 2026年に運用すべきセルフホスティングスタック の一部として構成すべきです。

Step 1 — 公式の Zabbix 7.0 repository を追加する

zabbix-release パッケージの役割は、apt source list と signing key をシステムに配置することのみです。パッケージをインストールした後、index を更新してください。

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

wget404 Not Found を返す場合、ファイル名が変更されています。Zabbix のダウンロードページを開き、Ubuntu 24.04 を選択して、表示された zabbix-release URL を正確にコピーしてください。正常な apt update では、repo.zabbix.com 行が表示され、key の警告は出ません。The following signatures couldn't be verified because the public key is not available は、リリースパッケージが key をインストールできなかったことを意味します。その場合は、dpkg -i を再実行して、再度 update を行ってください。

Step 2 — サーバー、frontend、およびagentのインストール

MySQL向けにビルドされたserver、PHP frontend、nginx config、SQL schemaファイル、およびagent2をまとめてインストールします。

sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
  zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

zabbix-server-mysqlはMySQL/MariaDB向けにコンパイルされたserverです。PostgreSQLを使用する場合は、代わりにzabbix-server-pgsqlをインストールし、以下のデータベースの手順を調整してください。zabbix-sql-scriptsには次にインポートするschemaが含まれています。7.0では別のパッケージとなっているため、これを忘れると後のインポートパスのエラーの原因になります。これらのパッケージにはデータベースエンジンは含まれていません。マシンにまだインストールされていない場合は、MariaDBをインストールしてください。

sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb

Step 3 — 正しい character set でデータベースを作成する

Zabbix は collation の設定に厳格です。データベースは utf8mb4_bin を持つ utf8mb4 である必要があります。設定が正しくないと、インポート中に foreign-key エラーが発生して停止します。sudo mysql で root シェルを開き、以下を実行してください。

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'choose-a-strong-password';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;

SET GLOBAL の行は、インポートを安全に行うための設定です。Zabbix の schema は stored functions を作成します。binary logging が有効な場合、zabbix のような non-SUPER アカウントはこれらを作成できません。MySQL 8 では binary logging がデフォルトで有効であり、一部の managed MariaDB でも有効になっています(標準の MariaDB では無効です)。binary logging が有効なサーバーでこの flag をスキップすると、ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled エラーでインポートが停止します。root ユーザーでこの設定を行うことで解決します。インポート完了後に設定を元に戻してください。パスワードは正確に入力してください。サーバー設定には、バイト単位で完全に一致する文字列が必要です。

Step 4 — スキーマのインポート(多くの人が見落とす手順)

フロントエンドが読み込めない最も一般的な原因は、作成したデータベースが空であることです。zabbix-sql-scripts に含まれるスキーマをデータベースにロードしてください。

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
  mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

zabbix のパスワードが求められます。小規模な VPS では、実行に 30 秒から 60 秒かかります。成功した場合は何も表示されません。何も表示されないのが正しい状態です。zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directoryzabbix-sql-scripts パッケージがインストールされていないことを意味します(Step 2 に戻ってください)。ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' は、Step 3 で設定したパスワードまたは権限が間違っていることを意味します。完了したら、セーフティフラグをオフに戻してください。

sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"

sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;" でロードを確認します。doesn't exist エラーではなく、数値が表示されればスキーマのインポートは成功です。

Step 5 — zabbix_server.conf でデータベースのパスワードを設定する

Server は /etc/zabbix/zabbix_server.conf からデータベースの認証情報を読み取ります。設定が必要なのはパスワードのみです。DBNameDBUser は既に zabbix に設定されています。# DBPassword= の行のコメントアウトを解除して、以下のように設定してください。

DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-password

パスワードは、Step 3 で設定したものと完全に一致している必要があります。DBPassword が空であるか、間違っている場合、後に発生する "Zabbix server is not running" というエラーの主な原因となります。これは、daemon が起動した後にログインに失敗し、終了するためです。画面上には何も表示されません。詳細はログを確認してください。

Step 6 — nginx を frontend に向ける

zabbix-nginx-conf パッケージは /etc/zabbix/nginx.conf に server block をインストールし、/etc/nginx/conf.d/zabbix.conf から nginx へリンクを作成します。ただし、listenserver_name の行はコメントアウトされているため、これらを編集するまで nginx は Zabbix を配信しません。

server {
    listen          80;
    server_name     zabbix.example.com;
    ...
}

ドメイン名を使用してください。DNS が未設定の場合は、サーバーのパブリック IP を使用します。注意点が2つあります。Ubuntu のデフォルトの nginx welcome site も port 80 で待機しており、default server として設定されています。そのため、名前が一致しないリクエストはすべてこのサイトが処理してしまいます。誤ったページが表示されるのを防ぐには、sudo rm -f /etc/nginx/sites-enabled/default を削除してください。また、/etc/nginx/conf.d/zabbix.conf が不足している場合(パッケージング上の既知の仕様です)、sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf を使って手動でリンクを作成してください。その後、テストと reload を行います。

sudo nginx -t
sudo systemctl reload nginx

nginx -t の結果が test is successful と表示されるはずです。もし nginx: [emerg] a duplicate default server for 0.0.0.0:80 と表示される場合は、default site と Zabbix block の両方が default_server を占有しています。default site を削除して再度テストしてください。多くの場合、テストは conflicting server name の warning のみでパスしますが、ブラウザには依然として welcome page が表示されます。これは、名前が一致しないリクエストに対して default site が優先されている状態です。これを削除することで解決します。

Step 7 — サービスの起動と有効化

server、agent、PHP-FPM、nginx を起動します。また、再起動後も自動的に起動するように設定します。

sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable  zabbix-server zabbix-agent2 nginx php8.3-fpm

Ubuntu 24.04 には PHP 8.3 が搭載されているため、FPM サービスは php8.3-fpm です。zabbix-nginx-conf パッケージの frontend も同じ master で動作します。server が起動し、正常に動作していることを確認してください。

sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.log

正常なログの末尾には、server が起動したこと、および housekeeperpollertrapper プロセスが実行中であることが表示されます。[Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' が表示される場合は、Step 5 の DBPassword が一致していません。修正して再起動してください。[Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist と表示される場合は、Step 4 の schema import をスキップしています。そのため、server が読み込むデータがありません。

Step 8 — Web setup wizard の完了

http://your-domain-or-ip にアクセスしてください。Zabbix setup wizard が起動します。以下の手順で進めてください。

  1. Welcome — 言語を選択します。
  2. Check of pre-requisites — すべての項目が OK と表示される必要があります。パッケージ化された /etc/zabbix/php-fpm.conf pool により、Zabbix が必要とする PHP limits は既に設定されています。
  3. Configure DB connection — database type は MySQL、host は localhost、port は 0(デフォルトの port または socket を指します)、database name は zabbix、user は zabbix、password は Step 3 で設定した値を使用します。認証情報の誤りや schema の不足は、この段階で検出されます。
  4. Settings — Zabbix server host は localhost、port は 10051 のままにし、install の名前を付けます。
  5. Pre-installation summary を確認し、Install をクリックします。wizard が /etc/zabbix/web/zabbix.conf.php を書き込みます。
  6. FinishAdmin (大文字の A) としてログインし、password に zabbix を入力します。ログイン後、直ちに Users から password を変更してください。

wizard が Cannot create the configuration file と表示する場合、web user が /etc/zabbix/web/ を書き込めません。提示された zabbix.conf.php をダウンロードし、sudo を使って手動で配置してから、Finish をクリックしてください。

Step 9 — ローカルホストの追加とテンプレートの適用

Zabbixは自動では自分自身を監視しません。Data collection → Hosts → Create host に移動してください。Host name に zabbix-server を設定し、Linux servers グループに追加します。次に、IP 127.0.0.1、Port 10050Agent インターフェースを追加してください。Templates セクションでは、Linux by Zabbix agent を選択してリンクします(Linux by Zabbix agent active はエージェントからプッシュする方式です)。設定を保存してください。

1分以内に、ホストの行に緑色の ZBX ラベルが表示され、Monitoring → Latest data にメトリクスが表示されます。赤い ZBX ラベルは、サーバーがエージェントに到達できないことを意味します。これは本ステップのミスではなく、後述するトラブルシューティングの対象です。

Step 10 — 便利なトリガーとメールアラート

Linux by Zabbix agent テンプレートには、高CPU負荷、低メモリ、ディスクフル用のトリガーが既に含まれています。そのため、テンプレートをリンクするだけでアラートを受け取れます。トリガーの作成方法を確認するために、独自のトリガーを追加してみましょう。ホストを開き、Triggers → Create trigger に移動します。名前を Root filesystem over 90% full on {HOST.NAME} とし、Severity を High に設定して、以下の式を入力してください。

last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90

vfs.fs.dependent.size[/,pused] は、テンプレートの filesystem discovery がルートファイルシステム用に作成する使用率アイテムです(Zabbix 7.0 の Linux テンプレートは vfs.fs.get を一度だけ収集し、マウントごとのアイテムを派生させます)。そのため、追加のデータ収集なしでトリガーが作動します。保存してください。

トリガーは、action が通知を行うまでダッシュボードの行の色を変えるだけです。Alerts → Media types → Email で、SMTP server、port、sender address、connection security(通常は STARTTLS)、およびリレーの認証情報を設定してください。その後、Test を実行します。ここで失敗する場合、実際の通知が行われる前に SMTP の設定に問題があることを意味します。次に、Users → Users → Admin → Media → Add で Admin ユーザーにアドレスを登録し、通知する Severity を選択します。最後に、Alerts → Actions → Trigger actions → Create action で設定を行います。Trigger severity >= Warning のような condition を追加し、Operations で Admin への Email 送信を設定します。保存して有効化してください。チャット通知が必要な場合は、Zabbix 7.0 に含まれる Slack、Discord、Telegram 用の webhook media type を使用してください。設定方法は Email と同じです。設定後、ユーザーに割り当ててください。

Agentを使用した2台目のサーバーの監視

別のサーバーを監視するには、そのサーバーにも Zabbix リポジトリを追加してください。Ubuntu 24.04 には Zabbix パッケージが含まれていません。その後、agent のみをインストールします。

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
sudo apt install -y zabbix-agent2

/etc/zabbix/zabbix_agent2.conf を編集します。パッシブポーリングの場合は Server に Zabbix server の IP を設定してください。アクティブチェックの場合は、ServerActive に加えて、frontend で作成するホストと一致する一意の Hostname を設定します。

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

sudo systemctl enable --now zabbix-agent2 を実行し、Zabbix server からこのマシンへの TCP 10050 ポートを開放してください。frontend に戻り、Agent インターフェースがそのマシンの IP を指すようにホストを作成し、Linux テンプレートをリンクします。1分以内にデータが報告されます。

発生するエラーと表示される文字列

Frontendに Error connecting to database または database error が表示される場合。 ウィザードの DB ステップで Access denied for user 'zabbix'@'localhost' (using password: YES) が出る場合、パスワードが Step 3 と一致していないか、GRANT が実行されていません。データベースへの接続は成功しているが、Frontend に The frontend does not match Zabbix database または Table 'zabbix.users' doesn't exist が表示される場合は、Step 4 の schema import がスキップされたか失敗しています。新しく作成したデータベースに対して再実行してください。

オレンジ色のバナー: Zabbix server is not running: the information displayed may not be current Frontend は動作していますが、ライブサーバーに到達できません。主な原因は以下の3点です。サービスが停止している場合:systemctl status zabbix-server を確認してサービスを開始してください。サービスは動作しているがデータベースに到達できない場合:ログに [Z3001] connection to database 'zabbix' failed: [1045] Access denied と表示されます。これは DBPassword が誤っているか空であることを意味します。Frontend が誤ったサーバーを指している場合:/etc/zabbix/web/zabbix.conf.php 内の host localhost port 10051 に誤った設定が保存されています。Ubuntu ではデフォルトで SELinux は有効ではありません。そのため、RHEL のガイドにある SELinux-socket が原因となるケースは当てはまりません。多くの場合、データベースのパスワード設定ミスか、サービスの停止が原因です。

Host に赤い ZBX ラベル、または item error Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused が表示される場合。 Agent が動作していないか、リッスンしていません。systemctl status zabbix-agent2 を確認し、ListenPort=10050 を確認してください。「connection refused」ではなくタイムアウトが発生する場合は、ファイアウォールが port 10050 をドロップしています。関連する Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. は、Agent には到達できるが Server= 行に Zabbix server の IP が記載されていないことを意味します。IP を追加して Agent を再起動してください。

nginx のデフォルトの welcome page、または 502 Bad Gateway が表示される場合。 welcome page が表示される場合は、デフォルトのサイトが有効なままか、Zabbix の設定ブロックがリンクされていません。/etc/nginx/sites-enabled/default を削除し、Step 6 と同様に /etc/nginx/conf.d/zabbix.conf が存在することを確認してください。502 は、nginx が PHP に到達したものの、PHP-FPM が停止しているか、別の socket でリッスンしていることを意味します。php8.3-fpm を開始し、Zabbix 設定ブロック内の fastcgi_pass socket が、実行中の pool と一致していることを確認してください。

バックアップ、アップグレード、および TLS

データベースには全履歴が含まれます。mysqldump を使用して定期的にバックアップを取り、ダンプファイルはサーバーの外に保管してください。

mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gz

/etc/zabbix の設定ファイルはサイズが小さいため、保存する価値があります。ただし、これらは再構築可能です。データは再構築できません。リストアは、データベースの作成、ダンプのインポート、設定ファイルの参照先変更という手順で行います。

7.0 系列内でのアップグレードは、通常の apt update && apt upgrade 実行と同じです。サーバーは次回の起動時にスキーマのマイグレーションを適用します。パッケージをアップグレードし、zabbix-server を再起動してください。将来のメジャーバージョンへの移行は、意図的な操作となります。アップグレードに関する注意を読み、まずデータベースをダンプしてください。スキーマの変更は一方通行(不可逆)となるためです。この不可逆的な変更があるため、LTS バージョンに固定して使い続ける必要があります。

フロントエンドを HTTP のままにしないでください。DNS がサーバーを指すようになったら、Ubuntu 24.04 上の nginx で Certbot と Let's Encrypt を使用する方法 を用いて証明書を導入してください。これにより、サーバーブロックが書き換えられ、443 ポートでの待機と 80 ポートからのリダイレクトが行われます。他のサーバーを監視するためにログインするサーバーのセキュリティを強化する場合、fail2ban で SSH の総当たり攻撃を禁止する方法 を使用して SSH も保護してください。監視用のログイン情報は平文で送信すべきではなく、パスワード推測攻撃に対して門戸を開けておくべきではありません。

FAQ

Zabbix agentは必要ですか?それともエージェントなしでも監視できますか?

どちらも可能です。agent2(エージェント)を使用すると、CPU、メモリ、ディスク、プロセス、サービス、ログファイルなど、ホストごとの詳細なメトリクスを取得できます。管理下にあるサーバーには、通常このエージェントを使用します。エージェントレス監視は、ソフトウェアをインストールできないデバイスに対して使用します。例として、スイッチやプリンターにはSNMP、疎通確認にはICMP ping、エンドポイントにはHTTPチェック、ハードウェアの健全性確認にはIPMIを使用します。実際の運用では、これらを組み合わせて使用することがほとんどです。

フロントエンドに「Zabbix server is not running」と表示されるのはなぜですか?

フロントエンドは動作していますが、実行中の zabbix-server プロセスに接続できていません。通常、サーバーは起動したものの、zabbix_server.conf 内の DBPassword が間違っているか空であるためにログインに失敗し、プロセスが終了しています。systemctl status zabbix-server を実行して /var/log/zabbix/zabbix_server.log を確認してください。[Z3001] connection to database ... failed の行があれば、それが原因です。パスワードを修正して再起動すれば、1分以内に表示が消えます。

MySQLを使う必要がありますか?PostgreSQLでも大丈夫ですか?

どちらも完全にサポートされています。本ガイドのように MariaDB または MySQL を使用する zabbix-server-mysql、あるいは PostgreSQL を使用する zabbix-server-pgsql が利用可能です。小規模な構成では、どちらを選んでも大きな違いはありません。大規模な構成では、TimescaleDB 拡張機能を利用した PostgreSQL が推奨されます。履歴テーブルのパーティショニングにより、メンテナンスの負荷が大幅に軽減されるため、大規模サイトではこちらが好まれます。一度選択したデータベースを変更するには、設定の切り替えではなく、データの全エクスポートと再インポートが必要になるため、最初に一つに決めてください。

Zabbix all-in-one サーバーにはどれくらいの RAM が必要ですか?

数台のホストを監視する単一のサーバーの場合、2 GB が現実的な最小構成であり、数十台のホストを監視する場合は 4 GB あれば十分です。メモリの大部分は、データベースのキャッシュとサーバーの pollers に使用されます。1 GB の VPS でも動作しますが、履歴データが増えるとデータベースのメモリが不足します。100 ホストを超える場合は、データベースを別のサーバーに分離し、1 台のサーバーに RAM を追加するのではなく、データベースの buffer pool をチューニングしてください。

数台のサーバーを監視するのに Zabbix は過剰(overkill)ですか?

その可能性があります。単に「稼働しているか」を確認し、ステータス画面を共有したいだけであれば、稼働状況とステータス監視のための Uptime Kuma のような軽量なツールの方が、セットアップが速く、一目で状況を把握しやすいです。メトリクスごとの閾値設定、履歴グラフ、ホストテンプレート、およびエスカレーションルールが必要な場合は、Zabbix を選択してください。これらは、単純な ping ツールでは大規模な環境に対して実現できない機能です。