View Full Version : Обработка Snmp-трапов.
Помогите настроить обработку SNMP трапов в забиксе.
Что сейчас есть:
- хост SNMP_Default
- темплейт Template_Trapper
- в темплейте есть один Item с названием snmptraps
Сделано по описанию: http://www.zabbix.org/forum/showthread.php?t=8924
Трапы приходят и их видно в забиксе в Monitoring -> Last data, но как и что с ними дальше делать не могу допетрить. Натолкните на истинный путь :)
А еще лучше дайте хороший пример :)
Уже месяца 4 пытаюсь разобраться, когда есть время, как от стенки горох :(
Нужно принимать состояние упсов и контролировать аварии типа: статсус упса, температура, разряд батареи, оставшееся время работы и т.д.
Помогите кто чем может.
хых...а что ты с ними хочешь дальше делать?:)
Хотелось бы их как то парсить и в зависимости от OID-ов, которые внутри, выводить информацию что то вроде: UPS1 работает от батарей, Высокий разряд батарей UPS1 и т.д.
Но что то мне подсказывает, что это сделать нельзя. Меня интересует представление аварий как на обычных системах мониторинга. Не знаю как объснить, если кто видел, то на примере: Radiocommander (Siemens), OMC-R (Alcatel), Netcool (не считаю за систему мониторинга :) )
Хорошее сравнение T-MIP от HP или софт от TTI Communication. Имеется ввиду отображение алармов: аларм появился, пришел трап и высвитался информация на экране. Аларм отклирился, пришел трап, в забиксе аларм тоже ушел.
Подобное возможно в Забиксе?
Хотелось бы их как то парсить и в зависимости от OID-ов, которые внутри, выводить информацию что то вроде: UPS1 работает от батарей, Высокий разряд батарей UPS1 и т.д.
Но что то мне подсказывает, что это сделать нельзя. Меня интересует представление аварий как на обычных системах мониторинга. Не знаю как объснить, если кто видел, то на примере: Radiocommander (Siemens), OMC-R (Alcatel), Netcool (не считаю за систему мониторинга :) )
Хорошее сравнение T-MIP от HP или софт от TTI Communication. Имеется ввиду отображение алармов: аларм появился, пришел трап и высвитался информация на экране. Аларм отклирился, пришел трап, в забиксе аларм тоже ушел.
Подобное возможно в Забиксе?
Не совсем понятно.
У меня UPS опрашиваются по SNMP:
Например режим работы UPS:
1.3.6.1.2.1.33.1.4.1.0
Получаю значение:
Либо 3, либо 4 либо 5
Делаю тригер "если значение стало 4 - сработать"
Делаю условие: если сработал тригер - высылается аларм, с текстом, что UPS переключился в режим работы от батареии
и т.д.
Тоже самое с временем работы от батареии.
Получаю минуты. Делаю тригер - сработать если время меньше 15 минут, далее отослать аларм
Не совсем понятно.
У меня UPS опрашиваются по SNMP:
Например режим работы UPS:
1.3.6.1.2.1.33.1.4.1.0
Получаю значение:
Либо 3, либо 4 либо 5
Делаю тригер "если значение стало 4 - сработать"
Делаю условие: если сработал тригер - высылается аларм, с текстом, что UPS переключился в режим работы от батареии
и т.д.
Тоже самое с временем работы от батареии.
Получаю минуты. Делаю тригер - сработать если время меньше 15 минут, далее отослать аларм
Спасибо, но в данном случае система, где стоит Забикс, выступает в активной роли, она сама опрашивает UPS и т.д.
Если использовать систему в пассивной роли, по отношению к оборудованию и тем самым ловить трапы, то это позволит разгурузить как сеть(езернет), так и сам сервер, на котором стоит Забикс (у меня на нем еще куча всего).
Дело в том, что у меня есть энное количество UPS и другого оборудования, которое стоит в разных городах, каналы к которому не всегда хорошие :(
Да и правильнее, на мой взгляд, ловить трапы от оборудования, чем с какой то периодичностью пулять запросы с сервера по всей сети.
Вот и вопрос: оборудование трапы шлет, они попадают в Забикс (как я писал выше), их можно увидеть в Monitoring -> Last data, но как их от туда достать и обработать OID-ы, которые там присутствуют и сделать уже по результатам обработки вывод информации как это делаете Вы?
Вот типовая информация, которая появляется у меня в Забиксе после обработки трапа от одного UPS:
snmptraphandler for Zabbix (Tue Mar 31 00:02:14 2009)
[Tue Mar 31 00:02:14 2009] zabbix_host= SNMP_Default
[Tue Mar 31 00:02:14 2009] OID: .1.3.6.1.2.1.1.3.0
[Tue Mar 31 00:02:14 2009] OID: .1.3.6.1.6.3.1.1.4.1.0
[Tue Mar 31 00:02:14 2009] OID: .1.3.6.1.2.1.33.1.6.2.1.1.73
[Tue Mar 31 00:02:14 2009] OID: .1.3.6.1.2.1.33.1.6.2.1.2.73
[Tue Mar 31 00:02:14 2009] OID: .1.3.6.1.6.3.18.1.3.0
[Tue Mar 31 00:02:14 2009] OID: .1.3.6.1.6.3.18.1.4.0
[Tue Mar 31 00:02:14 2009] str= .1.3.6.1.2.1.1.3.0: 28:6:17:07.15
.1.3.6.1.6.3.1.1.4.1.0: .1.3.6.1.2.1.33.2.0.3
.1.3.6.1.2.1.33.1.6.2.1.1.73: 73
.1.3.6.1.2.1.33.1.6.2.1.2.73: .1.3.6.1.2.1.33.1.6.3.6
.1.3.6.1.6.3.18.1.3.0: 10.10.10.10
.1.3.6.1.6.3.18.1.4.0: \"public\"
Эту часть дописывает скрипт в лог:
[Tue Mar 31 00:02:14 2009] command= /usr/local/sbin/zabbix_sender --zabbix-server localhost --port 10051
[Tue Mar 31 00:02:14 2009] ERROR: Failed to send item (10.10.10.10, 10.10.10.10) .1.3.6.1.2.1.1.3.0: 28:6:17:07.15
.1.3.6.1.6.3.1.1.4.1.0: .1.3.6.1.2.1.33.2.0.3
.1.3.6.1.2.1.33.1.6.2.1.1.73: 73
.1.3.6.1.2.1.33.1.6.2.1.2.73: .1.3.6.1.2.1.33.1.6.3.6
.1.3.6.1.6.3.18.1.3.0: 10.10.10.10
.1.3.6.1.6.3.18.1.4.0: \"public\"
using command /usr/local/sbin/zabbix_sender --zabbix-server localhost --port 10051 --host SNMP_Default --key snmptraps --value "(10.10.10.10, 10.10.10.10) .1.3.6.1.2.1.1.3.0: 28:6:17:07.15
.1.3.6.1.6.3.1.1.4.1.0: .1.3.6.1.2.1.33.2.0.3
.1.3.6.1.2.1.33.1.6.2.1.1.73: 73
.1.3.6.1.2.1.33.1.6.2.1.2.73: .1.3.6.1.2.1.33.1.6.3.6
.1.3.6.1.6.3.18.1.3.0: 10.10.10.10
.1.3.6.1.6.3.18.1.4.0: \"public\"
"
[Tue Mar 31 00:02:14 2009] Exiting ...
Вроде так. Сейчас нет живых трапов в Заббиксе, т.к. полностью переставлялся. Но первая часть, это вроде то, что появляется в Заббиксе, когда смотришь в меню Monitoring->Last data.
Вопрос в том, как обработать первую часть Заббиксом и показать алармы, что произошло то-то и то-то. Если конечно это возможно в принципе.
Nikolaicheg
24-04-2009, 14:47
насколько я знаю, можно создать триггер, котороый будет срабатывать при наличии определенного текста в item'е. согласно этому можно генерировать разные алерты. Гдето на англоязычном форуме видел описание создания триггеров, обрабатывающих текстовые значения.
можно использовать триггер регулярных выражений (regexp, iregexp) или str
Nikolaicheg
24-04-2009, 16:40
я и говорил об этих триггерах :)
Спасибо за советы. Впринципе, через str() OIDы находятся. Пока поэксперементировал с одним, а не с группой. Пока не знаю как :(
Вопрос возник в другом. В скрипте snmptrap.pl (snmptrap.sh) в соответствии с примером, в качестве имени хоста указан SNMP_Default (в нем указан IP:0.0.0.0), соответственно все трапы принимает именно он. При этом в мониторинге показывается срабатывание данного триггера и генерация события.
Я создаю свой хост UPS_ZabbixServer и указываю в нем IP самого сервера, ну что бы сэмитировать посылку трапа с упса. Даю команду:
snmptrap -c operator -v 2c 10.10.10.10 "" .1.3.6.1.2.1.33.2.0.1
При этом, если смотреть в Monitoring->Triggers, то вижу что триггер срабатывает, но при этом имеет статус Unknown и, как следствие в событиях у меня ничего не появляется.
Как только переименовал хост UPS_ZabbixServer в SNMP_Default, но при этом IP оставил 10.10.10.10, я получил нормальное срабатывание триггера и появление события. Т.е., так как в скрипте snmptrap.pl в качестве хоста прописано SNMP_Default, то все события идут на него и только в таком случае может происходить нормальная обработка трапов.
Вопрос: как можно организовать разделение по хостам, что бы не все трапы обрабатывал SNMP_Default, и соответственно при генерации события высвечивалось имя хоста с которого пришел трап, а не SNMP_Default для всех хостов.
В инете встречал решение данной проблемы. В ней проводилась модификация скрипта и по моему самой БД.
Можно реализовать подобную вещь средствами самого Заббикса?
Или для реализации подомной вещи лучше просто разбирать лог, который пишет скрипт и от туда выбирать и айпишник хоста, оиды и их значения и т.д.?
Nikolaicheg
27-04-2009, 11:58
я вручную модифицировал скрипт snmptrap.pl, чтобы он лез в базу, искал по IP имя хоста, а потом отсылал трап через zabbix_sender серверу по имени хоста. Создал шаблон, в шаблоне 1 итем - zabbix trap. привязал шаблон к необходимым хостам. Теперь у каждого хоста есть заббикс траппер итем, в нем и отображаются трапы. И уже после этого можно делать триггеры на конкретный хост.
Не составит труда поделиться скриптиком?
В принципе, я так понимаю здесь:
http://pierky.wordpress.com/2009/01/30/zabbix-snmp-traps-mapped-to-the-right-host/
есть эти модификации для шела. Я использую перловский скрипт с этого форума (другая ветка).
Но т.к. я уже лет 10 ничего не писал, а с перлом, равно как и с php вообще не разбирался, боюсь для меня сейчас сделать это самому будет сложно :(
Да и мозг приобрел вид закостенелого отростка :)
Возможно, кому то в будущем тоже поможет.
Спасибо.
Nikolaicheg
27-04-2009, 13:20
я тут уже выкладывал скриптец на форуме :)
http://www.zabbix.com/forum/showthread.php?t=11812
Решил вернуться к вопросу обработки трапов. А то немного отвлекся :)
Вопрос вот в чем.
Ниже приведены две группы трапов:
1) Посылка об аварии
.1.3.6.1.2.1.1.3.0: 9:18:26:38.39
.1.3.6.1.6.3.1.1.4.1.0: .1.3.6.1.2.1.33.2.0.3
.1.3.6.1.2.1.33.1.6.2.1.1.59: 59
.1.3.6.1.2.1.33.1.6.2.1.2.59: .1.3.6.1.2.1.33.1.6.3.10
.1.3.6.1.6.3.1.1.4.3.0: .1.3.6.1.2.1.33.2
2) Посылка о еще очистке
.1.3.6.1.2.1.1.3.0: 9:18:26:45.92
.1.3.6.1.6.3.1.1.4.1.0: .1.3.6.1.2.1.33.2.0.4
.1.3.6.1.2.1.33.1.6.2.1.1.59: 59
.1.3.6.1.2.1.33.1.6.2.1.2.59: .1.3.6.1.2.1.33.1.6.3.10
.1.3.6.1.6.3.1.1.4.3.0: .1.3.6.1.2.1.33.2
Соответственно в OID-е .1.3.6.1.6.3.1.1.4.1.0 приходит 1.3.6.1.2.1.33.2.0.3 или 1.3.6.1.2.1.33.2.0.4
Я немного переделал скрипт таким образом, что трап(все оиды в блоке) приходили не целиком, а каждый отдельно, что бы всю эту кучу можно было разруливать на основе Итемов. Может я и не прав :) Сейчас, ко мне приходят все строки отдельно и я могу, как мне кажется обходится более простыми тригерами и т.д.
Но! Возникло ряд проблем, по крайней мере для меня.
Дело в том, что когда приходят Оиды из первой группы, то триггера взводятся нормально (почти нормально), а вот гасятся они криво. Когда приходит Оид 1.3.6.1.6.3.1.1.4.1.0 со значением 1.3.6.1.2.1.33.2.0.4, то соответственно он и сбрасывается, а вот триггера для оидов:
.1.3.6.1.2.1.33.1.6.2.1.1.59: 59
.1.3.6.1.2.1.33.1.6.2.1.2.59: .1.3.6.1.2.1.33.1.6.3.10
и т.д.
остаются взведенными.
Подскажите, как все это счастье полность гасить?
Так же есть проблема с Оидами вот в этом месте:
.1.3.6.1.2.1.33.1.6.2.1.1.59: 59
.1.3.6.1.2.1.33.1.6.2.1.2.59: .1.3.6.1.2.1.33.1.6.3.10
Дело в том, что 59, в данном примере, это индекс.
У меня же в темплейтах описаны "нормальные" Оиды:
.1.3.6.1.2.1.33.1.6.2.1.1
.1.3.6.1.2.1.33.1.6.2.1.2
и т.д.
Соответственно, триггеры с данными Оидами теряются. Читал про обработку динамических индексов на стр.182. Создал такой вот Итем:
.1.3.6.1.2.1.33.1.6.3["index",".1.3.6.1.2.1.33.1.6.2.1.2",".1.3.6.1.2.1.33.1.6.3"]
но ничего не вышло :(
Подскажите кто чем может
1) как гасить все триггера в случае прихода одного конкретного
2) как создать итем и работать с ним в случае если он с динамическим индексом.
А еще лучше, помогите сделать ЭТО! :)
evgeny elkin
23-09-2009, 14:11
Добрый день! Настроил обработку трапов с помощью скрипта на перле -
http://www.zabbix.com/forum/showpost.php?p=43157&postcount=27, все работает, но есть проблема..
Проблема вот в чем: в Заббиксе (Latest Data) отображается только 3 или 4 первых строки трапа, например:
(192.168.4.10, 192.168.4.10) DISMAN-EVENT-MIB::sysUpTimeInstance: 0:0:00:00.00
SNMPv2-MIB::snmpTrapOID.0: SNMPv2-SMI::enterprises.1123.4.300.0.1
SNMPv2-SMI::enterprises.1123.4.300.1.1.1: 127.0.0.1
SNMPv2-SMI::enterprises.1123.4.300.1.1.2: \\\\Out-of-Band
и всё..
Хотя в snmptrapper.log полный трап
[Wed Sep 23 16:42:07 2009] str= DISMAN-EVENT-MIB::sysUpTimeInstance: 0:0:00:00.00
SNMPv2-MIB::snmpTrapOID.0: SNMPv2-SMI::enterprises.1123.4.300.0.1
SNMPv2-SMI::enterprises.1123.4.300.1.1.1: 127.0.0.1
SNMPv2-SMI::enterprises.1123.4.300.1.1.2: \\\\\\\\"Out-of-Band \\\\\\\\"
SNMPv2-SMI::enterprises.1123.4.300.1.1.3: \\\\\\\"atkds3200 \\\\\\\"
SNMPv2-SMI::enterprises.1123.4.300.1.1.4: \\\\\\"280b \\\\\\"
SNMPv2-SMI::enterprises.1123.4.300.1.1.5: \\\\\"Sep 23, 2009 4:39:16 PM \\\\\"
SNMPv2-SMI::enterprises.1123.4.300.1.1.6: \\\\"Controller enclosure component failed \\\\"
SNMPv2-SMI::enterprises.1123.4.300.1.1.7: \\\"Power-fan canister \\\"
SNMPv2-SMI::enterprises.1123.4.300.1.1.8: \\"Enclosure 85, Slot 1 \\"
SNMP-COMMUNITY-MIB::snmpTrapCommunity.0: \"public\"
В чем может быть проблема, кто-нибудь сталкивался с подобным? Заранее спасибо!
Да, есть такое.
Мне кажется это просто ограничение символов в выводе (Latest Data).
В Вашем примере их 251(скопировал текст руцями в ворд и посмотрел).
Можно например ручками сделать тригер на сравнение строки с 256 символами или более и пульнуть эту строку через ZABBIX_SENDER.
Вы получите в (Latest Data) наверное 255. Но если сработает триггер, то там будет вся строка (все данные).
Думаю девелоперы сейчас подскажут :)
Может кому то будет интересно.
Для себя первую проблему:
1) как гасить все триггера в случае прихода одного конкретного
как на свой взгляд, решил, но криво.
Сделал по приходу конкретного значения запуск сскрипта и в нем уже гашение интересующих меня триггеров.
Вторая проблема актуальна. Прошу помощи :)