我需要收集snmptraps并在Web界面中显示它们。该应用程序已包含 * ruby on rails * Linux的 * delayed_job(用于排队) * PostgreSQL的 *一些执行snmp查询的cron作业
现在我需要运行类似snmptrapd的东西来收集警报。是否有可能snmptrapd将其陷阱写入我可以使用cron作业处理的队列。像linux内置的mqueue之类的东西会很棒。甚至将它写入postgresql数据库(我知道它支持mysql但在任何地方都没有提到postgres)
有谁知道如何将snmptrapd的输出重定向到我可以用cron作业处理的内容。
答案 0 :(得分:2)
我在Perl中做了类似的事情,但你也可以用Ruby做到这一点。
首先,您需要告诉snmptrapd谁是陷阱的默认处理程序。在snmptrapdconf中,您可以将其定义如下:
traphandle default /yourpluginpath/yourplugin
现在每次陷阱发生时,它的数据都会被发送到你的插件。现在由他来处理它。一旦你有了数据包,你可以将它存储到你想要的任何数据库,无论是MySQL还是PostgreSQL都无关紧要。
唯一的问题是解析来自陷阱的数据的库。在Perl中我使用了SNMP::Trapinfo,但由于我使用过Ruby,我不知道它的等价物,我相信其他人可以指向正确的库。你甚至可以自己解析它。实际上,如果您希望其他人将数据存储到数据库,您也可以使用基本的shell脚本。