(作成:2013/04)
サービス停止に一早く気付けないのはインフラ屋さんとして失格よね。サーバは立てたら監視しませう。
監視にも色々あるけれど、こちらは主にリアルタイムな死活監視をするもの。
Install on CentOS
サクッと入れましょ。パッケージ便利ね。
# yum install --enablerepo=epel nagios nagios-plugins nagios-plugins-all
nagiosadminパスワードを変更。
# htpasswd /etc/nagios/passwd nagiosadmin
New password:
Re-type new password:
取り敢えずはこれだけで動く。デフォルトではローカルマシンに対するちょっとした監視設定がある。
後はまあ、ちょっと設定や動作確認を楽にするための環境作りみたいなことをしておく。
# mkdir /usr/local/nagios_check_scripts
# ln -sf /usr/lib64/nagios/plugins/ /etc/nagios/
Nagiostats + Nacti Template
どっちかってーとNagiosパフォーマンス改善のお供に。Nagios監視の統計情報を収集できるので、ここから設定上の問題点を探ると良い、らしい。
- Cacti・View topic - Nagios Statistics Templates
nacti.tar.gz
を取得して展開。READMEを読めばインストール方法は簡単。
# scp mrtgstats.cgi (Nagios監視サーバ):/usr/lib/nagios/cgi/
# scp check_nagios.pl (Cacti監視サーバ):/var/www/cacti/scripts/
(Nagios監視サーバ)# chmod 755 /usr/lib/nagios/cgi/mrtgstats.cgi
# chmod 755 /usr/bin/nagios*
nagiostats
の権限が無いためにCGIがうまく動作しない事もあるので注意。755ならまあ大体大丈夫。
http://(Nagios監視サーバ)/nagios/cgi-bin/mrtgstats.cgi?type=latency
へアクセスして動作確認する。
ブラウザアクセス
- Console
-Import/Export
-Import Templates
- Import Template from Local File
: (展開した全XMLファイル)
するとDevices定義時に Graph Template
の項目として以下が利用可能になる。
- Nagios Statistics - Check Statistics
- Nagios Statistics - Host Checks
- Nagios Statistics - Host Problems
- Nagios Statistics - Latency
- Nagios Statistics - Service Checks
- Nagios Statistics - Service Problems
この結果を見ながらNagiosのパフォーマンスを最適化すると良いみたい。
- Nagiosのパフォーマンスを最適化する - Nagios 3翻訳プロジェクト Wiki
監視サービスの追加
サーバリソース監視
サーバを監視するうえで最低限必要な監視スクリプトを列挙。やり方は色々だけれど、SNMPで何でも見れるようにするのが便利じゃないかな。個人的にはNagios pluginsがお勧め。このうち以下のスクリプトを貰ってくる。
- Nagios plugins
- check_snmp_load.pl
- check_snmp_mem.pl
- check_snmp_process.pl
- check_snmp_storage.pl
- check_snmp_win.pl
これを使うには perl-Net-SNMP
パッケージが必要なのでインストール。
# yum install --enablerepo=epel perl-Net-SNMP
あとCentOS 6 x86_64などではPerlライブラリが何故か32bit版ディレクトリしか見に行かないので、以下のような感じでリンク貼っておく。これ何だかなぁ……。
# ln -sf /usr/lib64/nagios /usr/lib/
コマンドとしてはこんな感じ。以下はLinuxサーバに対して。
# plugins/check_snmp_load.pl -H 192.168.0.1 -C private -w 80% -c 95%
1 CPU, load 12.0% < 95% : OK
# plugins/check_snmp_mem.pl -H 192.168.0.1 -C private -w 80,70 -c 95,80
Ram : 34%, Swap : 2% : ; OK
# plugins/check_snmp_process.pl -H 192.168.0.1 -C private -n syslogd -n crond -w 0 -c 0 -t 60
1 process matching crond (> 0)
# plugins/check_snmp_storage.pl -H 192.168.0.1 -C private -m / -r -w 80% -c 95%
/: 22%used(3028MB/13780MB) (<80%) : OK
以下はWindowsサーバに対して。
# plugins/check_snmp_load.pl -H 192.168.0.2 -C private -w 80% -c 95%
1 CPU, load 0.0% < 80% : OK
# plugins/check_snmp_storage.pl -H 192.168.0.2 -C private -m "C:" -w 80% -c 95%
C:\ Label: Serial Number XXXXXXXX: 56%used(11375MB/20481MB) (<85%) : OK
# plugins/check_snmp_storage.pl -H 192.168.0.2 -C private -m "Physical Memory" -w 80% -c 95%
Physical Memory: 72%used(737MB/1023MB) (<80%) : OK
# /usr/lib/nagios/plugins/check_snmp_win.pl -H 192.168.0.2 -C private -n "DNS Server,DHCP Server"
2 services active (matching "DNS Server,DHCP Server") : OK
んで、これをNagiosに設定する。
#### /etc/nagios/objects/commands.cfg
...
define command{
command_name check_snmp_storage_win
command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C private -m $ARG1$ -w $ARG2$ -c $ARG3$
}
define command{
command_name check_snmp_storage
command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C private -m $ARG1$ -r -w $ARG2$ -c $ARG3$
}
define command{
command_name check_snmp_load
command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C private -w $ARG1$ -c $ARG2$
}
define command{
command_name check_snmp_mem
command_line $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -C private -w $ARG1$ -c $ARG2$
}
define command{
command_name check_snmp_process
command_line $USER1$/check_snmp_process.pl -H $HOSTADDRESS$ -C private -n $ARG1$ -w 0 -c 0 -t 60
}
define command{
command_name check_snmpv2_process
command_line $USER1$/check_snmp_process.pl -H $HOSTADDRESS$ -C private -2 -n $ARG1$ -w 0 -c 0 -t 60
}
define command{
command_name check_snmp_win
command_line $USER1$/check_snmp_win.pl -H $HOSTADDRESS$ -C private -n $ARG1$
}
#### /etc/nagios/objects/servers.cfg
...
define service{
use generic-service
host_name dc-arak-hp-svr
service_description DISK_USAGE_/
check_command check_snmp_storage!/!85%!95%
}
...
# /etc/init.d/nagios restart
VMware ESXi監視
check_esxi_hardware.py
を使うと良い感じに取得できる。これを使うには pywbem
パッケージが必要なのでインストール。
- Nagios Exchange - check_esxi_hardware.py
# yum install pywbem
コマンドとしてはこんな感じで実行する。以下はDELLサーバに対して実施した結果。あらかじめESXi上で check
というアカウントを作成しておく必要がある。
# /etc/nagios/plugins/check_esxi_hardware.py -H 192.168.0.1 -U check -P (パスワード) -V dell
OK - Server: Dell Inc. PowerEdge RXXX s/n: ******* System BIOS: 2.X.XX 20XX-XX-XX
何か問題があれば、これがWARNINGになったりCRITICALになったりする。
んで、これをNagiosに設定する。
#### /etc/nagios/objects/commands.cfg
...
define command{
command_name check_esxi_hardware
command_line $USER1$/check_esxi_hardware.py -H $HOSTADDRESS$ -U $ARG1$ -P $ARG2$ -V $ARG3$ $ARG4$
}
#### /etc/nagios/objects/servers.cfg
...
define service {
use generic-service
host_name server
service_description CHECK_ESXI
check_command check_esxi_hardware!check!(パスワード)!dell
}
# /etc/init.d/nagios restart