Отправка snmp trap windows

SNMP traps и с чем их едят

В этой статье я хочу осветить вопрос работы с SNMP traps. В то время, когда я начинал разбираться с этой темой, при неплохом знании принципов работы протокола SNMP, я был удивительным образом перепутан результатами чтения документации по этому вопросу, всеми этими OID, которые нужно писать как параметры для команды snmptrap. Поиски внятной информации в интернет не дали результатов. Создавалось впечатление, что я один такой непонятливый среди тех, кто считает это элементарным.

В своей работе я использую пакет NetSNMP с открытым исходным кодом и поэтому, примеры относятся именно к этому пакету.

Я не буду останавливаться на описании дерева SNMP (считаю это действительно банальным), а начнем с пресловутого OID. OID это просто. OID, это Object ID, уникальный идентификатор объекта в дереве значений SNMP. OID может записываться в нескольких видах.

  1. Числовой. Например, 1.3.6.1.4.1.2021 . Самый простой вид, по причине полного отсутствия каких либо трансформаций программным обеспечением. Именно в таком виде SNMP „думает“.
  2. Текстовый, с использованием MIB файлов. Понятно, что дикие цифры OID запомнить категорически невозможно, поэтому с помощью MIB можно вводить текстовые мнемонические имена для более простого вспоминания и использования идентификаторов. Кроме того, текстовая запись позволяет избежать написания OID от корня дерева SNMP. Уникальные мнемонические имена уже содержат путь до необходимого узла дерева. Отсюда возможны записи вида enterprises.ucdavis.

Так как уникальность мнемонического имени в пределах всех возможных MIB никто не гарантирует и не всегда сразу вспомнишь к чему относится имя (например prTable), существует следующая, на мой взгляд самая приятная форма записи: UCD-SNMP-MIB::prTable . В таком формате, кроме самого имени указывается имя MIB (можно сказать, это пространство имен)

Единственным ограничением использования MIB является то, что при использовании программного обеспечения SNMP от разных производителей и различного железа необходимо единое „понимание“ этих волшебных трансформаций. Поэтому на сайтах производителей управляемого оборудования есть файлы описания MIB для конкретных устройств.

С представлением OID разобрались. Теперь про трапы. Сразу оговорюсь, что все нижесказанное относится к версии 2с SNMP.

В протоколе SNMP есть трапы (traps) и есть информы (informs). Отличаются они тем, что трапы посылаются на станцию менеджера без гарантии их доставки, а информы гарантированно доставляются. Ну, или не доставляться, но тогда отправитель об этом узнает. Для простоты, я и то и другое называю трапом. Так нам будет прощеi.

Какая информация посылается менеджеру в трапе (информе)? А посылаются следующие данные:

  • Uptime устройства в виде пары: стандартный OID uptime, значение
  • OID, который говорит о том, что за событие приключилось. В MIB файлах есть специальные описания некоторого количества стандартных событий, вроде запуска или остановки агента. Также, мы можем определить собственные trap OIDs и даже описать их в собственном MIB файле.
  • Любые пары OID и его значение (там еще есть и третье поле „тип значения“, но это нам побоку), которые могут дать дополнительную информацию. Например, когда свитч посылает трап „Падение линка“, дополнительное поле будет содержать информацию OID интерфейса, с которым приключилась неприятность — IF-MIB:ifIndex.2 .

Теперь, наше повествование разделяется на направления. Первое направление: „Как нам послать SNMP trap ручками из командной строки„. Второе направлении „Как нам заставить агента SNMP посылать трапы когда что то идет не по плану“.

Посылаем руками

Допустим, нам хочется послать сообщение менеджеру о том, что демон net-snmpd запустился и передать дополнительную информацию о размере swap файла и все это ручками . Ну пришла нам такая блажь. Допустим. Пишем:

Читайте также:  Windows reinstall windows update

snmpinform -c public -v 2c host.sample.com «» ucdavis.ucdTraps.ucdStart memTotalSwap i 1024000

  • «» — брать uptime по дефолту
  • ucdavis.ucdTraps.ucdStart — послать этот трап
  • memTotalSwap i 1024000 — добавить в нагрузку OID memTotalSwap равное целому 1024000

И если на целевом хосте запущен демон snmptrapd , то в логе появится сообщение о приходе трапа.

Однако, иногда хочется странного, например послать трап о том, что инопланетяне тырят SCSI винчестеры прямо из корзинки или о том, что серверную заливает водой, о чем вас предупредительно оповестил самодельный датчик, которые весит на COM порту. Понятное дело, в стандартных MIB о таких странных ситуациях не упоминается. Поэтому, можно использовать произвольную последовательность цифирек для обозначения нового в мире события. Например:

snmptrap -c public -v 2c 127.0.0.1 «» 1.3.3.3.3.3.3.3 1.2.2.2.2.2.2 s «Aliens opened the door»

И что характерно, это будет работать. В логе появится такая бредятинка:

Nov 22 14:08:24 snmptrapd[465]: localhost [127.0.0.1]: Trap , DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (736247) 2:02:42.47, SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::org.3.3.3.3.3.3, iso.2.2.2.2.2.2 = STRING: » Aliens opened the door»

В то же время, крутые администраторы должны все делать правильно, самодокументируемо, в соответствии с требованиями IETF и других компетентных организаций. Поэтому, будем описывать наши новые OID в своем собственном MIB файле.

Здесь определяется enterptise с номером 10050 и ему даеся имя aliensattack. После этого вводятся две ветки: одна для трапов (начало и конец атаки), другая для OID дополнительной информации (атака через двери или это вовсе не инопланетяне).

Скажу честно, в формате MIB файла я понимаю мало. Поэтому внимательно изучив MIB файлы из стандартной поставки net-snmp, я сделал этот пример который работает, но кристальной ясности во всех его ключевых словах я не достиг.

Дальше! Укладываем этот файл с именем ALLIENSATTACK-MIB.txt в какой нибудь каталог поближе и запоминаем, что с этого момента все программы имеющие отношения к SNMP (snmpd, snmptrapd, snmpinform) мы запускаем с поддержкой этого MIB. Тоесть, к командной строке добавляем параметры

-М каталог/с_файлом -m +ALLIENSATTACK-MIB.

Знак „+“ перед именем MIB (не файла с MIB, а именно имя MIB), значит, что MIB будет добавлен к загружаемым по умолчанию.

Посылаем автоматически

Способ #2. Пишем скрипт, который проверяет системные параметры и посылает трап на станцию менеджера. Пишется на shell, perl или на любом известном языке.

Способ #1. Наиболее интересный. В 5-й версии net-snmp появиласть поддержка модуля DISMAN-EVENT-MIB котрый умеет отсылать сообщения при некоторых условиях. Но это уже другая история.

SNMP-trap (ловушки SNMP)

Только в Pro-версии программы LANState. SNMP-ловушка (SNMP-trap) — это особый сигнал, отправляемый устройством с поддержкой протокола SNMP. Как правило, подобные сигналы отправляются устройствами для того, чтобы оповестить администратора сети о наступлении каких-то критических событий. К примеру, некоторые виды источников бесперебойного питания (UPS) могут отправлять SNMP-trap в случае, когда оборудование переходит в режим питания от батарей UPS. Как правило, подобные ситуации требуют незамедлительного вмешательства обслуживающего персонала и поэтому устройство само инициирует отправку сигнала по протоколу SNMP. Еще в качестве примера можно привести некоторые модели датчиков вскрытия помещений и стоек оборудования. Эти датчики могут быть подключены к локальной сети и поддерживать отправку SNMP-trap в критических ситуациях, таких как несанкционированное открытие двери, к примеру.

Программа LANState может принимать такие сообщения и сигнализировать о них несколькими различными способами. Для включения возможности принятия SNMP-trap необходимо выбрать пункт главного меню SNMP | SNMP-ловушки (trap). В появившемся окне следует задать условия отбора (фильтр) сообщений, либо оставить включенным по умолчанию параметр Принимать все сообщения от SNMP-устройств, и нажать кнопку Включить приём сообщений от SNMP-устройств. Номер порта 162 является стандартным и изменять его рекомендуется только в тех случаях, когда вы уверенны, что отправка сообщений от устройства будет происходить на какой-либо другой порт (задается в настройках самого SNMP-устройства).


Рис 1. Окно Ловушка SNMP.

Если в вашей сети SNMP-trap рассылают несколько устройств, то вы можете задать фильтр сообщений, чтобы отсеивать ненужные и малоинформативные. Для этого установите переключатель в позицию Принимать сообщения, удовлетворяющие хотя бы одному условию и задайте условия отбора, нажав кнопку Добавить.


Рис 2. Окно Параметры условия.

К примеру, для того, чтобы принимать сообщения только от одного устройства и игнорировать от других — поставьте галочку IP отправителя и укажите его IP-адрес. Аналогично, можно принимать сообщения, адресованные именно вашему компьютеру (галочка IP получателя).

Читайте также:  Usb после восстановления windows

В сообщении SNMP- trap содержится структурированная информация, состоящая из имени переменной SNMP (OID) и её значения. К примеру, признаком того, что сервер перешел в режим питания от UPS может быть сообщение, в котором содержится переменная, отвечающая за режим питания со значением, скажем, 1. Имя переменной выглядит как 1.3.6.4.6.6. Для получения SNMP-trap только с определенными переменными следует указать их в поле Переменные. В поле Имя задайте имя переменной, в Тип — её тип (можно выбрать из списка либо ничего не указывать) и задайте значение. После этого нажмите кнопку Добавить и заданная переменная поместится в список.

После этого, программа в каждом полученном сообщении будет искать заданную переменную и в случае ее обнаружения сигнализировать.

Для настройки сигнализации нажмите кнопку Настройка оповещения.


Рис 3. Окно Параметры оповещения .

Программа выполняет те же действия, что и в функции мониторинга устройств.

После завершения всех настроек и включения приёма SNMP-trap, это окно можно закрыть. Функция при этом продолжит свою работу в фоновом режиме.

О мониторинге параметров SNMP на сетевом оборудовании без использования ловушек вы можете прочитать здесь: Мониторинг SNMP.

Скачайте бесплатную 30-дневную версию прямо сейчас и попробуйте!

2keep.net

IT-Blog

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

Инструкция по настройке интеграции 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 с которого будем получать SNMP TRAP.

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

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

Элемент данный 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.

Читайте также:  Mac os lion как сделать загрузочную флешку windows

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

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

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 и переменные

/etc/snmp/snmptt.conf

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

Строка 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’ов в базу данных.

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

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

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

/var/log/zabbix/my_zabbix_traps.tmp

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

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

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

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

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

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

Настройка ssmtp

/etc/ssmtp/ssmtp.conf

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

/etc/snmp/trapemail

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

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

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

Ссылки

  • Документация snmptt: http://snmptt.sourceforge.net
  • Документация snmptrapd: http://net-snmp.sourceforge.net/docs/man/snmptrapd.html
  • mibDepot (A Free SNMP MIB Search Engine for SNMP MIBs): http://www.mibdepot.com

Похожие записи.

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

Latest posts by Андрей Торженов (see all)

  • libflashplayer.so пропатченный от Time bomb — 11/02/2021
  • WordPress. Внезапная ошибка «Не удалось создать директорию.» — 07/01/2021
  • Таблица распределения Wi-Fi частот 2.4, 5 и 6 ГГц (802.11ax, Wi-Fi 6E) — 28/04/2020
  • Fail2ban и Nextcloud. Защита от подбора пароля с помощью — 14/04/2020
  • Ошибки после обновления до OTRS 6.0.27 — 02/04/2020

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

Для отправки комментария вам необходимо авторизоваться.

Оповещение по e-mail о новых комментариях.
Также вы можете не оставляя комментарий подписаться но новые комментарии.

Оцените статью