前書き
このチュートリアルでは、Ubuntu 14.04でのオープンソース監視システムであるIcingaのインストールについて説明します。 基本的な設定について説明しますので、Webインターフェースを介してネットワークサービスとホストリソースを監視できます。 また、リモートシステムにエージェントとしてインストールされるNagios Remote Plugin Executor(NRPE)を使用して、ローカルリソース(ディスク使用量、ログインユーザー数など)を監視します。
Icingaは、ホストとサービスをチェックし、それらのステータスを通知する一般的なオープンソース監視システムです。 IcingaはNagiosのフォークであるため、互換性があり、多くの類似点を共有しています。Nagiosと比較すると、開発サイクルがより俊敏であるため人気が高まっています。
前提条件
このチュートリアルを完了するには、Ubuntu 14.04 VPSへのルートアクセスが必要です。 それを設定する手順はここにあります(ステップ3と4):Initial Server Setup with Ubuntu 14.04。
また、メール通知機能をセットアップする場合は、Postfixを適切に構成する必要があります。 そのための手順は、How To Install and Setup Postfix on Ubuntu 14.04にあります。 PostfixはIcingaパッケージと一緒にインストールされますが、Icingaのセットアップ後に構成できます。
Icingaをインストールする
パッケージを使用してIcingaをインストールします。 また、MySQLをDBMSとして使用します。PostgreSQL、SQLite、およびOracleは、サポートされている他のオプションです。
次のコマンドを実行して、Icinga PPAをパッケージマネージャーに追加します。
sudo add-apt-repository ppa:formorer/icinga
次に、aptパッケージデータベースを更新します。
sudo apt update
次に、aptを使用してIcingaとMySQLをインストールします。
sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client
これで、Icingaのインストールに関する一連のプロンプトが表示されます。 プロンプトのリストと、それらに答える方法は次のとおりです。
-
MySQL構成:新しいMySQLルートユーザーパスワードを入力します
-
PostFix構成:「インターネットサイト」を選択します
-
PostFix構成:完全修飾ドメイン名(example.comなど)を入力します
-
icinga-cgiの構成:「icingaadmin」ユーザーのパスワードを入力します(Icingaにアクセスするためのログイン)。
-
icinga-commonの構成:「いいえ」を入力して外部コマンドを有効にします
-
icinga-idoutilsの構成:dbconfig-commonを使用してicinga-idoutilsのデータベースを構成するには、「はい」と入力します
-
icinga-idoutilsの構成:データベースタイプとして「mysql」を選択します
-
icinga-idoutilsの構成:MySQLルートパスワード(上記で割り当てたもの)を入力します
-
icinga-idoutilsの構成:新しいicinga-idoutilsデータベースユーザーパスワードを入力します
Icingaがインストールされましたが、開始する前にいくつかの設定を行う必要があります。 Apache HTTPサーバーとPostfixはそのプロセスの一部としてインストールされていることに注意してください。
Apacheユーザー(www-data)をnagiosグループに追加します。
sudo usermod -a -G nagios www-data
起動時にido2dbデーモンを有効にして、データベースにIcingaイベントと構成を保存します。 Icingaのデフォルト構成を編集します。
sudo vi /etc/default/icinga
IDO2DB
の値をyesに変更して、次のようにします。
IDO2DB=yes
保存して終了します。 次に、ido2db
サービスを開始します。
sudo service ido2db start
サンプルのidoutils.cfgファイルをIcingaのアクティブな構成にコピーして、idomodモジュールを有効にします。
sudo cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg
これでIcingaが構成され、開始する準備ができました。
sudo service icinga restart
Icingaユーザーインターフェースを試してみましょう。
Icingaユーザーインターフェイスへのアクセス
http://yourhost/icingaに移動し、Icingaのインストール中に設定したicingaadminログインを使用してログインします。
Icingaが1つのホスト、localhost(Icingaサーバー)、および次のような7つのサービスを監視していることがわかります。
上の行は、単一の監視対象ホストが「稼働中」であることを示し、下の行は、7つの「OK」監視対象サービスがあることを示しています。
localhostのステータスが「ダウン」の場合、pingコマンドのアクセス許可を変更する必要がある場合があります。 次のコマンドを実行して、nagiosユーザーがpingコマンドを使用できるようにします。
sudo chmod u+s `which ping`
監視するホストとサービスをさらに追加しましょう!
Icingaで監視する方法
Icingaでホストとサービスを監視するには、主に2つの方法があります。
-
「公開されているサービス」の監視
-
データを収集してIcingaに送信するために、リモートホストにインストールされているエージェントを介した監視
最初の方法では、公開されているサービスとは、ローカルネットワークまたはインターネット経由でアクセス可能なサービスを指します。 一般的な例には、HTTP、メール、SSH、およびICMP pingが含まれます。 この方法は、エージェントをインストールできない(またはインストールしたくない)システムを監視したり、ネットワークインターフェイスに面したユーザーを監視したりする場合に便利です。
2番目の方法を実装するには、NRPEをエージェントとしてリモートホストにインストールして、ローカルリソースを監視します。 これにより、Icingaは、ディスク使用量、実行中のプロセス、最初の方法では達成できないその他のシステム統計などを監視できます。
方法1:公的に利用可能なサービスの監視
最初の方法はリスニングサービスを監視するだけなので、この方法の設定はすべてIcingaサーバーで行われます。 このメソッドではいくつかのことを監視できるため、Webサーバーのパブリックインターフェイスを監視する方法を示します。
次のコマンドを使用して、ホストの名前でファイルを作成します(yourhost
を独自のホスト名に置き換えます)。
sudo vi /etc/icinga/objects/yourhost.cfg
次に、host_name
の値を独自のホスト名(両方の場所)に置き換え、alias
をホストの説明に置き換え、address
をホストのパブリックIPの値に置き換えて以下を追加します。住所:
define host {
use generic-host
host_name web-1
alias A Web Server
address 107.170.xxx.xxx
}
define service {
use generic-service
host_name web-1
service_description HTTP
check_command check_http
}
保存して終了します。 Icinga構成を再ロードして、変更を有効にします。
sudo service icinga reload
方法2:エージェントを介した監視
前述のように、エージェントとしてNRPEを使用して、Icingaのリモートホストデータを収集します。 つまり、この方法で監視されるすべてのホストにNRPEをインストールする必要があり、各ホストのデータを受信するようにIcingaサーバーも構成する必要があります。
NRPEのインストールについて見ていきましょう。
リモートホストへのNRPEのインストール
監視するホストで、aptを更新します。
sudo apt update
次に、NRPEとNagiosプラグインをインストールします。
sudo apt install nagios-plugins nagios-nrpe-server
ルートファイルシステムの名前を検索します(監視したい項目の1つであるため)。
df -h /
NRPE構成のファイルシステム名を使用して、ディスク使用量を監視します(おそらく/dev/vda
です)。 次に、nrpe.cfgを開いて編集します。
sudo vi /etc/nagios/nrpe.cfg
NRPE構成ファイルは非常に長く、コメントでいっぱいです。 検索して変更する必要がある行がいくつかあります。
-
server_address:このホストのプライベートIPアドレスに設定します
-
allowed_hosts:IcingaサーバーのプライベートIPアドレスに設定します
-
command[check_hda1]:
/dev/hda1
をルートファイルシステムと呼ばれるものに変更します
前述の3行は次のようになります(適切な値に置き換えてください)。
server_address=client_private_IP
allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda
このファイルには、Icingaサーバーがそれらを使用するように構成されている場合に実行される他のいくつかの「コマンド」が定義されていることに注意してください。 また、server_port=5666
が設定されているため、NRPEはポート5666でリッスンすることに注意してください。 そのポートをブロックしているファイアウォールがある場合は、必ずIcingaサーバーに対して開いてください。
保存して終了します。 次に、NRPEを再起動して、変更を有効にします。
sudo service nagios-nrpe-server restart
監視するホストでNRPEのインストールと構成が完了したら、これらのホストを監視を開始する前にIcingaサーバー構成に追加する必要があります。
Icingaサーバー構成へのリモートホストの追加
Icingaサーバーで、監視するリモートホストごとに/etc/icinga/objects
で新しい構成ファイルを作成します。 yourhostをホストの名前に置き換えます。
sudo vi /etc/icinga/objects/yourhost.cfg
次のホスト定義を追加し、host_name
値をリモートホスト名(この例では「wordpress-1」を使用)に置き換え、alias
値をホストの説明に置き換え、address
リモートホストのプライベートIPアドレスを使用した値:
define host {
use generic-host
host_name wordpress-1
alias My first wordpress server
address 10.128.xxx.xxx
}
次に、監視するサービスにこれらのサービスブロックを追加します。 check_command
の値は、ステータスのしきい値を含め、監視対象を決定することに注意してください。 ホストの構成ファイルに追加できる例をいくつか示します。
ping:
define service {
use generic-service
host_name wordpress-1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
SSH(notifications_enabledを0に設定すると、サービスの通知が無効になります):
define service {
use generic-service
host_name wordpress-1
service_description SSH
check_command check_ssh
notifications_enabled 0
}
負荷:
define service {
use generic-service
host_name wordpress-1
service_description Current Load
check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0
}
現在のユーザー:
define service {
use generic-service
host_name wordpress-1
service_description Current Users
check_command check_users!20!50
}
ディスクスペース:
define service {
use generic-service
host_name wordpress-1
service_description Disk Space
check_command check_all_disks!20%!10%
}
use generic-service
の意味がわからない場合は、デフォルトで定義されている「generic-service」と呼ばれるサービステンプレートの値を継承しているだけです。
保存して終了します。 Icinga構成を再ロードして、変更を有効にします。
sudo service icinga reload
すべてのリモートホストを監視するためのIcingaの設定が完了したら、ユーザーインターフェースを確認しましょう。
ユーザーインターフェイスの例
いずれかの監視方法を使用していくつかのホストで監視を設定した後、Icingaユーザーインターフェイス(http://youricingaserver.com/icinga、acingaadminログイン)に移動し、[サービスの詳細]リンクをクリックします。 監視を設定したすべてのサービスのリストが表示されます。
例として、上記の構成ファイルを使用して監視されている2つのホストを次に示します。 web-1 HTTPサービスは通常のHTTPポートを介して監視されており、WebサーバーがOKステータスで応答していることを示し、wordpress-1は監視対象サービスがすべてOKであることを示しています。 s。
Icingaには多くの機能があるため、ホストやサービスについて発見できることを確認するために、インターフェースを自由に閲覧してください。
結論
ホストとそのサービスの一部を監視しているので、どのサービスが自分にとって重要であるかを把握するために時間をかけることができます。そうすれば、それらの監視を開始できます。 また、ディスク使用率が警告またはクリティカルのしきい値に達したとき、またはメインWebサイトがダウンしたときに電子メールを受信するように通知を設定することもできます。これにより、状況を迅速に、または問題が発生する前に解決できます。
がんばろう!