Deletions are marked like this. | Additions are marked like this. |
Line 145: | Line 145: |
=== ホスト名称の設定 === localhost.cfgのdefine hostの設定の中の、少なくともaliasを変更しておく。これは空白が含まれた名称でもよい。 異常時のメールには、この名称が記述されるため、デフォルトのままであると(複数ホストをそれぞれのnagiosで監視している場合は)区別がつかなくなってしまう。 できれば、host_nameも変更すべきだが、この場合は、その後のdefine hostgroupのmembersやdefine serviceのhost_nameもそれに合わせなければいけない。 |
|
Line 147: | Line 154: |
それぞれのdefine service内のcheck_commandで監視コマンドの呼び出しを定義するわけだが、引数は!区切りになっている。 例えば、check_pingの場合、 {{{ define service{ use local-service ; Name of service template to use host_name local service_description PING check_command check_ping!100.0,20%!500.0,60% } }}} となっている。このcheck_pingコマンドの実体は、commands.cfgの中に定義されている。 {{{ define command{ command_name check_ping command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5 } }}} つまり、!で区切られた引数が$ARG1$等として展開され、実際のコマンドを呼び出す。 これは、yum install nagios-plugins-pingでインストールされたコマンドだが、これは /usr/lib64/nagios/plugins/check_pingとしてインストールされている。 |
nagios
概要
http://www.atmarkit.co.jp/flinux/prodreview/tool_nagios/nagios01.html
http://www.atmarkit.co.jp/flinux/prodreview/tool_nagios/nagios02.html
要するに、以下ということ?
- nagiosデーモンがシステムを監視する(監視対象としてはプラグインで広げることができる)。
- 何か異常があれば、管理者にメールで通知。
- 現在の状況はnagiosのウェブサービスにて確認できる。
インストール
CentOS 6.2にrpmでインストール。
- epelレポジトリを追加。
- yum install nagiosでインストール
構築済の環境にもよると思うが、nagios, nagios-common, gdがインストールされる。
プラグインの種類は以下で確認
yum list | grep nagios
※上記でインストールしたnagiosのデフォルトの設定ファイルには、プラグインのインストールを前提としたものがあるらしい。 したがって、この状態でnagiosを動作させると、監視対象が「CRITICAL」「(Return code of 127 is out of bounds - plugin may be missing) 」というステータスになる。
設定
/etc/nagios
nagiosの各種設定ファイルがある。
nagios.cfg
nagios.cfgが設定ファイルの総元締めとなっている。このファイルで、以下のような記述を行って他の設定ファイルをインクルードしている。
# You can specify individual object config files as shown below: cfg_file=/etc/nagios/objects/commands.cfg cfg_file=/etc/nagios/objects/contacts.cfg cfg_file=/etc/nagios/objects/timeperiods.cfg cfg_file=/etc/nagios/objects/templates.cfg # Definitions for monitoring the local (Linux) host cfg_file=/etc/nagios/objects/localhost.cfg # Definitions for monitoring a Windows machine #cfg_file=/etc/nagios/objects/windows.cfg
この例の最後の行は#でコメントアウトされているが、つまりobjectsにあらかじめ用意されているファイルであっても、使用されていないものがあることに注意。
管理者メールアドレス
/etc/nagios/objects/contact.cfgに、管理者メールアドレスを記述する(デフォルトはnagios@localhostになっている)。
ウェブアプリの認証
後述するように/usr/share/nagios/htmlにnagiosのウェブアプリがある。
これは(デフォルトでは?)BASIC認証で、パスワードファイルは/etc/nagios/passwdになっており、nagiosadmin/nagiosadminであるので、パスワードを変更しておく。
cd /etc/nagios rm passwd htpasswd -c passwd nagiosadmin New password: Re-type new password:
ローカルホストの監視設定
ここではローカルホストのみを監視することにする。これは「/etc/nagios/objects/localhost.cfg」に設定することになるが、後述する。
/usr/share/nagios/html
nagiosの管理画面ウェブサイトは/usr/share/nagios/htmlに格納されている。 インストール時に、/etc/httpd/conf.d/nagios.confが既に作成されているので、気に入らない場合は削除するか、名前を変更する。
ともあれ、これを表示できるようにhttpdを設定する。 先述したように、BASIC認証ファイルの/etc/nagios/passwdを変更すること。
設定ファイルのチェックと起動
nagios -v /etc/nagios/nagios.cfg
で設定ファイルをチェックする。
chkconfig nagios on service nagios start
で起動する。
この状態でnagiosの管理者画面を見ると、Hostsメニューにはlocalhostのみが登録されており、StatusがDOWNになっている。 また、管理者側にAlertがメールされる。
これは、nagiosのデフォルト設定が各種プラグインのインストールを前提としているにも関わらず、プラグインがインストールされていないため。
ローカルホストの監視設定
「/etc/nagios/objects/localhost.cfg」を見ると「define service」が8つ定義されている。一方nagiosの管理画面のServicesを見ると、localhostについて、これらのサービスのStatusがCRITICAL(Return code of 127 is out of bounds - plugin may be missing)になっていることがわかる。
つまり、localhostについてこれらのサービスを監視する設定になっているにも関わらず、監視用のプラグインがインストールされていない。
不要なサービスを除去するか、あるいは監視用のプラグインをインストールし、nagiosを再起動する必要がある。
サービスの無効化
localhost.cfgに記述したまま管理画面からdisabledにする方法もあるようだが、ここではlocalhost.cfgから除去することにする。
とりあえず、PING,Curernt Load,HTTP以外はコメントアウトし、プラグインをインストールする。
※PINGはいらないと思うが、これが無いとHostがDOWN状態のままで表示される。調べるのも面倒なので入れておく。
yum install nagios-plugins-load nagios-plugins-http nagios-plugins-ping
設定をチェックして再起動
nagios -v /etc/nagios/nagios/cfg service nagios restart
管理画面を見てみると、すぐにはOKにはならない。しばらく待つ必要がある。
check_local_loadの設定
localhost.cfgの「Current Load」の設定を見ると「check_local_load!5.0,4.0.3.0!10.0,6.0,4.0」という値になっているが、これでは大きすぎるので、値を小さくする。
ホスト名称の設定
localhost.cfgのdefine hostの設定の中の、少なくともaliasを変更しておく。これは空白が含まれた名称でもよい。 異常時のメールには、この名称が記述されるため、デフォルトのままであると(複数ホストをそれぞれのnagiosで監視している場合は)区別がつかなくなってしまう。
できれば、host_nameも変更すべきだが、この場合は、その後のdefine hostgroupのmembersやdefine serviceのhost_nameもそれに合わせなければいけない。
コマンドとその呼び出し方
それぞれのdefine service内のcheck_commandで監視コマンドの呼び出しを定義するわけだが、引数は!区切りになっている。 例えば、check_pingの場合、
define service{ use local-service ; Name of service template to use host_name local service_description PING check_command check_ping!100.0,20%!500.0,60% }
となっている。このcheck_pingコマンドの実体は、commands.cfgの中に定義されている。
define command{ command_name check_ping command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5 }
つまり、!で区切られた引数が$ARG1$等として展開され、実際のコマンドを呼び出す。
これは、yum install nagios-plugins-pingでインストールされたコマンドだが、これは /usr/lib64/nagios/plugins/check_pingとしてインストールされている。