SNMP TRAP отправка на E-mail и интеграция с Zabbix

Автор: Андрей Торженов

Инструкция по настройке интеграции Zabbix с SNMP TRAP и отправке TRAP’ов на E-Mail

Инструкция по настройке интеграции Zabbix с SNMP TRAP и отправке TRAP’ов на E-Mail.

Отправка на E-mail осуществляется внешним скриптом, что позволяет получать TRAP’ы на E-mail без использования Zabbix.

Используемое ПО

  • CentOS Linux release 7.5.1804 (Core)
  • net-snmp, Version : 5.7.2
  • snmptt, Version : 1.4
  • ssmtp, Version : 2.64
  • Zabbix, Version : 3.4.11

Принцип работу

  1. Утилита snmptrapd (из пакета net-snmp) получает TRAP от устройства и запускает обработчик TRAP’ов — snmptt.
  2. snmptt обрабатывает полученный TRAP:
    • Фильтрует полученные данные (не все трапы мы хотим сохранять в Zabbix и отправлять на E-mail);
    • Переводит TRAP в формат понятный Zabbix и сохраняет в файл (который в дальнейшем анализирует Zabbix);
    • Выполняет внешний скрипт для отправки TRAP’а на E-mail.
  3. Внешний скрипт, с помощью утилиты ssmtp, отправляет TRAP на E-mail.

Установка пакетов

Предполагаем, что Zabbix уже установлен и настроен.

Настройка Zabbix

Если вы не используете Zabbix и вам нужно только получать TRAP’ы на E-mail, вы можете пропустить этот этап.

Включаем поддержку SNMP TRAP в Zabbix и указываем лог файл из которого Zabbix будет брать данные. Лог файл должен иметь определённый формат, его подготовит snmptt.

/etc/zabbix/zabbix_server.conf

Перезапускам Zabbix.

Настройка «Узел сети» в Zabbix

Настраиваем наш «Узел сети» в Zabbix с которого будем получать SNMP TRAP.

В данном случае это АТС Avaya (Nortel) CS1000E.

Создаём «Элемент данных».

Элемент данный Zabbix для получения SNMP TRAP

Элемент данный Zabbix для получения SNMP TRAP

Тип: SNMP Trap
Ключ: snmptrap.fallback
Тип информации: Журнал (лог)
Формат времени в журнале (логе): hh:mm:sszyyyy/MM/dd

Настройка snmptrapd

Отключаем авторизацию (на ваше усмотрение) и настраиваем обработчик SNMP TRAP событий, в нашем случае snmptt.

/etc/snmp/snmptrapd.conf

Настройка snmptt

Указываем путь к временному файлу, в который snmptt будет писать подготовленные данные для Zabbix. Настраиваем формат даты и времени.

/etc/snmp/snmptt.ini

Незабываем настроить logrotate для zabbix_traps.tmp.

/etc/logrotate.d/snmptt

 

Настраиваем правила по умолчанию преобразования SNMP TRAP

Полученные от snmptrapd трапы преобразуем в понятный Zabbix формат.

Т.к. мы ещё не знаем какие, в каком виде и с каких OID’ов будут приходить TRAP’ы, настроим правило преобразования по умолчанию. Далее, проанализируем полученные TRAP’ы и настроим более детальное преобразование, которое будет удобно читать человеку.

/etc/snmp/snmptt.conf

Правило преобразования по умолчанию.

Запускаем сервисы

Проверяем работоспособность

И так, мы всё настроили. Теперь отправим с нашего оборудования TRAP (в моём случае Avaya CS1000E версии 7.65) и посмотрим в каком формате он придёт и как отобразится в логах и в Zabbix.

Отправился TRAP с информацией об удачном сохранении конфигурации АТС.

Смотрим как TRAP отображается в Zabbix

Zabbix. Смотрим SNMP TRAP'ы в меню "Последние данные"

Zabbix. Смотрим SNMP TRAP’ы в меню «Последние данные»

Как видно, в этом TRAP’е много лишней информации, которая нам не нужна и только мешает анализу происходящий событий.

Создадим в snmptt правило преобразования, которое уберёт лишние данные.

Настройка правила преобразования snmptt

Нам нужно понять, какие и откуда (из каких полей) получить данные. Для этого посмотрим «сырые данные» SNMP TRAP’а.

Анализ «сырых данных» SNMP TRAP’а

Анализируем лог файл для Zabbix подготовленный snmptt.

/var/log/zabbix/zabbix_traps.tmp

Приведём это к более читаемому виду:

Нас интересует:

  1. OID с которого отправляется TRAP.
    • Строка 2: «.1.3.6.1.4.1.562.3.10.10.1.0.5»
  2. Сообщение об ошибке или информационное сообщение от АТС в TRAP’е.
    • Строка 9: «TEMU207»
  3. Описание этой ошибки или сообщения.
    • Строка 12: «Backup process to local Removable Media Device ended succfully.»

Создание правил преобразования

Данные из OID записываются в переменные и далее мы уже оперируем переменными.

SNMP OID и переменные

SNMP OID и переменные

Правило преобразования:

/etc/snmp/snmptt.conf

Рассмотрим подробнее:

Строка 3 «EVENT»: OID с которого получаем TRAP. Мы его выяснили выше, но вместо цифры 5 в конце OID’а, ставим * (это wildcard), т.к. с АТС могут приходить OID’ы и с другими цифрами в конце (например 3).

Значение этих цифр смотрим тут: http://www.mibdepot.com/cgi-bin/getmib3.cgi?win=mib_a&i=1&n=COMMON-TRAP-MIB&r=avaya&f=COMMON-TRAP-MIB.mib&v=v1&t=def#AlarmSeverity

Строка 4 «MATCH»: MATCH позволяет организовать фильтрацию. В данном случае, фильтр настроен игнорировать TRAP’ы в которых присутствуют сообщения «AUD000» или «TIM000» (конструкция: !(AUD000|TIM000)) в переменной $7.

Эти информационные сообщения достаточно часто приходят от АТС. Они информируют нас, что с АТС всё хорошо и ни какой полезной нагрузки не несут. Нет нужды хранить их в Zabbix или получать с ними оповещения на E-mail.

Строка 4 «FORMAT»: Описываем в каком формате будет записываться информация в лог. Тут как раз и настраиваем хранение в логе только нужной нам информации.

  • ZBXTRAP — слово необходимое Zabbix, что бы он понял, что эта запись в логе для него.
  • $ar — переменная с IP адресом узла с которого отправляется TRAP. По этому IP, Zabbix понимает к какому «Узлу сети» относится TRAP.
  • $7 — переменная, в ней записано «TEMU207»
  • $Fn — перевод строки
  • $10 — переменная, в ней хранится «Backup process to local Removable Media Device ended succfully.»

Строка 5 «EXEC»: Запускам внешний скрипт и передаём ему атрибуты. В данном случае это скрипт для отправки TRAP’а на E-Mail (о нём ниже), но может быть и другой скрипт, например записи TRAP’ов в базу данных.

Подробнее по всем параметры в документации: http://snmptt.sourceforge.net/docs/snmptt.shtml

Перезапускам сервис snmptt.

Результаты настройки правил snmptt

Отправляем новый TRAP с оборудования и смотрим на результаты.

/var/log/zabbix/my_zabbix_traps.tmp

Как видно, в логе который анализирует Zabbix, осталась только нужная информация.

А вот как эта информация выглядит в Zabbix.

Zabbix. Смотрим SNMP TRAP’ы в меню «Последние данные»

Zabbix. Смотрим SNMP TRAP’ы в меню «Последние данные»

После того как убрали «мусор», стало куда более наглядно и понятно.

Отправка TRAP’а на E-mail

Каждый раз, когда приходит TRAP, snmptt используя функция EXEC запускает данный скрипт и скрипт, используя утилиту ssmtp отправляет оповещение на E-mail.

Настройка ssmtp

/etc/ssmtp/ssmtp.conf

Скрипт отправки на E-mail

/etc/snmp/trapemail

Присваиваем скрипту права на исполнение.

Результат работы скрипта

Сообщение в почте.

TRAP в E-Mail

TRAP в E-Mail

Ссылки

The following two tabs change content below.
В профессиональной сфере занимаюсь всем, что связанно с IT. Основная специализация - VoIP и сети передачи данных. Стараюсь не заниматься Windows серверами (но иногда приходится) и 1С.

Добавить комментарий