監視ツール · 5 min read · Nov 18, 2025
Debian 9.2にIcinga 2監視ツールをインストールする方法
このガイドでは、Debian 9.2リリースに最新バージョンのIcinga 2ウェブ監視ツールをインストールおよび構成する方法について説明します。これにより、物理または仮想サーバーやVM、ルーター、スイッチ、ファイアウォール機器、その他のネットワークIoTデバイスなど、すべての重要なネットワークインフラストラクチャデバイスを監視できます。また、HTTP、FTP、SMTP、IMAPなどのネットワークプロトコルの状態、ホストリソース、物理センサー、ソフトウェア、CPU負荷、メモリ、ディスクスペースなどを監視でき、ICMPまたはpingリクエストを介してほぼすべての相互接続されたネットワークデバイスを監視できます。
Icingaは、元々Nagios監視システムのフォークであり、PHPで書かれたオープンソースのモダンなネットワーク監視アプリケーションで、Apache/Nginx、PHP、MySQL/MariaDBコンポーネントの下でLinuxに広く展開されています。Icinga 2は、ネットワーク、システム、サービス、またはその他の関連するネットワークの障害について、メール、SMS、チャット、またはその他のタイプのアラートを介してシステムまたはネットワーク管理者に通知するように構成でき、ネットワークのダウンタイムやパフォーマンスに関するグラフィックスを生成することもできます。
要件
- ベアメタルマシンまたは仮想プライベートサーバーにインストールされたDebian 9.2。
- サーバーのネットワークインターフェースカードの1つが静的IPアドレスで構成されていること。
- コンソールまたはSSHサービスを介してリモートで、またはローカルまたはリモートアカウントのsudo root権限を介してrootアカウントに直接アクセスできること。
- デプロイメントに応じて、適切なDNSレコードが構成されたドメイン名(プライベートまたはパブリック)。
- メールアラートを送信するために、適切に構成されたメールサービス。
初期設定
Icinga 2ウェブ監視ツールを自分のサーバーにインストールおよび構成する前に、まずシステムがアプリケーションのコンパイルおよびインストールに必要なすべてのソフトウェア要件を満たしていることを確認してください。最初のステップでは、以下のコマンドを発行してシステムのリポジトリとソフトウェアパッケージを更新します。
apt updateapt upgrade次のステップでは、コマンドラインからシステムをさらに管理するために使用されるいくつかの必要なユーティリティをインストールするために、以下のコマンドを実行します。
apt install wget bash-completion unzip次に、以下のコマンドを実行してシステムのホスト名を設定します。ホスト名変数を適宜置き換えてください。
hostnamectl set-hostname icinga以下のコマンドを発行してマシンのホスト名とhostsファイルを確認します。
hostnamectlcat /etc/hostnamehostname –s
最後に、カーネルの更新とホスト名の変更を適切に適用するためにDebianサーバーを再起動します。
init 6Icinga 2は、ウェブから構成できるネットワーク監視アプリケーションであり、その機能は主にPHPサーバーサイドプログラミング言語に基づいています。アプリケーションのPHPファイルスクリプトを実行するためには、Apache HTTPサーバーなどのウェブサーバーと、PHP処理ゲートウェイがシステムにインストールされ、稼働している必要があります。Icingaが適切に動作するために必要なすべてのPHPモジュールとともにApacheウェブサーバーとPHPインタープリターをインストールするために、サーバーコンソールで以下のコマンドを発行します。
apt install apache2 libapache2-mod-php7.0 php7.0-xml php7.0-opcache php7.0-xml php7.0-mbstring php7.0-json php7.0-curl php7.0-ldap php7.0-cli php7.0-gd php7.0-intl php7.0-readlineApacheとPHPがインストールされた後、以下のコマンドをroot権限で発行して、ウェブサーバーが稼働しており、ポート80でネットワーク接続をリッスンしているかどうかをテストします。
netstat –tlpnDebianシステムにnetstatネットワークユーティリティがデフォルトでインストールされていない場合は、以下のコマンドを実行してインストールします。
apt install net-toolsnetstatコマンドの出力を確認することで、Apacheウェブサーバーがポート80での受信ネットワーク接続をリッスンしていることがわかります。同じタスクには、Debian 9にデフォルトで自動的にインストールされるssコマンドも使用できます。
ss- tulpnシステムにUFWファイアウォールアプリケーションなどのファイアウォールが有効になっている場合は、以下のコマンドを発行してHTTPトラフィックがファイアウォールを通過できるように新しいルールを追加する必要があります。
ufw allow WWWまたは
ufw allow 80/tcpDebianサーバーでファイアウォールルールを管理するためにiptablesの生ルールを使用している場合は、訪問者がIcinga2ウェブインターフェースを閲覧できるようにファイアウォールでポート80の受信トラフィックを許可するために、以下のルールを追加します。
apt-get install -y iptables-persistentiptables -I INPUT -p tcp --destination-port 80 -j ACCEPTsystemctl iptables-persistent savesystemctl iptables-persistent reload次に、以下のコマンドを発行して、HTTP接続をHTTPSにリダイレクトするために使用されるApacheモジュールを有効にして適用します。
a2enmod rewritesystemctl restart apache2最後に、クライアントのブラウザでApacheウェブサーバーのデフォルトのウェブページが表示できるかどうかを確認するために、DebianマシンのIPアドレスまたはドメイン名、またはサーバーのFQDNにHTTPプロトコルを介してアクセスします。マシンのIPアドレスがわからない場合は、ifconfigまたはip aコマンドを実行してサーバーのIPアドレスを表示します。DebianのデフォルトのApacheページがブラウザに表示されます。以下のスクリーンショットのように。

クライアントのトラフィックを保護するためにHTTPSプロトコルを介してIcinga 2監視アプリケーションにアクセスするために、以下のコマンドを発行してApacheウェブサーバーのSSLモジュールとSSLサイト構成ファイルを有効にします。また、ユーザーがHTTPS経由でインターフェースを訪問するように強制するためにApacheリライトモジュールも有効にします。
a2enmod ssl rewritea2ensite default-ssl.conf次に、テキストエディタでApacheデフォルトのSSLサイト構成ファイルを開き、DocumentRootディレクティブの後に以下の行を追加してURLリライトルールを有効にします。以下のサンプルのように。
nano /etc/apache2/sites-enabled/default-ssl.confSSLサイト構成ファイルの抜粋:
Options +FollowSymlinks
AllowOverride All
Require all granted
また、以下の抜粋のようにVirtualHost行を次のように変更します。

TLS Apacheファイルを閉じ、/etc/apache2/sites-enabled/000-default.confファイルを編集のために開き、SSL構成ファイルと同様のURLリライトルールを追加します。以下の例のようにDocumentRootステートメントの後にコード行を挿入します。
Options +FollowSymlinks
AllowOverride All
Require all granted

最後に、これまでに構成されたすべてのルールを適用するためにApacheデーモンを再起動し、HTTPプロトコルを介してドメインにアクセスします。Apacheがインストール時に発行した自己署名証明書ペアを自動的に使用しているため、ブラウザにエラー警告が表示されるはずです。以下のスクリーンショットのように。
systemctl restart apache2
警告を受け入れて続行し、HTTPSプロトコルを介してApacheのデフォルトのウェブページにリダイレクトされます。ブラウザに以下のページが表示されます。

UFWファイアウォールアプリケーションがHTTPSポートへの受信ネットワーク接続をブロックしている場合は、以下のコマンドを発行してHTTPSトラフィックがファイアウォールを通過できるように新しいルールを追加する必要があります。
ufw allow 'WWW Full'または
ufw allow 443/tcpiptablesがネットワークレベルでDebianシステムを保護するためにインストールされたデフォルトのファイアウォールアプリケーションである場合は、訪問者がドメイン名を閲覧できるようにファイアウォールでポート443の受信トラフィックを許可するために、以下のルールを追加します。
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPTsystemctl iptables-persistent savesystemctl iptables-persistent reload次のステップでは、PHPのデフォルト構成ファイルにいくつかの変更を加えて、以下のPHP変数が有効になっていることと、PHPのtimezone設定が正しく構成され、システムの地理的位置に一致していることを確認する必要があります。/etc/php/7.0/apache2/php.iniファイルを編集のために開き、以下の行が次のように設定されていることを確認します。また、最初にPHP構成ファイルのバックアップを作成します。
cp /etc/php/7.0/apache2/php.ini{,.backup}nano /etc/php/7.0/apache2/php.iniphp.ini構成ファイルで以下の変数を検索、編集、変更します。
php_value max_execution_time 300
php_value memory_limit 128M
php_value max_input_time 300
date.timezone = Europe/Londontime.zone変数を、以下のリンクに記載されているPHPドキュメントのタイムゾーンリストを参照して、適宜置き換えてください。http://php.net/manual/en/timezones.php
ウェブサイトのページの読み込み速度をOPCacheプラグインを介して向上させたい場合は、以下のOPCache設定をPHPインタープリター構成ファイルの下部に追加します。
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1php.ini構成ファイルを閉じ、以下のコマンドを発行してPHP構成ファイルの末尾を確認し、変数が正しく追加されたかどうかを確認します。
tail /etc/php/7.0/apache2/php.ini上記の変更を行った後、以下のコマンドを発行してapacheデーモンを再起動し、新しい変更を適用します。
systemctl restart apache2最後に、以下のコマンドを実行してPHP情報ファイルを作成し、ブラウザから以下のURLでPHP情報スクリプトファイルにアクセスしてPHPタイムゾーンが正しく構成されているかどうかを確認します。date設定までスクロールしてphpタイムゾーン構成を確認します。
echo ''| tee /var/www/html/info.php
Icinga 2は、ユーザー、連絡先、およびその他の収集されたデータをMySQL、SQLite、またはPostgreSQLなどの特定のRDBMSデータベースに保存します。このガイドでは、バックエンドとしてMariaDBデータベース(MySQLデータベースのフォーク)を使用してIcingaを構成します。以下のコマンドを発行してMariaDBデータベースとMySQLデータベースにアクセスするために必要なPHPモジュールをインストールします。
apt install mariadb-server mariadb-client php7.0-mysqlMariaDBをインストールした後、デーモンが実行中であり、localhostのポート3306で接続をリッスンしているかどうかを確認するためにnetstatまたはssコマンドを実行します。
netstat –tlpn | grep mysql次に、MySQLコンソールにログインし、以下のコマンドを発行してMariaDBのrootアカウントを保護します。
mysql -h localhostuse mysql;
update user set plugin='' where user='root';
flush privileges;
exit次に、Debianリポジトリからのインストールパッケージに含まれるスクリプトmysql_secure_installationを実行してMariaDBを保護します。スクリプトを実行すると、MySQL rootパスワードの変更、匿名ユーザーの削除、リモートrootログインの無効化、テストデータベースの削除など、MariaDBデータベースを保護するための一連の質問が表示されます。以下のコマンドを発行してスクリプトを実行し、すべての質問に「yes」と入力してMySQLデーモンを完全に保護します。以下のスクリプト出力をガイドとして使用します。
sudo mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!In order to log into MariaDB to secure it, we'll need the currentpassword for the root user. If you've just installed MariaDB, andyou haven't set the root password yet, the password will be blank,so you should just press enter here.Enter current password for root (enter for none):OK, successfully used password, moving on...Setting the root password ensures that nobody can log into the MariaDBroot user without the proper authorisation.You already have a root password set, so you can safely answer 'n'.Change the root password? [Y/n] yNew password:Re-enter new password:Password updated successfully!Reloading privilege tables.. ... Success!By default, a MariaDB installation has an anonymous user, allowing anyoneto log into MariaDB without having to have a user account created forthem. This is intended only for testing, and to make the installationgo a bit smoother. You should remove them before moving into aproduction environment.Remove anonymous users? [Y/n] y ... Success!Normally, root should only be allowed to connect from 'localhost'. Thisensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] y ... Success!By default, MariaDB comes with a database named 'test' that anyone canaccess. This is also intended only for testing, and should be removedbefore moving into a production environment.Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success!Reloading the privilege tables will ensure that all changes made so farwill take effect immediately.Reload privilege tables now? [Y/n] y ... Success!Cleaning up...All done! If you've completed all of the above steps, your MariaDBinstallation should now be secure.Thanks for using MariaDB!MariaDBのセキュリティをテストするために、rootパスワードなしでコンソールからデータベースにログインしてみてください。rootアカウントにパスワードが提供されていない場合、データベースへのアクセスは拒否されるはずです。パスワードが提供されると、MySQLコンソールへのログインプロセスが許可されるはずです。以下のスクリーンショットのように。
mysql -h localhost -u rootmysql -h localhost -u root –p
次に、MariaDBデータベースコンソールにログインし、最初にIcinga2アプリケーションで使用するデータベースと、このデータベースを管理するために使用されるユーザーを作成します。以下のコマンドを発行します。データベース名、ユーザー、パスワードは適宜置き換えてください。
mysql –u root -pcreate database icingadb;
grant all privileges on icingadb.* to 'icinga_user'@'localhost' identified by 'icinga_pass';
flush privileges
exit
次に、Icinga2ウェブインターフェースのユーザー、グループ、およびその他のウェブインターフェースのカスタムデータを保存するために使用される2番目のMySQLデータベースを作成します。以下のコマンドを発行します。上記のデータベースと同様に、データベース名と資格情報を適宜置き換え、データベースユーザーの強力なパスワードを選択してください。
mysql –u root –pcreate database icinga_users;
grant all privileges on icinga_users.* to 'icinga_user'@'localhost' identified by 'icinga_pass';
flush privileges
exit
これまでに行ったすべての変更を適用するために、MySQLとApacheデーモンを再起動し、以下のコマンドを発行してデーモンが実行中であることを確認します。
systemctl restart mysql apache2systemctl status mysql apache2Icinga 2のインストール
ウェブ監視アプリケーションをインストールするためのすべてのシステム要件が満たされた後、以下のコマンドを発行してMySQLモジュールとともにアプリケーションをインストールします。Icinga 2は、Debian 9リポジトリから提供される事前コンパイルされたバイナリパッケージを持っています。インストールはDebian 9のaptパッケージマネージャーを介して行われます。
apt install icinga2 icinga2-ido-mysqlDebian 9リポジトリからIcinga2の事前コンパイルされたバイナリをインストールする際に、アプリケーションを構成するための一連のプロンプトが画面に表示されます。最初のプロンプトでは、MySQLモジュールを使用するためにIcinga 2を構成して有効にするかどうかを尋ねられます。プロンプトから「はい」を選択し、[enter]キーを押して続行します。以下の画像のように。

次のプロンプトでは、dbconfig-commonオプションを使用してicinga2-ido-mysqlのデータベースを構成するかどうかを尋ねられます。プロンプトから「いいえ」を選択し、[enter]キーを押してIcinga 2のインストールを完了します。

Icinga 2がインストールされた後、Icinga 2デーモンを起動し、以下のコマンドを実行してサービスの状態を確認します。
systemctl start icinga2.servicesystemctl status icinga2.service次のステップでは、以下のコマンドを使用してDebian 9からIcinga 2ウェブインターフェースおよびコマンドラインユーティリティパッケージをインストールします。
apt install icingaweb2 icingacliIcinga 2をウェブから構成する前に、すべての変更を取得するためにIcinga 2デーモンを再起動し、以下のコマンドを発行してアプリケーションの状態を確認します。
systemctl restart icinga2.servicesystemctl status icinga2.service次に、Apacheウェブサーバーによってインストールされたデフォルトのindex.htmlファイルをウェブルートパスから削除し、以前に作成したinfo.phpファイルも削除します。
rm /var/www/html/index.htmlrm /var/www/html/info.php次に、以下のコマンドを実行してIcingaデータベースのMySQLスキーマをインストールします。MySQLデータベーススキーマは/usr/share/icinga2-ido-mysql/schema/ディレクトリにあります。
mysql -u root icingadb -p < /usr/share/icinga2-ido-mysql/schema/mysql.sqlIcinga 2のインストールをウェブから行うために、以下のコマンドを実行してインストールトークンを生成します。このトークンは後でウェブインターフェースで要求されたときに記入するので、必ずメモしておいてください。
icingacli setup token create
後でこのトークンが見つからない場合は、以下のコマンドを実行して生成されたトークンを表示できます。
icingacli setup token show
次に、ブラウザを開いてサーバーのIPアドレスまたはドメイン名にHTTPプロトコルを介してアクセスし、Icinga2ウェブインターフェースのインストールプロセスを開始します。
http://your_domain.tld/icingaweb2/setup
最初のインストール画面では、インストールプロセスを開始するために、前に生成したトークンを記入するように求められます。以下のスクリーンショットのように、トークンを追加したら、次へボタンを押してインストールプロセスを続行します。

次のインストール画面では、Icinga 2ウェブインストールのためにいくつかのモジュールを有効にするように求められます。DocおよびMonitoringモジュールを選択し、次へボタンを押して続行します。以下の画像のように。

次に、Icinga2ウェブインストーラーは、インストールプロセスを続行するためにすべての要件が満たされているかどうかを確認するために、一連のシステムおよびPHPモジュールのチェックを実行します。すべての必要なPHPモジュールがインストールされ、適切に構成されているかどうかを確認するために、リストをスクロールダウンし、次へボタンを押して次のインストールセクションに進みます。以下の画像のように。


次の画面では、Icinga Web 2の認証バックエンドメソッドとしてデータベースを選択し、次へボタンを押して続行します。

次のステップでは、Icinga 2 Web MySQLデータベース名とこのデータベースのアクセス資格情報を追加します。このデータベースは、Icinga 2ウェブインターフェースのユーザーとグループを保存するために使用されます。以前に作成した2番目のデータベースの情報を使用します。このリソースの名前としてicingaweb_dbを追加し、ホスト、ポート、文字セットの変数はデフォルトのままにします。PersistentおよびSSLオプションはチェックせず、構成を検証するボタンを押してデータベース接続を検証します。以下の画像のように。完了したら、次へボタンを押して次のインストーラーセクションに進みます。

次に、データベース認証バックエンドの名前を設定し、次へボタンを押して続行します。以下のスクリーンショットのように。

次の画面では、Icinga2ウェブインターフェースを管理するための管理者ユーザー名を提供し、このアカウントの強力なパスワードを選択します。完了したら、次へボタンを押して次のインストール画面に進みます。

Icingaアプリケーションとロギング構成を以下の設定で構成し、完了したら次へボタンを押して続行します。
- スタックトレースを表示するをチェック
- ストレージタイプ = データベース
- ロギングタイプ = ファイル
- ロギングレベル = エラー
- ファイルパス = /var/log/icingaweb2/icingaweb2.log

次の画面では、Icinga Web2が正常に構成されたことを知らせるメッセージが表示され、これまでに行ったすべての構成の詳細なレポートが表示されます。レポートを確認し、次へボタンを押して次のインストールセクションに進みます。

次へボタンを押してIcinga 2監視モジュールの構成に進みます。以下の画像のように。

次の画面では、Icinga2バックエンドの名前を追加し、バックエンドタイプとしてIDOを選択し、次へボタンを押して続行します。

サーバーのコンソールに戻り、Icinga MySQL IDO構成ファイルを開いて編集し、Icingaデータベースの資格情報を追加します(最初のデータベース情報)。以下のサンプルのように。
nano /etc/icinga2/features-enabled/ido-mysql.confido-mysql.confファイルの抜粋:
library "db_ido_mysql"
object IdoMysqlConnection "ido-mysql" {
user = "icinga_user",
password = "icinga_pass",
host = "localhost",
database = "icingadb"
}
ファイルを保存し、以下のコマンドを発行してIcinga2デーモンを再起動して設定を適用します。その後、Icingaウェブインターフェースに戻り、インストールプロセスを続行します。
systemctl restart icinga2.serviceIcingaデータベース情報を追加してIDOリソース環境を設定します。最初に作成したデータベースの情報を使用します。以下の画像のように。データベース情報の編集が完了したら、Icinga監視IDOリソースを検証するために構成を検証するボタンを押し、次へボタンを押して次のインストール画面に進みます。

Icingaコマンドトランスポートを以下の設定で構成し、次へボタンを押して続行します。
- トランスポート名 = icinga2
- トランスポートタイプ = ローカルコマンドファイル
- コマンドファイル = /var/run/icinga2/cmd/icinga2.cmd

次の画面では、監視セキュリティのために構成されたデフォルトの変数をそのままにしておき、次へボタンを押して続行します。以下の画像のように。

次の画面では、Icinga2監視モジュールが正常に構成されたことを知らせる新しいメッセージが表示されます。表示されたレポートを確認して、すべてが正しく構成されているかどうかを確認し、完了ボタンを押してインストールを完了します。

インストールプロセスが正常に完了すると、Icinga Web 2が正常にインストールされたことを知らせるお祝いのメッセージが表示されます。Icinga2ログインページにリダイレクトされるためにログインリンクを押します。

インストールプロセス中に構成した資格情報を使用してIcinga Web 2にログインすると、サーバーに属する現在監視されているサービスとシステムリソースのリストが表示されるIcinga Web 2ダッシュボードに移動します。


最後に、サーバーのコマンドラインに再度ログインし、以下のコマンドを実行してIcinga Web 2のログが作成されることを確認します。
mkdir -p /var/log/icingaweb2/chgrp -R icingaweb2 /var/log/icingaweb2/chmod -R 775 /var/log/icingaweb2/訪問者がIcinga Web 2インターフェースをHTTPSプロトコル経由で閲覧するように強制するために、以下の内容で新しい.htaccessファイルをウェブサーバーのドキュメントルートパスに作成します。
nano /var/www/html/.htaccess.htaccessファイルの抜粋:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteEngine on
Options -Indexes これで完了です!Debian 9.2にIcinga 2ネットワーク監視アプリケーションを正常にインストールおよび構成しました。ただし、Apache HTTPサーバーがサーバーとクライアントのブラウザ間のトラフィックを暗号化するために自己署名証明書を使用しているため、ドメインにアクセスするたびにブラウザに警告メッセージが表示されます。この場合、信頼できる証明書機関から発行された証明書を購入するか、Let’s Encrypt CAから無料の証明書ペアを取得する必要があります。
Icinga 2に関するその他のカスタム構成については、以下のアドレスのドキュメントページを訪れてください: https://www.icinga.com/docs
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。