Nagiosのpassive checkとrsyslogとSNMPTrapを組み合わせてみた

前回までに、rsyslogとNagsioを組み合わせる方法について書いていたのだが、合わせてSNMPTrapを受け付ける方法についても書いておく。

SNMPTrapでは通常のSNMP要求とは異なり、SNMPマネージャーからGETなどの要求を受けて、値を返すのではなく、事象が起こったノードから直接SNMPトラップの管理ノードに要求を送ることになる。

この際、トラップを受け取った管理ノードが、rsyslog経由でログを出してくれれば、後は自動的にNagiosのpassive checkでコンソールに表示できることになる。(WARN, CRITICALなどの設定は別途必要)

Linuxで使えるSNMPTrap デーモンとしては、snmpdtrapd があるが、このデーモンはデフォルトの設定では受け取った内容を直接syslogに書き出すらしいので、この目的で使うことが出来そうだ。
例によって、Ubuntu 8.04 で試してみたのだが、パッケージ snmpd 内の /etc/snmpdtrapd.conf を、下記のような感じに設定した後、

disableAuthorization yes

実際にSNMPトラップを送ってみると、

$ snmptrap -v1 -c private localhost 0 localhost 6 1 '' 0 s "snmp alert test"

/var/log/syslog に次の内容が表示され、実際にトラップが飛んでいることが分かった。

info,daemon,Oct  3 11:48:45,localhost,snmptrapd[16437]:, 2009-10-03 11:48:45 localhost [127.0.0.1] (via UDP: 
[127.0.0.1]:49107) TRAP, SNMP v1, community private#012#011SNMPv2-SMI::zeroDotZero Enterprise 
Specific Trap (1) Uptime: 15:16:24.37#012#011SNMPv2-SMI::zeroDotZero = STRING: "snmp alert test"

基本的にはrsyslog 等のsyslogデーモンが使えるノードからはそれでアラートを送ればよいため、SNMPTrapを使う機会はあまりないのだが、Unxi以外の環境だとsyslogがあまりつかえないので、SNMPTrapを使ってアラートを上げることも必要になりそうだ。。