震災の影響を受けてか、いわゆるシステム開発の場においても「死活監視」を必要とする要望が増えている。ただ、ここで言っているのは、ジョージ・オーウェル「1984年」のBigBrotherもどきの「他人を監視します」のノリのものでなく「自分がやばけりゃ報告します」のこと。ということで、SNMPTrapに関する備忘。
Linuxなどでnet-snmpを使用する場合、SNMPTrapをあげる方法はsnmptrapコマンドを打つか、snmpdデーモンに送らせるかの二通りがあるようだ。前者のsnmptrapを使ったやり方の情報はWebにも多いが、後者のsnmpd発の方法は以外と少ない。かろうじて見つけた方法も課題があった。以下に述べる。
/usr/share/snmp/snmpd.conf
確かに上の設定でsnmpdからSNMPTrapがあがるが、その内容はprErrorFlagのOID(1.3.6.1.4.1.2021.2.1.100.インデックス番号)のみであった。今回やりたかったことは、prErroFlagでなく、エラーが発生したプロセス名(prNames)、エラーメッセージ(prErrMessage)のOIDとさらにその内容もSNMPTrapであげたかった。そのためにはmonitorの行を以下のように設定すればよい。
/usr/share/snmp/snmpd.conf(変更後)
要は-oの後にOIDを指定すれば、その値もTrapに含めて返すようだ。これは結構ハマった。
http://www.net-snmp.org/docs/man/snmpd.examples.html
Linuxなどでnet-snmpを使用する場合、SNMPTrapをあげる方法はsnmptrapコマンドを打つか、snmpdデーモンに送らせるかの二通りがあるようだ。前者のsnmptrapを使ったやり方の情報はWebにも多いが、後者のsnmpd発の方法は以外と少ない。かろうじて見つけた方法も課題があった。以下に述べる。
/usr/share/snmp/snmpd.conf
:
trapcommunity localcom
trapcommunity securecom
trap2sink localhost localcom
trap2sink 192.168.1.5 securecom
createUser _internal MD5 "the first sign of madness"
iquerySecName _internal
rouser _internal
monitor -u _internal -r 30 "procTable" prErrorFlag != 0
確かに上の設定でsnmpdからSNMPTrapがあがるが、その内容はprErrorFlagのOID(1.3.6.1.4.1.2021.2.1.100.インデックス番号)のみであった。今回やりたかったことは、prErroFlagでなく、エラーが発生したプロセス名(prNames)、エラーメッセージ(prErrMessage)のOIDとさらにその内容もSNMPTrapであげたかった。そのためにはmonitorの行を以下のように設定すればよい。
/usr/share/snmp/snmpd.conf(変更後)
:
trapcommunity localcom
trapcommunity securecom
trap2sink localhost localcom
trap2sink 192.168.1.5 securecom
createUser _internal MD5 "the first sign of madness"
iquerySecName _internal
rouser _internal
monitor -u _internal -r 30 -o prNames -o prErrMessage "procTable" prErrorFlag != 0
要は-oの後にOIDを指定すれば、その値もTrapに含めて返すようだ。これは結構ハマった。
http://www.net-snmp.org/docs/man/snmpd.examples.html
コメント