前回、Nagiosをインストールして動かすところまでたどり着いた。今回はNagiosの様々なプラグインを使用して、外部のサーバのサービスを監視する設定をする。変更をするファイルは/etc/nagios/localhost.cfgと/etc/nagios/commands.cfgのみ。
まず、サーバwww1のHTTPサービスを監視する設定をしよう。
[root@manager1 ~]# vi /etc/nagios/localhost.cfg
...
define host{
use linux-server
host_name www1
address 192.168.2.4
check_command check-host-alive
contact_groups admins
}
...
define service{
use generic-service
host_name www1
service_description HTTP
check_command check_http
}
...
hostの設定では、use linux-serverと書いてあるので、先に設定してあるテンプレートlinux-serverから設定値を受け継ぐ。check-host-aliveはサーバが障害になったときに確認用に実行されるコマンド。contact_groupsは障害時にメールで通知するあて先を示す。
serviceの設定でもuse generic-serviceと書いてあるので、先に設定してあるテンプレートgeneric-serviceから設定値を受け継ぐ。host_nameはこのサービスを監視するホストで、カンマ区切りで複数列挙することが出来る。service_descriptionは任意の名前で、Webの表示に使われる。check_commandで指定しているcheck_httpの設定は/etc/nagios/commands.cfgに以下のように定義してある。
[root@manager1 ~]# cat /etc/nagios/commands.cfg
...
define command{
command_name check_http
command_line $USER1$/check_http -H $HOSTADDRESS$
}
...
ここで$USER1$は/etc/nagios/resources.cfg内で$USER1$=/usr/lib64/nagios/pluginsと定義されているので、つまりは/usr/lib64/nagios/plugins/check_httpというスクリプトを呼び出す設定ということになる。
次に、DNSサーバの監視をする。ホストの定義は先ほどと同様なので省略。
define service{
use generic-service
host_name ns1
service_description DNS
check_command check_dns
}
先ほどと違うのはcheck_commandで、check_dnsというコマンドを使っている。check_dnsも/etc/nagios/commands.cfgで以下のように定義されている。
define command{
command_name check_dns
command_line $USER1$/check_dns -H www.yahoo.com -s $HOSTADDRESS$
}
なんとyahooを名前解決している。ここの部分は自由に書き換えてもよい。
次に、特にサービスを立ち上げていないホストに対して、sshでアクセスできることを監視しよう。
define service{
use generic-service
host_name client1
service_description SSH
check_command check_ssh
}
check_sshというスクリプトは用意されているのだが、コマンドとして定義されていない。よって/etc/nagios/commands.cfgに以下を追加する。
define command{
command_name check_ssh
command_line $USER1$/check_ssh -H $HOSTADDRESS$
}
sshも立ち上がっていないホストに対しては、pingで監視するしかない。
define service{
use generic-service
host_name router1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
check_pingの後の100.0,20%はOKであるためのラウンドトリップタイム(ms)と失敗率の上限、500.0と60%はWARNINGの上限。それ以上はCRITICALとなる。
check_pingコマンドは/etc/nagios/commands.cfgに以下のように定義されている。
define command{
command_name check_ping
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}
Nagiosにはこれ以外にも多数のサービスに対応したスクリプトがあるが、シンプルにTCPの3ウェイハンドシェイクをチェックするコマンドもある。
define service{
use generic-service
host_name proxy1
service_description PROXY
check_command check_tcp!3128
}
check_tcpの引数に与えた3128はTCPのポート番号で、squidのサービスが上がってるかどうかを監視する。
check_tcpのコマンド定義は以下のとおり。
define command{
command_name check_tcp
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$
}
設定を変更したらservice nagios reloadを忘れずに。
