snmptrap を IRC に出力

大体できた。構成はこんな感じ。

 1)snmptrapd  -- 2)lua --> 3)ktserver(with memachedプラガブルサーバ) <-- 4)lua --> 5)ircserver

 

1)トラップ受け付けるやつ snmptraphandle 経由で 2) にトラップ内容を渡す
2)snmptraphandle経由でトラップ内容を受けて memcached プロトコルで ktserver にキューイング
3)memachedプラガブルサーバをキューモードで使用
 http://fallabs.com/blog-ja/promenade.cgi?id=134
4)ktserverから memcached プロトコルでメッセージゲットしてIRCに出力

 ※2)と4)の設定ファイル(といっても、luaのtable書いてるだけ)は共通

 

2)で直接IRCに吐かないのは、UDPで受けたsnmptrapdの処理をなるべく早く終了させたいからってのと、IRCサーバによっては大量メッセージを一気に出力することに対して制限があったりするのでIRCに出力する部分は非同期にしたかったから。

trapの内容をログ出力にして、ログ監視→IRCに出力でも良かったのだけど 3) の仕組みを使ってみたかったからこうなった。

後はktserverとsnmptrapd自体のログ監視と、ktserver内のキューモニタリング部分を実装すればとりあえず実運用に組み込みできるレベルになるかな。