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でサーバーを監視する方法 も参照してください。

まとめ

  1. Icinga の公式リポジトリを追加し、icinga2 と monitoring-plugins を入れます。
  2. icinga2 api setup で API を有効にします。
  3. conf.d/ にホストを定義し、vars.http_vhosts などで既存のルールに沿ってサービスを割り当てます。設定は icinga2 daemon -C で検証してから反映します。
  4. Redis・Icinga DB・Icinga Web(Icinga DB Web)を入れ、データベースを用意します。
  5. icingacli setup token create でトークンを作り、/icingaweb2/setup のウィザードで仕上げます。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲