監視ツール · 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 update
apt upgrade

次のステップでは、コマンドラインからシステムをさらに管理するために使用されるいくつかの必要なユーティリティをインストールするために、以下のコマンドを実行します。

apt install wget bash-completion unzip

次に、以下のコマンドを実行してシステムのホスト名を設定します。ホスト名変数を適宜置き換えてください。

hostnamectl set-hostname icinga

以下のコマンドを発行してマシンのホスト名とhostsファイルを確認します。

hostnamectl
cat /etc/hostname
hostname –s

システムホスト名を設定

最後に、カーネルの更新とホスト名の変更を適切に適用するためにDebianサーバーを再起動します。

init 6

Icinga 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-readline

ApacheとPHPがインストールされた後、以下のコマンドをroot権限で発行して、ウェブサーバーが稼働しており、ポート80でネットワーク接続をリッスンしているかどうかをテストします。

netstat –tlpn

Debianシステムにnetstatネットワークユーティリティがデフォルトでインストールされていない場合は、以下のコマンドを実行してインストールします。

apt install net-tools

netstatコマンドの出力を確認することで、Apacheウェブサーバーがポート80での受信ネットワーク接続をリッスンしていることがわかります。同じタスクには、Debian 9にデフォルトで自動的にインストールされるssコマンドも使用できます。

ss- tulpn

システムにUFWファイアウォールアプリケーションなどのファイアウォールが有効になっている場合は、以下のコマンドを発行してHTTPトラフィックがファイアウォールを通過できるように新しいルールを追加する必要があります。

ufw allow WWW

または

ufw allow 80/tcp

Debianサーバーでファイアウォールルールを管理するためにiptablesの生ルールを使用している場合は、訪問者がIcinga2ウェブインターフェースを閲覧できるようにファイアウォールでポート80の受信トラフィックを許可するために、以下のルールを追加します。

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

次に、以下のコマンドを発行して、HTTP接続をHTTPSにリダイレクトするために使用されるApacheモジュールを有効にして適用します。

a2enmod rewrite
systemctl restart apache2

最後に、クライアントのブラウザでApacheウェブサーバーのデフォルトのウェブページが表示できるかどうかを確認するために、DebianマシンのIPアドレスまたはドメイン名、またはサーバーのFQDNにHTTPプロトコルを介してアクセスします。マシンのIPアドレスがわからない場合は、ifconfigまたはip aコマンドを実行してサーバーのIPアドレスを表示します。DebianのデフォルトのApacheページがブラウザに表示されます。以下のスクリーンショットのように。

http://your_domain.tld

Apache Debianデフォルトページ

クライアントのトラフィックを保護するためにHTTPSプロトコルを介してIcinga 2監視アプリケーションにアクセスするために、以下のコマンドを発行してApacheウェブサーバーのSSLモジュールとSSLサイト構成ファイルを有効にします。また、ユーザーがHTTPS経由でインターフェースを訪問するように強制するためにApacheリライトモジュールも有効にします。

a2enmod ssl rewrite
a2ensite default-ssl.conf

次に、テキストエディタでApacheデフォルトのSSLサイト構成ファイルを開き、DocumentRootディレクティブの後に以下の行を追加してURLリライトルールを有効にします。以下のサンプルのように。

nano /etc/apache2/sites-enabled/default-ssl.conf

SSLサイト構成ファイルの抜粋:

  
  Options +FollowSymlinks  
  AllowOverride All  
  Require all granted  

また、以下の抜粋のようにVirtualHost行を次のように変更します。

        

SSL仮想ホスト構成

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

  
  Options +FollowSymlinks  
  AllowOverride All  
  Require all granted  

Apacheデフォルトvhostファイルを編集

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

systemctl restart apache2

https://yourdomain.tld

SSL警告

警告を受け入れて続行し、HTTPSプロトコルを介してApacheのデフォルトのウェブページにリダイレクトされます。ブラウザに以下のページが表示されます。

SSL暗号化ウェブページ

UFWファイアウォールアプリケーションがHTTPSポートへの受信ネットワーク接続をブロックしている場合は、以下のコマンドを発行してHTTPSトラフィックがファイアウォールを通過できるように新しいルールを追加する必要があります。

ufw allow 'WWW Full'

または

ufw allow 443/tcp

iptablesがネットワークレベルでDebianシステムを保護するためにインストールされたデフォルトのファイアウォールアプリケーションである場合は、訪問者がドメイン名を閲覧できるようにファイアウォールでポート443の受信トラフィックを許可するために、以下のルールを追加します。

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
systemctl iptables-persistent save
systemctl 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.ini

php.ini構成ファイルで以下の変数を検索、編集、変更します。

php_value max_execution_time 300  
php_value memory_limit 128M  
php_value max_input_time 300  
date.timezone = Europe/London

time.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=1

php.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

https://domain.tld/info.php

PHPINFO出力

Icinga 2は、ユーザー、連絡先、およびその他の収集されたデータをMySQL、SQLite、またはPostgreSQLなどの特定のRDBMSデータベースに保存します。このガイドでは、バックエンドとしてMariaDBデータベース(MySQLデータベースのフォーク)を使用してIcingaを構成します。以下のコマンドを発行してMariaDBデータベースとMySQLデータベースにアクセスするために必要なPHPモジュールをインストールします。

apt install mariadb-server mariadb-client php7.0-mysql

MariaDBをインストールした後、デーモンが実行中であり、localhostのポート3306で接続をリッスンしているかどうかを確認するためにnetstatまたはssコマンドを実行します。

netstat –tlpn | grep mysql

次に、MySQLコンソールにログインし、以下のコマンドを発行してMariaDBのrootアカウントを保護します。

mysql -h localhost
use 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_installation
NOTE: 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 current
password for the root user.  If you've just installed MariaDB, and
you 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 MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures 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 can
access.  This is also intended only for testing, and should be removed
before 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 far
will 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 MariaDB
installation should now be secure.
Thanks for using MariaDB!

MariaDBのセキュリティをテストするために、rootパスワードなしでコンソールからデータベースにログインしてみてください。rootアカウントにパスワードが提供されていない場合、データベースへのアクセスは拒否されるはずです。パスワードが提供されると、MySQLコンソールへのログインプロセスが許可されるはずです。以下のスクリーンショットのように。

mysql -h localhost -u root
mysql -h localhost -u root –p

MariaDBログインテスト

次に、MariaDBデータベースコンソールにログインし、最初にIcinga2アプリケーションで使用するデータベースと、このデータベースを管理するために使用されるユーザーを作成します。以下のコマンドを発行します。データベース名、ユーザー、パスワードは適宜置き換えてください。

mysql –u root -p
create database icingadb;  
grant all privileges on icingadb.* to 'icinga_user'@'localhost' identified by 'icinga_pass';  
flush privileges   
exit

Icingaデータベースユーザーを作成

次に、Icinga2ウェブインターフェースのユーザー、グループ、およびその他のウェブインターフェースのカスタムデータを保存するために使用される2番目のMySQLデータベースを作成します。以下のコマンドを発行します。上記のデータベースと同様に、データベース名と資格情報を適宜置き換え、データベースユーザーの強力なパスワードを選択してください。

mysql –u root –p
create database icinga_users;  
grant all privileges on icinga_users.* to 'icinga_user'@'localhost' identified by 'icinga_pass';  
flush privileges   
exit

2番目のIcingaデータベースを作成

これまでに行ったすべての変更を適用するために、MySQLとApacheデーモンを再起動し、以下のコマンドを発行してデーモンが実行中であることを確認します。

systemctl restart mysql apache2
systemctl status mysql apache2

Icinga 2のインストール

ウェブ監視アプリケーションをインストールするためのすべてのシステム要件が満たされた後、以下のコマンドを発行してMySQLモジュールとともにアプリケーションをインストールします。Icinga 2は、Debian 9リポジトリから提供される事前コンパイルされたバイナリパッケージを持っています。インストールはDebian 9のaptパッケージマネージャーを介して行われます。

apt install icinga2 icinga2-ido-mysql

Debian 9リポジトリからIcinga2の事前コンパイルされたバイナリをインストールする際に、アプリケーションを構成するための一連のプロンプトが画面に表示されます。最初のプロンプトでは、MySQLモジュールを使用するためにIcinga 2を構成して有効にするかどうかを尋ねられます。プロンプトから「はい」を選択し、[enter]キーを押して続行します。以下の画像のように。

MySQLでIcinga 2をインストール

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

dbconfig commonを使用

Icinga 2がインストールされた後、Icinga 2デーモンを起動し、以下のコマンドを実行してサービスの状態を確認します。

systemctl start icinga2.service
systemctl status icinga2.service

次のステップでは、以下のコマンドを使用してDebian 9からIcinga 2ウェブインターフェースおよびコマンドラインユーティリティパッケージをインストールします。

apt install icingaweb2 icingacli

Icinga 2をウェブから構成する前に、すべての変更を取得するためにIcinga 2デーモンを再起動し、以下のコマンドを発行してアプリケーションの状態を確認します。

systemctl restart icinga2.service
systemctl status icinga2.service

次に、Apacheウェブサーバーによってインストールされたデフォルトのindex.htmlファイルをウェブルートパスから削除し、以前に作成したinfo.phpファイルも削除します。

rm /var/www/html/index.html
rm /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.sql

Icinga 2のインストールをウェブから行うために、以下のコマンドを実行してインストールトークンを生成します。このトークンは後でウェブインターフェースで要求されたときに記入するので、必ずメモしておいてください。

icingacli setup token create

インストールトークンを生成

後でこのトークンが見つからない場合は、以下のコマンドを実行して生成されたトークンを表示できます。

icingacli setup token show

Icingaセットアップトークンを作成

次に、ブラウザを開いてサーバーのIPアドレスまたはドメイン名にHTTPプロトコルを介してアクセスし、Icinga2ウェブインターフェースのインストールプロセスを開始します。

http://your_domain.tld/icingaweb2/setup

最初のインストール画面では、インストールプロセスを開始するために、前に生成したトークンを記入するように求められます。以下のスクリーンショットのように、トークンを追加したら、次へボタンを押してインストールプロセスを続行します。

Icingaウェブインストーラー

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

DocおよびMonitoringモジュールを有効にする

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

Icinga 2の前提条件チェック

Icinga 2の前提条件チェックパート2

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

データベース認証を使用

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

Icinga 2データベース接続

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

データベース認証バックエンドの名前

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

管理者ユーザー名を選択

Icingaアプリケーションとロギング構成を以下の設定で構成し、完了したら次へボタンを押して続行します。

  • スタックトレースを表示するをチェック
  • ストレージタイプ = データベース
  • ロギングタイプ = ファイル
  • ロギングレベル = エラー
  • ファイルパス = /var/log/icingaweb2/icingaweb2.log

Icingaアプリケーションとロギング構成を設定

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

ウェブインターフェースが正常に構成されました

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

Icinga 2監視モジュールの構成

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

Icinga2バックエンドの名前

サーバーのコンソールに戻り、Icinga MySQL IDO構成ファイルを開いて編集し、Icingaデータベースの資格情報を追加します(最初のデータベース情報)。以下のサンプルのように。

nano /etc/icinga2/features-enabled/ido-mysql.conf

ido-mysql.confファイルの抜粋:

library "db_ido_mysql"  
   
object IdoMysqlConnection "ido-mysql" {  
  user = "icinga_user",  
  password = "icinga_pass",  
  host = "localhost",  
  database = "icingadb"  
}

ido-mysql.confファイル

ファイルを保存し、以下のコマンドを発行してIcinga2デーモンを再起動して設定を適用します。その後、Icingaウェブインターフェースに戻り、インストールプロセスを続行します。

systemctl restart icinga2.service

Icingaデータベース情報を追加してIDOリソース環境を設定します。最初に作成したデータベースの情報を使用します。以下の画像のように。データベース情報の編集が完了したら、Icinga監視IDOリソースを検証するために構成を検証するボタンを押し、次へボタンを押して次のインストール画面に進みます。

監視データベースを設定

Icingaコマンドトランスポートを以下の設定で構成し、次へボタンを押して続行します。

  • トランスポート名 = icinga2
  • トランスポートタイプ = ローカルコマンドファイル
  • コマンドファイル = /var/run/icinga2/cmd/icinga2.cmd

Icingaコマンドトランスポートを構成

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

監視セキュリティ

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

Icinga2監視モジュールが正常に構成されました

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

Icinga 2ログインページに移動

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

Icingaログイン

Icinga 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

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。