Snmp трапы что это
Перейти к содержимому

Snmp трапы что это

  • автор:

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

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

  • «» — брать uptime по дефолту
  • ucdavis.ucdTraps.ucdStart — послать этот трап
  • memTotalSwap i 1024000 — добавить в нагрузку OID memTotalSwap равное целому 1024000
ALLIENSATTACK-MIB DEFINITIONS ::= BEGIN IMPORTS OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY, Integer32, Opaque, enterprises, Counter32 FROM SNMPv2-SMI alliensattack MODULE-IDENTITY LAST-UPDATED "200209050000Z" ORGANIZATION "XCom" CONTACT-INFO "Planet Earth " DESCRIPTION "MIB for preventing aliens to stole our SCSI disks" ::= < enterprises 10050 >attackTraps OBJECT IDENTIFIER ::= < alliensattack 1 >attackStartTrap NOTIFICATION-TYPE STATUS current DESCRIPTION "Notify about start of attack" ::= < attackTraps 1 >attackStopTrap NOTIFICATION-TYPE STATUS current DESCRIPTION "Notify about time to leave our hideouts" ::= < attackTraps 2 >attackSource OBJECT IDENTIFIER ::= < aliensattack 2 >attackFromDoors OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "Sent to manager when attack starts from doors" ::= < attackSource 1 >attackFromWindows OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "May be alliens are innocent? And SCSI drives disappeared in the Gates?" ::= < attackSource 2 >END

Здесь определяется 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 трапы что это

В приведенной ниже таблице (Таблица 2) перечислены реализованные трапы и переменные, которые высылаются SNMP-менеджеру, и описание трапа.

SNMPv1 Enterprise and Specific Type; SNMPv2 OID

cikePeerLocalAddr – адрес local peer

cikePeerRemoteAddr – адрес remote peer

Оба значения – табличные.

Сигнализация о внутренней ошибке или исчерпании ресурсов при обработке IKE.

Ошибка, связанная с сертификатами или CRL.

Ошибка, связанная с обработкой протокола IKE:

Authentication error (в ситуациях, не попадающих под cikeCertCrlFailure)

Приход IKE-пакетов на несуществующий SA (Invalid cookie).

По тем или иным причинам не удалось создать IPsec SA (при существующем IKE SA).

Примечание: этот трап отсылается только при появлении ошибки во время проведения IKE-сессии и тем партнером, на котором случилась ошибка. Если создание соединения прекращено по другим причинам – остановка сервиса, перезагрузка LSP, delete payload, получение нотификации о том, что партнер по своей инициативе прекратил создание соединения, timeout и др., то локальное устройство трап не отсылает. В этом состоит отличие нашего агента от IOS, где трапы отсылаются с обоих партнеров при любой неуспешной сессии по созданию IPsec соединения.

Это трап-сообщение появляется при успешном создании IPsec SA.

Это трап-сообщение появляется после удаления IPsec SA (по разным причинам).

cipsMaxSAs – максимальное количество IPsec SAs. Если не существует предела – 0.

Отказ от создания SA по причине достигнутого максимального количества SA, указанного в лицензии. В переменной прописывается максимальное количество SA из лицензии.

Табличные значения. Индекс – целое число, начинающееся с единицы. Инкрементируется при каждой посылке трапа данного типа.

При вызове lsp_mgr show:

Примечание: аналогично реакции Cisco на команду show run

При успешной загрузке LSP:

Примечание: аналогично реакции Cisco на команду configure terminal

Для стартовой загрузки LSP надо задать ccmHistoryEventConfigSource = 4

При отгрузке LSP (по разным причинам):

Мониторинг SNMP-ловушки

Поддержка этой версии Orchestrator завершена. Рекомендуется выполнить обновление до Orchestrator 2019.

Действие Monitor SNMP Trap ожидает события в службе Microsoft SNMP Trap или на заданном вами порту. С помощью фильтров можно вызывать модули Runbook в соответствии с устройством, вызвавшим событие, или корпоративными, универсальными или конкретными идентификаторами SNMP-ловушки. Используйте действие Мониторинг SNMP-ловушки, чтобы отслеживать критические ошибки на сетевом устройстве, автоматически создавать запросы на неполадки и выполнять диагностика уровня 1 на устройстве.

Настройка действия monitor SNMP Trap

Перед настройкой действия Monitor SNMP Trap необходимо определить следующее:

  • Используемая версия SNMP
  • IP-адрес исходного узла
  • Корпоративный идентификатор устройства
  • Универсальный или конкретный идентификатор отслеживаемого устройства

Используйте следующие сведения для настройки действия Monitor SNMP Trap.

Вкладка «Подробные сведения»

Параметры Инструкции по настройке
Microsoft SNMP Trap Service (SNMPv1, SNMPv2c) Выберите этот параметр, чтобы использовать службу Microsoft SNMP Trap. Эта служба совместима только с snmp-версиями SNMPv1 и SNMPv2c.
Нет зависимости (SNMPv1, SNMPv2c, SNMPv3) Выберите этот параметр, чтобы отслеживать SNMP-ловушки с помощью порта, а не службы Microsoft SNMP Trap.
порт. Если выбран параметр Нет зависимости , введите номер порта связи, который будет отслеживаться для ловушек SNMP. Если выбран порт 162, служба Microsoft SNMP Trap должна быть отключена, так как она использует тот же порт при запуске.
Исходный узел Выберите , чтобы указать IP-адрес устройства, на котором происходит событие.
Идентификатор предприятия Выберите , чтобы указать корпоративный идентификатор события, вызванного устройством.
Универсальный идентификатор Выберите , чтобы указать универсальный идентификатор SNMP-ловушки. Доступно шесть вариантов:

coldStart(0): выберите фильтр для холодного запуска сетевого устройства. Этот параметр имеет числовое значение 0.

warmStart(1):выберите для фильтрации горячего запуска сетевого устройства. Этот параметр имеет числовое значение 1.

linkDown(2): выберите, чтобы отфильтровать разорванное подключение к сетевому устройству. Этот параметр имеет числовое значение 2.

linkUp(3): выберите, чтобы отфильтровать повторно установленное подключение к сетевому устройству. Этот параметр имеет числовое значение 3.

authenticationFailure(4): выберите фильтр для проверки подлинности SNMP на сетевом устройстве. Этот параметр имеет числовое значение 4.

egpNeighborLoss(5): выберите, чтобы отфильтровать потерянное подключение к соседу EGP. Этот параметр имеет числовое значение 5.

Опубликованные данные

В следующей таблице перечислены опубликованные элементы данных.

Элемент Описание
Исходный IP-адрес IP-адрес устройства, на котором возникла ловушка.
Идентификатор предприятия Корпоративный идентификатор ловушки.
Универсальный идентификатор Универсальный идентификатор ловушки.
Конкретный идентификатор Конкретный идентификатор ловушки. Значение конкретного идентификатора публикуется при использовании параметра enterpriseSpecific(6) в поле Универсальный идентификатор . В противном случае публикуется значение 0 (ноль).
Порт ловушки Порт, в котором была получена ловушка.
Varbind count Количество полученных привязок переменных.
Версия SNMP Версия SNMP, указанная для этой ловушки.

Пример использования утилиты Trap Receiver для получения и обработки SNMP TRAP сообщений от устройств NetPing

В этой статье будет показан пример использования утилиты Trap Receiver для получения и обработки SNMP TRAP сообщений от устройств NetPing.

Строить систему обработки SNMP TRAP сообщений будем на ОС Windows XP.

Установка утилиты Trap Receiver

С сайта http://www.trapreceiver.com/ загружаем крайнюю версию утилиты. На данный момент – это 7.60. Распаковываем архив и запускаем setup.exe. Утилита будет установлена в каталог c:\Program Files\TRAP Receiver

Настройка утилиты Trap Receiver

Trap Receiver состоит из двух основных компонентов: Пользовательского интерфейса и сервиса, обрабатывающего SNMP TRAP сообщения. Для начала нужно проделать отверстие в Windows Firewall через которое snmp TRAP пакеты будут попадать в сервис Trap Receiver. Для этого открываем Start -> Control Panel -> Windows Firewall. В появившемся окне на вкладке Exceptions нажимаем на кнопку Add Program и добавляем c:\Program Files\TRAP Receiver\trThread.exe.

Следующий шаг – добавление MIB файлов вашего устройства NetPing в программу Trap Receiver. Этот шаг выполнять не обязательно, но желательно. С помощью MIB файлов от вашего устройства TRAP Receiver сможет конвертировать числовые OID в текстовые описания. MIB файлы доступны для скачивания на странице устройства на сайте производителя — https://netping.ru. В данном примере используется устройство UniPing Server Solution, в программу был импортирован MIB файл DKSF_50.11.11_MB.mib.

Для загрузки MIB файлов откройте пользовательский интерфейс Trap Receiver (Trap Receiver GUI), используя ярлык на рабочем столе или в меню Start. В появившемся окне нажмите на кнопку Configure. В окне настроек переходим на вкладку MIBs, устанавливаем на этой вкладке галку Translate OIDs, нажимаем Load MIB и указываем на наш MIB файл. Если операция прошла успешно, утилита Trap Receiver покажет сообщение о том, что она импортировала файл.

Теперь всё готово к работе. Настраиваем устройство NetPing на отправку SNMP TRAP сообщений на адрес сервера с установленным TRAP Receiver. Для этого указываем IP адрес нашего сервера в поле «Адрес для посылки TRAP сообщений» на странице Настройки. Включаем генерацию тестовых трапов, для этих целей хорошо подходят температурные датчики. Переходим на страницу Термодатчики, берём канал «Датчик 1» (даже если к нему не подключен датчик), заполняем поле Памятка, в поле «Верхн. граница нормы, °C» указываем любое число, например, 61. В поле «Нижн. граница нормы, °C» указываем любое число, превышающее показания датчика, например 11 (если датчик не подключен его показания — 0). В поле «Периодическая посылка» выставляем значение 60. Нажимаем на кнопку «Применить изменения». Теперь NetPing присылает нам один раз в минуту SNMP TRAP сообщение.

Пример использования утилиты Trap Receiver для получения и обработки SNMP TRAP сообщений от устройств NetPing

Рисунок 1. Пользовательский интерфейс Trap Receiver

Обработка SNMP TRAP сообщений. Теория

Теперь, когда мы умеем принимать TRAP сообщения, научимся их обрабатывать, а именно различать SNMP TRAP сообщения по типам и выполнять различные действия. Утилита TRAP Receiver позволяет различать SNMP TRAP по следующим полям:

  • SNMP Community;
  • Generic TRAP Type;
  • Specific TRAP Type;
  • Адрес отправителя SNMP TRAP;
  • OID;
  • OID переменной (VarBind);
  • Значение переменной (VarBind).

Устройства NetPing могут посылать различные SNMP TRAP. Для определения их типа удобно использовать поле OID. Вот список OID основных SNMP TRAP сообщений устройств NetPing:

  • 1.3.6.1.4.1.25728.8300.2 – TRAP сообщения от «датчика тока»;
  • 1.3.6.1.4.1.25728.8400.9 – TRAP сообщения от датчика влажности;
  • 1.3.6.1.4.1.25728.8800.2 – TRAP сообщения от температурных датчиков;
  • 1.3.6.1.4.1.25728.8900.2 – TRAP сообщения от IO линий.

TRAP Receiver позволяет выполнять следующие действия при получении TRAP сообщений:

  • Послать TRAP сообщение;
  • Запустить приложение с аргументами командной строки;
  • Послать e-mail;
  • Отфильтровать TRAP;
  • Подать звуковой сигнал (проиграть wav файл).

Обработка SNMP TRAP сообщений. Практика

Получив теоретические представления о возможностях утилиты TRAP Receiver, переходим к практической части – примерам применения.

Пример фильтрации TRAP сообщений

Как видно на рисунке 1, утилита Trap Receiver получает TRAP сообщения от температурных датчиков с двух устройств: 10.60.0.5 и 10.60.0.7. Необходимо отфильтровать сообщения, приходящие от устройства 10.60.0.7, при этом другие типы TRAP с этого устройства должны приниматься.

Выполняем следующие действия для получения необходимого результата. Открываем Trap Receiver GUI, нажимаем Configure. На вкладке Actions нажимаем кнопку Add и в появившемся окне заполняем поля в соответствии с рисунком 2.

Рисунок 2. Настройки фильтрации TRAP сообщений по адресу

Нажимаем на кнопку Add, и затем на кнопку Apply конфигурационного окна. Мы создали правило, которое отбрасывает все SNMP TRAP сообщения от устройства 10.60.0.7, в соответствии с условием (Watch) – Sender IP. Следующим шагом уточним это правило, чтобы оно действовало только на TRAP сообщения от температурных датчиков. Для этого в конфигурационном окне на вкладке Actions нажимаем на кнопку Add ещё раз и заполняем поля в соответствии с рисунком 3.

Рисунок 3. Настройки фильтрации TRAP сообщений по OID

Обратите внимание на установленную галку «No Actions – Part of AND Group». Это означает, что действие будет выполнено только тогда, когда верны условия всех правил с одинаковыми именами. В нашем случае оба правила имеют имя filter_termo. Одно из правил должно иметь действие, у остальных должна стоять галка » No Actions – Part of AND Group «. Законченная конфигурация этого примера показана на рисунке 4.

Рисунок 4. Настройки фильтрации TRAP сообщений

Пример отправки e-mail

Рассмотрим пример отправки email уведомления при получении TRAP сообщения от температурного датчика. После применения фильтра из предыдущего примера Trap Receiver получает температурные TRAP сообщения только от 10.60.0.5. Будем отправлять письма при получении их.

Выполняем следующие действия для получения необходимого результата. Открываем Trap Receiver GUI, нажимаем Configure. На вкладке Email нажимаем кнопку Add и в появившемся окне заполняем поля в соответствии с рисунком 5. В данном примере используется сервис gmail для отправки электронной почты, вам потребуется аккаунт gmail.

Рисунок 5. Настройка почтового сервера и параметров сообщения

Поле Subject заполнено следующим образом:

Получен termo TRAP от %SENDERIP% %VBDATA1% (%VBDATA6%) %VBDATA2%.

Поле Message заполнено следующим образом:

Получен termo TRAP от %SENDERIP% датчик %VBDATA1% (%VBDATA6%) температура %VBDATA2%.

Между двумя символами % указываются специальные переменные. TRAP Receiver заменит их данными, полученными из TRAP сообщения, перед отправкой письма. Полный список переменных и их описание можно найти на странице документации Trap Receiver.

В результате при получении температурного TRAP нам придёт e-mail со следующим заголовком и телом:

Subject: Получен termo TRAP от 10.60.0.5 1 (term1) 40
Message: Получен termo TRAP от 10.60.0.5 датчик 1 (term1) температура 40

Для завершения настройки добавим действие на вкладке Actions конфигурационного окна. Действие настраивается в соответствии с рисунком 6.

Рисунок 6. Действие для отправки email

Проверьте свой почтовый ящик – там уже должны быть письма.

Пример проигрывания звукового файла

Проигрывание звуковых файлов при наступлении какого-либо события – это важная вещь. Но мы не будем тут подробно останавливаться на этом, так как настраивается этот функционал аналогично двум, показанным ранее, примерам. Вы добавляете действие на вкладке Actions, указываете условие (Watch) и ставите галку Sound. На этом всё.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *