「 rsyslog から snmptrap を飛ばせるようにしてみた 」の続き

以前書いて書きっぱなしだった、rsyslog 使った snmptrap を飛ばす件ですが、やっと特定条件て trap を飛ばすのを試してみたので、メモ。

実運用時としては、特定メッセージだけtrapとして飛ばす設定にしなくちゃいけないわけですが、その辺はまた今度。

[From rsyslog から snmptrap を飛ばせるようにしてみた - Soukaku's HENA-CHOKO Blog]

単純な話、rsyslogのコンフィグで条件式を書くだけなんですがね。
簡単な例として

nexus01:~# more /etc/rsyslog.d/snmptrap.conf
$ModLoad omsnmp

$actionsnmptransport udp
$actionsnmptarget localhost
$actionsnmptargetport 162
$actionsnmpversion 2
$actionsnmpcommunity Gaia-Network

if $fromhost-ip == '172.16.0.1' then :omsnmp:

というのを準備して、rsyslogを再起動すればOK。
この例では、172.16.0.1 というホストから送られてきたsyslogメッセージを、そのまま snmptrap として転送するだけのもの。当然条件を細かく書くことも出来る。


実際に、rsyslogがsyslogメッセージとして受け取った

Apr  3 23:25:01 sweethome CRON[11822]: pam_unix(cron:session): session closed for user root

↑のメッセージが、snmptrap として↓

Apr  3 23:25:01 nexus01 snmptrapd[7578]: 2013-04-03 23:25:01 nexus01.downtown.jp [UDP: [127.0.0.1]:39816->[127.0.0.1]]:#012.1.3.6.1.2.1.1.3.0 = Timeticks: (104111733) 12 days, 1:11:57.33#011.1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.4.1.19406.1.2.1#011.1.3.6.1.4.1.19406.1.1.2.1 = STRING: "<86>Apr  3 23:25:01 sweethome CRON[11822]: pam_unix(cron:session): session closed for user root"

のように処理されるようになります。

あとは、snmptt でメッセージの整形をして、Zabbixに 渡してアラート検知、なんてことをすればいいわけです。
が、実際にやりたかったこととは、ちょっとズレがあるのでどうしたもんかな、という新たな課題が出てきてしまったわけですが…。(omsnmp モジュールを呼ぶんじゃなくて、コマンド呼び出ししたほうがいいかもしれない、と思えてきた。)

トラックバック(2)

前回からの引き続き。 rsyslog の omsnmp モジュールでは、やりたいことには微妙に足りない感じなので、何か代替案はないかとドキュメントを漁った... 続きを読む

前回からの引き続き。 rsyslog の omsnmp モジュールでは、やりたいことには微妙に足りない感じなので、何か代替案はないかとドキュメントを漁った... 続きを読む

コメントする