NagiosのマイナーっぽいSNMPプラグイン群を紹介してみる

NagiosSNMPを利用した監視を行う場合、check_snmpコマンドであれこれ書いていくのも一つの方法ですが、MIBのオブジェクトIDとか覚えるのは不可能なので記述はコピペに頼ることになります。

CPU使用率だったら

check_snmp!public!.1.3.6.1.4.1.2021.11.9.0,.1.3.6.1.4.1.2021.11.10.0,.1.3.6.1.4.1.2021.11.11.0!'CPU     usage (user system idle)'!'%,%,%'

とか。後から見て何やってるのか分かりづらい。それってあまり嬉しくないよなということで、用途別に書かれたプラグインを使ってます。

何年か前から使ってるんだけど、ブクマとかほとんど付いてなくて知名度が低いのか需要が無いのか分からないからエントリで紹介してみるメソッド。

上記ページにはいくつかのプラグインがあるんだけど、その中で僕が日常的に使っているのはcheck_snmp_storage, check_snmp_load, check_snmp_memの3つ。今はNRPEも必ず各サーバに入れるようにしてるので、そっちで取ってもいいんだけど、慣習的に使ってます。

なお、OSはCentOS5.4 x86_64でnagios本体はEPELからyumで入れて2.12を使用しています。

■check_snmp_load

ロードアベレージSNMP経由で取るプラグイン

PerlのNet::SNMPが必要なのでCPANから入れてもいいし、CentOSFedoraならEPELからperl-Net-SNMPyumで入れてもOK。

cd /usr/lib64/nagios/plugins
sudo wget http://nagios.manubulon.com/check_snmp_load.pl
sudo chmod +x check_snmp_load.pl

みたいに入れて、nagiosの設定ファイルに以下のように書く。

# 'check_snmp_load' command definition
define command{
    command_name    check_snmp_load
    command_line    $USER1$/check_snmp_load -H $HOSTADDRESS$ -C public -T netsl -w $ARG1$ -c $ARG2$
}

define service{
    use                             local-service
    hostgroup_name                  all
    service_description             load
    check_command                   check_snmp_load!3,3,3!5,5,5
}

■check_snmp_storage

ディスク容量監視のプラグインです。EPELからnagiosを入れた場合は、nagios-plugins-perlも必要。

サイトで配布されている物をそのまま使うと、use libで指定しているディレクトリが違ったりするのでsedで書き換えます。

sudo yum install nagios-plugins-perl
cd /usr/lib64/nagios/plugins
sudo wget http://nagios.manubulon.com/check_snmp_storage.pl
sudo sed -i "s|usr/local/nagios/libexec|usr/lib64/nagios/plugins|" check_snmp_storage.pl
sudo chmod +x check_snmp_storage.pl

nagiosの設定はこんな感じ。監視対象をマウントポイントに対する正規表現で指定出来るのはいい感じ。

# 'check_snmp_storage' command definition
define command{
    command_name    check_snmp_storage
    command_line    $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C public -m $ARG1$ -w $ARG2$ -c $ARG3$
}

define service{
    use                             local-service
    hostgroup_name                  all
    service_description             hdd
    check_command                   check_snmp_storage!/ -r!80!90
}

以下のような記述でSWAP監視も出来るけど、SWAPの監視は次のcheck_snmp_memでやってます。

define service{
    use                             local-service
    hostgroup_name                  all
    service_description             swap
    check_command                   check_snmp_storage!Swap!1!1
}

■check_snmp_mem

メモリ使用量とSWAPをまとめて監視できるプラグインで、これもnagios-plugins-perlperl-Net-SNMPが必要。そしてuse libのディレクトリが古い仕様なので置換して入れる。

cd /usr/lib64/nagios/plugins
sudo wget http://nagios.manubulon.com/check_snmp_mem.pl
sudo sed -i "s|usr/local/nagios/libexec|usr/lib64/nagios/plugins|" check_snmp_mem.pl
sudo chmod +x check_snmp_mem.pl
# 'check_snmp_mem' command definition
define command{
    command_name    check_snmp_mem
    command_line    $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$
}

define service{
    use                             local-service
    hostgroup_name                  all
    service_description             memory_swap
    check_command                   check_snmp_mem!public!70,1!80,2
}