2026年7月13日
2026年7月13日
Icinga 2でサーバー監視を構築する手順(Ubuntu・Icinga DB・Icinga Web)
Icinga 2 は、サーバーやサービスの状態を定期的にチェックし、異常を知らせるオープンソースの監視ソフトです。Nagios 互換の監視プラグインをそのまま使えます。画面(Icinga Web)で状態を見るには、監視結果を保存する Icinga DB と、Web アプリの Icinga Web を組み合わせます。
この記事では、Ubuntu の監視サーバーに Icinga 2・Icinga DB・Icinga Web を1台にまとめて入れ、別のWebサーバーの死活(ping)と HTTP の応答を監視するところまでを説明します。コマンドは2026年11月時点の Icinga の公式ドキュメントに沿っています。
全体の構成
| 部品 | 役割 |
|---|---|
| Icinga 2 | 監視の本体。設定に従ってチェックを実行する |
| 監視プラグイン(monitoring-plugins) | ping・HTTP・ディスクなどを実際に調べるコマンド群 |
| Redis(icingadb-redis) | Icinga 2 から Icinga DB へ状態を渡す |
| Icinga DB | 監視の状態と履歴を MySQL/MariaDB(または PostgreSQL)に保存する |
| Icinga Web と Icinga DB Web | 状態を表示する Web 画面 |
作業はすべて root で行います(sudo -i)。
ステップ1:Icinga のパッケージリポジトリを追加する
Icinga の公式手順では、Icinga が提供するリポジトリからパッケージを入れます。
apt update
apt -y install apt-transport-https wget
wget -O icinga-archive-keyring.deb "https://packages.icinga.com/icinga-archive-keyring_latest+ubuntu$(
. /etc/os-release; echo "$VERSION_ID"
).deb"
apt install ./icinga-archive-keyring.deb
cat >/etc/apt/sources.list.d/icinga.sources <<EOF
Types: deb deb-src
URIs: https://packages.icinga.com/ubuntu/
Suites: icinga-$(. /etc/os-release; echo "$VERSION_CODENAME")
Components: main
Signed-By: /usr/share/keyrings/icinga-archive-keyring.gpg
EOF
apt update
ステップ2:Icinga 2 と監視プラグインを入れる
apt install icinga2 monitoring-plugins
# 設定ファイルの検証(エラーが無いことを確かめる)
icinga2 daemon -C
systemctl status icinga2
icinga2 daemon -C は、設定ファイルを読み込んで誤りが無いかだけを確かめるコマンドです。設定を変えたら、反映の前に毎回実行します。
続けて、REST API を有効にします。Icinga DB Web から「今すぐチェック」などの操作をするときに使います。
icinga2 api setup
公式ドキュメントは、/etc/icinga2/features-enabled/api.conf の ApiListener に次の1行を加えることを勧めています。
object ApiListener "api" {
enforce_filter_expression_permission = true
}
ファイルにすでにある object ApiListener "api" { ... } の中に、この1行を追記します(ブロックを新しく作るのではありません)。編集したら再起動します。
icinga2 daemon -C && systemctl restart icinga2
ステップ3:監視するホストとサービスを定義する
Icinga 2 の設定は /etc/icinga2/ にあり、パッケージを入れた直後は conf.d/ に例が入っています。
| ファイル | 内容 |
|---|---|
conf.d/hosts.conf |
監視するホストの定義(最初は監視サーバー自身) |
conf.d/services.conf |
サービスの割り当てのルール(apply Service) |
conf.d/templates.conf |
generic-host・generic-service などの雛形 |
services.conf には、最初から次のようなルールがあります。
addressを持つホストすべてにping4のチェックを割り当てるvars.osが"Linux"のホストにsshのチェックを割り当てる- ホストの
vars.http_vhostsに書いた項目ごとに、httpのチェックを割り当てる
このルールを使い、ホストを1つ足すだけで監視を始められます。新しいファイル /etc/icinga2/conf.d/web01.conf を作ります。
object Host "web01" {
import "generic-host"
address = "192.0.2.10" // 監視するサーバーの IP アドレス
vars.http_vhosts["https"] = {
http_vhost = "www.example.com"
http_ssl = true
http_uri = "/"
}
}
generic-host を取り込むと、ホストの死活は hostalive(ping)で調べられます。vars.http_vhosts に書いた内容から、https という名前の HTTP のチェックができます。vars.os = "Linux" を加えると、SSH のポートのチェックも割り当てられます(監視サーバーから SSH に接続できる場合)。
設定を検証して反映します。
icinga2 daemon -C && systemctl reload icinga2
割り当てられたサービスは、次のコマンドで確かめられます。
icinga2 object list --type Service --name 'web01*'
ここで監視できるのは、監視サーバーから外側に見える項目(ping・HTTP・ポート)です。監視されるサーバーの中のディスクの空きや負荷を調べるには、そのサーバーにも Icinga 2 を入れてエージェントとして接続する構成が必要です(公式ドキュメントの「Distributed Monitoring」の章で説明されています)。
ステップ4:Icinga DB と Redis を入れる
監視の状態を Icinga Web で見るために、Icinga DB を用意します。まず Redis を入れて、Icinga 2 の icingadb 機能を有効にします。
apt install icingadb-redis
systemctl enable --now icingadb-redis
icinga2 feature enable icingadb
systemctl restart icinga2
次に、Icinga DB 本体と、保存先の MySQL のデータベースを用意します(MySQL がまだ無ければ apt install mysql-server などで入れます)。
apt install icingadb
mysql -u root -p
CREATE DATABASE icingadb;
CREATE USER 'icingadb'@'localhost' IDENTIFIED BY 'CHANGEME';
GRANT ALL ON icingadb.* TO 'icingadb'@'localhost';
CHANGEME は推測されにくいパスワードに置き換えます。続けてスキーマを取り込みます。
mysql -u root -p icingadb < /usr/share/icingadb/schema/mysql/schema.sql
/etc/icingadb/config.yml の database: の部分に、作ったデータベースの名前・ユーザー・パスワードを書き、Icinga DB を起動します。
systemctl enable --now icingadb
systemctl status icingadb
ステップ5:Icinga Web を入れる
Icinga Web は PHP の Web アプリです(PHP 8.2 以降が必要)。Ubuntu 24.04 なら標準の PHP 8.3 と Apache で動かせます。
apt install apache2 libapache2-mod-php icingaweb2 icingadb-web
Icinga Web 自身の設定(ユーザーなど)を保存するデータベースを作ります。
CREATE DATABASE icingaweb;
CREATE USER 'icingaweb'@'localhost' IDENTIFIED BY 'CHANGEME';
GRANT ALL ON icingaweb.* TO 'icingaweb'@'localhost';
mysql -u icingaweb -p icingaweb < /usr/share/icingaweb2/schema/mysql.schema.sql
Nginx を使う場合は、次のコマンドで出力される設定を Nginx の設定ディレクトリに保存します。
icingacli setup config webserver nginx --document-root /usr/share/icingaweb2/public
Icinga DB Web から Icinga 2 に操作を送るための API ユーザーを、/etc/icinga2/conf.d/api-users.conf に加えます。
object ApiUser "icingadb-web" {
password = "CHANGEME"
permissions = [ "actions/*", "objects/modify/*", "objects/query/*", "status/query" ]
}
icinga2 daemon -C && systemctl reload icinga2
ステップ6:セットアップウィザードで仕上げる
ウィザードに入るためのトークンを作ります。
icingacli setup token create
# 作ったトークンをもう一度表示する場合
icingacli setup token show
ブラウザーで http://監視サーバーのアドレス/icingaweb2/setup を開き、トークンを入れて進みます。ウィザードでは、主に次の情報を入れます。
| 画面で聞かれる内容 | 入れる値 |
|---|---|
| 有効にするモジュール | Icinga DB Web(icingadb)を有効にする |
| Icinga Web の設定用データベース | ステップ5で作った icingaweb |
| 管理者ユーザー | ログインに使うユーザー名とパスワード |
| Icinga DB のデータベース | ステップ4で作った icingadb |
| Redis | 同じサーバーなら localhost |
完了したら、管理者ユーザーでログインし、web01 のホストと ping4・https のサービスが表示されることを確かめます。
Icinga DB Web から Icinga 2 に操作(再チェック、確認済みにする、停止予定の登録など)を送る設定は、Icinga DB Web の公式ドキュメントのとおり、画面の「Configuration → Modules → icingadb → Command Transports」で、ステップ5の API ユーザー(icingadb-web)を使って登録します。ウィザードの中で登録した場合は不要です。
運用での注意
- 監視サーバーの Web 画面は、HTTPS にし、アクセスできる IP アドレスを制限します。初期の
CHANGEMEのようなパスワードはすべて置き換えます。 - 設定を変えたら、
icinga2 daemon -Cで検証してからsystemctl reload icinga2で反映します。検証に失敗した設定で再起動すると、Icinga 2 が起動しません。 - 異常を通知するには、通知の送り方(メールなど)と通知先のユーザーを設定します(
conf.d/users.conf・conf.d/notifications.confに例があります)。メールで通知する場合は、監視サーバーからメールを送れるようにしておきます。
ほかの監視ソフトと比べたい場合は、Nagiosのインストールと設定 や Zabbixでサーバーを監視する方法 も参照してください。
まとめ
- Icinga の公式リポジトリを追加し、
icinga2とmonitoring-pluginsを入れます。 icinga2 api setupで API を有効にします。conf.d/にホストを定義し、vars.http_vhostsなどで既存のルールに沿ってサービスを割り当てます。設定はicinga2 daemon -Cで検証してから反映します。- Redis・Icinga DB・Icinga Web(Icinga DB Web)を入れ、データベースを用意します。
icingacli setup token createでトークンを作り、/icingaweb2/setupのウィザードで仕上げます。