2012-08-02 4 views
0

Мне нужно собрать snmptraps и отобразить их в веб-интерфейсе. Приложение уже содержит * рубин на рельсах * Linux * delayed_job (для постановки в очередь) * * PostgreSQL Несколько хрон рабочих мест, которые делают запросы SNMPredirect snmptrapd для postgres или очереди сообщений

Теперь мне нужно запустить что-то вроде snmptrapd для сбора аварийных сигналов. Было бы возможно, чтобы snmptrapd записывал свои ловушки в очередь, которую я могу обрабатывать с заданием cron. Что-то вроде встроенного в mqueue linux было бы здорово. Или даже записать его в базу данных postgresql (я знаю, что она поддерживает mysql, но нигде не упоминается о postgres)

Кто-нибудь знает, как я могу перенаправить вывод snmptrapd во что-то, что я могу обработать с помощью задания cron.

ответ

2

Я сделал что-то подобное в Perl, но вы можете сделать это и с Ruby.

Прежде всего вам нужно сообщить snmptrapd, который является обработчиком по умолчанию для ловушек. В snmptrapdconf вы можете определить его в следующем виде:

traphandle default /yourpluginpath/yourplugin 

Теперь каждый раз, когда ловушка occours его данные будут отправлены в yourplugin. Теперь он должен справиться с этим. После того, как у вас есть пакет, вы можете сохранить его в любой требуемой БД, не имеет значения, является ли это MySQL или PostgreSQL.

Единственная проблема - библиотека, которая анализирует данные, поступающие из ловушки. В Perl я использовал SNMP::Trapinfo, но поскольку я не использовал Ruby, я не знаю эквивалента, я уверен, что кто-то другой может указать вас в нужную библиотеку. Вы можете даже разобрать его сами. На самом деле вы также можете использовать базовый сценарий оболочки, если хотите, чтобы кто-то еще хранил данные в БД.

+0

Спасибо. единственным отрицательным моментом является то, что он запускает программу для каждой ловушки. Слишком плохо, нет ничего похожего на вещь типа fastcgi для snmptrapd. –

+0

@TommieJones. Вы всегда можете реализовать какую-то очередь. Это было бы не так сложно. – raz3r