Примеры применения
13.09.2013

Получение SNMP TRAP сообщений на устройствах NetPing под FreeBSD

В этой статье будет показан пример использования утилит snmptrapd (net-SNMP) и snmptt для получения и обработки SNMP TRAP сообщений от оборудования NetPing. Статья имеет структуру пошаговой легко воспроизводимой инструкции.

Строить систему обработки SNMP TRAP сообщений будем на свежеустановленной FreeBSD (9.1). Для начала от вас требуется установить ОС, подключить сервер к сети, настроить ssh доступ, настроить звуковую карту (если планируется использовать звуковые уведомления).

Готово? Тогда приступаем.

Подготовка

Подключаемся к серверу по ssh, повышаем привилегии командой su.

Установка актуального дерева портов

root@trapper:/usr/ports # cd /usr/ports

root@trapper:/usr/ports # portsnap fetch extract

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

Эта утилита облегчает работу с портами. В результате будет установлен portinstall и пакеты, от которых он зависит, в том числе perl, который нам пригодится позже. В процессе инсталляции у вас будут спрашивать, какие опции включать для различных пакетов. На все вопросы нажимаем ОК, что оставит все данные в значении по умолчанию.

root@trapper:/usr/ports # cd ports-mgmt/portupgrade

root@trapper:/usr/ports/ports-mgmt/portupgrade # make install clean

root@trapper:/usr/ports/ports-mgmt/portupgrade # cd ../../

root@trapper:/usr/ports # rehash

NET-SNMP

    NET-SNMP – это набор утилит для решения множества задач, связанных с SNMP. Мы будем использовать демон snmptrapd для приёма SNMP TRAP сообщений от оборудования NetPing.

Установка NET-SNMP

Устанавливаем порт net-snmp (snmptrapd). Именно он слушает udp сокет 162 и будет принимать TRAP сообщения. Здесь также будут задавать вопросы про опции. Всё оставляем по умолчанию, однако следует обратить внимание на опцию PERL_EMBEDDED пакета net-snmp. Она должна быть включена (значение по умолчанию). Она понадобится для snmptt.

root@trapper:/usr/ports # portinstall net-mgmt/net-snmp

Настройка и пробный запуск net-snmp (snmptrapd)

Включаем автозапуск демона snmptrapd, добавляем опцию -On. Эта опция запрещает конвертацию OID в текстовое представление.

root@trapper:/usr/ports # echo 'snmptrapd_enable="YES"' >> /etc/rc.conf

root@trapper:/usr/ports # echo 'snmptrapd_flags="-On"' >> /etc/rc.conf

Создаём конфигурационный файл для snmptrapd.

С этой конфигурацией snmptrapd будет принимать SNMP TRAP от всех устройств с community SWITCH (community по умолчанию на устройствах NetPing) и складывать их в файл /var/log/snmptrapd.log.

root@trapper:/usr/ports # mkdir /usr/local/etc/snmp

root@trapper:/usr/ports # echo 'pidFile /var/run/snmptrapd.pid' > /usr/local/etc/snmp/snmptrapd.conf

root@trapper:/usr/ports # echo 'authCommunity log,execute,net SWITCH' >> /usr/local/etc/snmp/snmptrapd.conf

root@trapper:/usr/ports # echo '[snmp] logoption f /var/log/snmptrapd.log' >> /usr/local/etc/snmp/snmptrapd.conf

root@trapper:/usr/ports # echo '[snmp] logoption s 1' >> /usr/local/etc/snmp/snmptrapd.conf

Запускаем демон snmptrapd:

root@trapper:/usr/ports # cd /usr/local/etc/rc.d

root@trapper:/usr/local/etc/rc.d # ./snmptrapd restart

На данном этапе сервер готов принимать SNMP TRAP сообщения от устройств NetPing. Для проверки нам нужно настроить NetPing, чтобы он отправлял SNMP TRAP сообщения на сервер. Для этого:

1)На устройстве NetPing указываем IP адрес нашего сервера в поле "Адрес для посылки trap сообщений" на странице Настройки;

2) Включаем генерацию тестовых трапов, для этих целей хорошо подходят температурные датчики. Переходим на страницу «Термодатчики». Выбираем канал "Датчик 1" (даже если к нему не подключен датчик), заполняем поле «Памятка», в поле "Верхн. граница нормы, °C" указываем любое число, например, 61. В поле "Нижн. граница нормы, °C" указываем любое число выше показаний датчика, например, 11. В поле "Периодическая посылка" выставляем значение 60.

3)Нажимаем на кнопку "Применить изменения" на странице «Термодатчики». Теперь NetPing будет присылать  SNMP TRAP сообщение на сервер один раз в минуту.

Если всё сделано правильно, эти сообщения должны откладываться в файл /var/log/snmptrapd.log.

Их вид:

10.20.0.252: Enterprise Specific trap (.1) Uptime: 5:03:02.34, .1.3.6.1.4.1.25728.8800.2.1.0 = INTEGER: 1, .1.3.6.1.4.1.25728.8800.2.2.0 = INTEGER: 0, .1.3.6.1.4.1.25728.8800.2.3.0 = INTEGER: 0, .1.3.6.1.4.1.25728.8800.2.4.0 = INTEGER: 11, .1.3.6.1.4.1.25728.8800.2.5.0 = INTEGER: 61, .1.3.6.1.4.1.25728.8800.2.6.0 = STRING: "test", .1.3.6.1.4.1.25728.90.1.0 = ""

Если файл /var/log/snmptrapd.log пуст то необходимо проверить настройки, а также получение SNMP trap сообщений сервером с помощью утилиты tcpdump.

snmptt

Для приведения сообщений от snmptrapd в более удобный вид, создана утилита snmptt. Переходим к snmptt.

Установка snmptt

root@trapper:/usr/local/etc/rc.d # cd /usr/ports

root@trapper:/usr/ports # portinstall net-mgmt/snmptt

Настройка snmptt

После инсталляции открываем для редактирования файл /usr/local/etc/snmp/snmptt.ini любым редактором, например, командой edit /usr/local/etc/snmp/snmptt.ini

В этом файле правим директиву mode. Строка должна иметь вид:

mode = daemon

В самом низу конфигурационного файла правим блок snmptt_conf_files

Он должен иметь вид:

snmptt_conf_files = <<END

/usr/local/etc/snmp/snmptt.conf.generic

/usr/local/etc/snmp/netping.conf

END

Выходим из редактора edit командой ctr+c exit. Вы можете скачать готовый файл snmptt.ini в конце статьи.

Теперь нужно подготовить файл /usr/local/etc/snmp/netping.conf. Этот файл содержит определения SNMP TRAP сообщений, посылаемых устройствами NetPing. Этот файл задаёт действия, которые будут выполнены при получении SNMP TRAP. Вы можете скачать готовый файл netping.conf в конце статьи, либо его можно изготовить самостоятельно. Для этого нужно скачать MIB файл вашего устройства NetPing и подать его на вход утилите snmpttconvertmib (она устанавливается вместе с snmptt).

Включаем автозапуск snmptt:

root@trapper:/usr/ports # echo 'snmptt_enable="YES"' >> /etc/rc.conf

Перезаписываем конфигурацию snmptrapd. Старая конфигурация была ориентирована на сохранение сообщений в файл, новая будет передавать их в snmptt.

root@trapper:/usr/ports # echo 'pidFile /var/run/snmptrapd.pid' > /usr/local/etc/snmp/snmptrapd.conf

root@trapper:/usr/ports # echo 'traphandle default /usr/local/sbin/snmptthandler' >> /usr/local/etc/snmp/snmptrapd.conf

root@trapper:/usr/ports # echo 'disableAuthorization yes' >> /usr/local/etc/snmp/snmptrapd.conf

Создаём директории, которые будет использовать snmptt:

root@trapper:/usr/ports # mkdir /var/log/snmptt

root@trapper:/usr/ports # mkdir /var/spool/snmptt

Перезапускаем snmptrapd (т.к. его конфигурация изменилась) и запускаем демон snmptt:

root@trapper:/usr/ports # cd ../local/etc/rc.d

root@trapper:/usr/local/etc/rc.d # ./snmptrapd restart

root@trapper:/usr/local/etc/rc.d # ./snmptt restart

Если вы использовали файл netping.conf из этой статьи, то в файле /var/log/snmptt/snmptt.log должны появиться сообщения вида:

Sun Jun 16 14:11:51 2013 .1.3.6.1.4.1.25728.8800.2.0.1 Normal "Status Events" 10.20.0.252 - Thermo sensor crossed threshold. sensor: 1 (test) host: 10.20.0.252 temperature: 0 threshold low: 11 threshold high: 61

E-mail уведомления

Теперь добавим более интересную функцию - отправка e-mail уведомлений при получении TRAP сообщения. В данном примере скрипт для отправки e-mail написан на языке JavaScript, для его интерпретации используется nodejs. Если у вас другие предпочтения, то вы можете найти в интернете пример скрипта на любом языке программирования. Чтобы взаимодействовать с нашей системой скрипт должен иметь имя emailer и принимать один адргумент командной строки - текст сообщения.

Устанавливаем nodejs и менеджер пакетов npm:

root@trapper:/usr/local/etc/rc.d # cd /usr/ports

root@trapper:/usr/ports # portinstall www/node

root@trapper:/usr/ports # portinstall www/npm

root@trapper:/usr/ports # rehash

Создаём директорию для скрипта и устанавливаем библиотеку nodemailer;

root@trapper:/usr/ports # mkdir /usr/local/bin/nodescripts

root@trapper:/usr/ports # cd /usr/local/bin/nodescripts

root@trapper:/usr/local/bin/nodescripts # npm install nodemailer

Теперь вам нужно скачать скрипт emailer (в конце статьи), положить его в папку /usr/local/bin/nodescripts, и отредактировать его. Скрипт использует почтовый сервер gmail для отправки сообщений.

Редактируем следующие поля:

auth: {

user: "foobar@gmail.com", //аккаунт gmail

pass: "zzz" //пароль

}

var mailOptions = {

from: "Net Monitor <foobar@gmail.com>", // Адрес отправителя (аккаунт)

to: "receiver@foo.bar", // Список получателей, через запятую

subject: "Alarm", // Subject line

text: message // plaintext body

}

Скрипт emailer - это просто текстовый файл в котором в открытом виде лежит пароль от аккаунта gmail, чтобы его скрыть от посторонних глаз меняем права доступа к файлу:

root@trapper:/usr/local/bin/nodescripts # chmod 600 /usr/local/bin/nodescripts/emailer

Если вы используете файл netping.conf, приложенный к данной статье, то вы уже должны увидеть email сообщения в вашем почтовом ящике. Если же вы создали файл netping.conf самостоятельно, то в него необходимо добавить директиву EXEC для вызова скрипта emailer - скачайте файл netping.conf и сделайте по аналогии.

Если писем нет, то попробуйте запустить скрипт emailer из командной строки:

root@trapper:/usr/local/bin/nodescripts # node emailer "test email"

Звуковые уведомления

Ещё один пример - проигрывание mp3 файла при получении TRAP сообщения. Этот пример использует то же принцип, что и предыдущий – использование директивы EXEC для запуска внешнего приложения. Для проигрывания аудиофайлов нам понадобится плеер - mplayer, переходим к его установке. Обратите внимание на опции mplayer. У него есть опциональный GUI интерфейс, который за собой тянет очень много зависимостей, для большинства серверов это не нужно. Отключите опции mplayer: GUI, и все, у которых в описании есть слово X11.

root@trapper:/usr/ports # portinstall -C multimedia/mplayer

После установки плеера создаём директорию /usr/mp3

root@trapper:/usr/ports # mkdir /usr/mp3

И загружаем в неё файл alarm.mp3, возьмите любой файл mp3.

По аналогии с директивой EXEC для запуска скрипта emailer, в файл /usr/local/etc/snmp/netping.conf добавляем строку

EXEC /usr/local/bin/mplayer /usr/mp3/alarm.mp3

Для одного trap сообщения можно указать несколько директив EXEC.

Ссылки

Документация snmptt: http://snmptt.sourceforge.net/docs/snmptt.shtml

Страница проекта Nodemailer, в директории examples есть различные примеры использования: https://github.com/andris9/Nodemailer


  • Все устройства

Основные теги


Каталог устойств мониторинг серверных комнат и шкафов
Все устройства
Устройство UniPing v3
Устройство UniPing server solution v3/SMS
Устройство NetPing 2/PWR-220 v1/SMS
Устройство NetPing IO v2
Устройства NetPing
Каталог датчиков для устройств NetPing
Устройство NetPing 8/PWR-220 v3/SMS
Устройство NetPing 2/PWR-220 v3/ETH
Устройство NetPing 2/PWR-220 v2/SMS
Устройство NetPing 4/PWR-220 v3/SMS
Устройство NetPing SMS
Устройство NetPing /PWR-220 v3/ETH
Адаптер WiFi VAP11N
Коммутатор PS104GT
Устройство NetPing Mini-UPS
Коммутатор NP-SM4
Сплиттер POE 12В (стандарта 802.3af)
IRC-TR v2 (ИК модуль расширения)
Каталог устройств удалённого управления и распределения электропитания NetPing
Устройство UniPing server solution
Устройство UniPing server solution v3
Датчик разбития стекла (Стекло-3 ИО 329-4), 2м
Переходник для NetPing IO v2
Блок питания 48В 1,5А (мод.HRS20005)
Датчик температуры TS, 1м
Датчик температуры, (T811), 2м
Датчик температуры WT, 1м
Датчик протечки, модель 2605, 2м
Датчик протечки H2О
Датчик температуры 1-wire, (THS), 2м
МАЯК-12-СТ
Датчик движения (PYRONIX COLT QUAD PI ПИК детектор), 2м
Датчик движения (SWAN-QUAD ИК детектор квадросенсор), (2м)
BM8070D Силовое реле 16А/250В на DIN-рейку
MP701 Исполнительный элемент (4 независимых канала по 2 кВт 10А)
Датчик дыма комбинированный (дым/тепло) ИП 212/101-2М-A1R с базой Е412NL
МОЛЛЮСК-12/1,5
Внешний ИБП SKAT-12DC-1.0 Li-ion
ИКС-1 извещатель охранный инфракрасный активный однолучевой
Датчик охранный (Извещатель охранный ИО102-20/Б2П, 2м)
Блок розеток SNR-PDU-08S-1
Устройство NetPing 2/PWR-220 v4/SMS
Устройство UniPing server solution v4/SMS
Устройство NetPing 8/PWR-220 v4/SMS
VT592 кабельный датчик протечки
WLC10 кабель протечки
NetPing Connection board v2 (коммутационная плата для UniPing v3)
Инжектор питания POE (стандарта 802.3af)
NetPing датчик наличия электропитания 995S1
Устройство NetPing 2/PWR-220 v12/ETH
Устройство NetPing 2/PWR-220 v13/GSM3G
Датчик наличия 220В (мод. HRS05005), 1.5м
NetPing удлинитель-разветвитель 1-wire на 5 портов, модель R912R1
NetPing датчик качества электропитания 1-wire 910S20
PLController R15250 силовое реле 15A/250В на DIN-рейку
NetPing адаптер датчиков с аналоговым интерфейсом 0-20мА, модель 886A01
Устройство NetPing server solution v5
Устройство NetPing ИК модуль, модель 3801
Устройство NetPing server solution v5/GSM3G
Устройство NetPing 4/PWR-220 v6.1/GSM3G
Устройство NetPing 4/PWR-220 v6.2/GSM3G
NetPing IO v3
NetPing Input+Relay v1
NetPing NP-GB322
Устройство NetPing 4/PWR-220 v6.4/ETH
Датчик удара PI-99D, 1м
NetPing Monitoring Server 90Z02
Датчик удара Z09-1
NetPing датчик освещенности 813S1
NetPing v4
NetPing Relay board (плата реле для UniPing v3)
▼ Все теги
Новинки
NetPing датчик освещенности 813S1
NetPing датчик освещенности 813S1— это компактный датчик наличия светового потока, предназначенный для подробнее...

Цена: 2 340 руб.

NetPing Zabbix server (Software)
ISO-образ, позволяющий протестировать и развернуть преднастроенную систему мониторинга Zabbix с возможностью подробнее...

Цена:  руб.

Датчик удара Z09-1
Датчик удара позволяет регистрировать удары и вибрации поверхности, на которой он установлен, а также подробнее...

Цена: 1 045 руб.

NetPing Monitoring Server 90Z02
NetPing Monitoring Server 90Z02 — это контроллер на базе полноценного компьютера с предустановленной подробнее...

Цена: 42 500 руб.

Источник питания СКАТ MOLLUSK-VRK 12/2
Адаптер питания может использоваться для питания устройств NetPing и некоторых моделей управляемых коммутаторов.Выходное подробнее...

Цена: 950 руб.

Устройство NetPing 4/PWR-220 v6.4/ETH
Устройство удаленного управления розетками электропитания по сети Ethernet/Internet (IP PDU).4 канала подробнее...

Цена: 15 730 руб.

NetPing NP-GB322
Коммутатор Ethernet на 5 портов 10/100/1000 BASE-TX с поддержкой PoE (электропитание по Ethernet-кабелю) 5 подробнее...

Цена: 4 290 руб.

NetPing Input+Relay v1
Компактное устройство удаленного мониторинга датчиков по сети Ethernet/Internet. Позволяет удаленно подробнее...

Цена: 6 200 руб.

Устройство NetPing 4/PWR-220 v6.2/GSM3G
Устройство удаленного управления розетками электропитания по сети Ethernet/Internet (IP PDU) c поддержкой подробнее...

Цена: 20 280 руб.

Устройство NetPing 4/PWR-220 v6.1/GSM3G
Устройство удаленного управления розетками электропитания по сети Ethernet/Internet (IP PDU) c поддержкой подробнее...

Цена: 20 280 руб.

NetPing блок розеток 1-wire 888S0201
Блок розеток предназначен для удаленного управления нагрузкой. Устройство не является самостоятельным, подробнее...

Цена: 10 980 руб.

Устройство NetPing ИК модуль, модель 3801
ИК-контроллер для дистанционного и автоматического управления устройствами с инфракрасным интерфейсом подробнее...

Цена: 8 580 руб.

Устройство NetPing server solution v5
Устройство удаленного мониторинга датчиков по сети Ethernet/Internet. Позволяет удаленно получать информацию подробнее...

Цена: 18 000 руб.

Устройство NetPing server solution v5/GSM3G
Устройство удаленного мониторинга датчиков по сети Ethernet/Internet. Позволяет удаленно получать информацию подробнее...

Цена: 27 300 руб.

PLController R15250 силовое реле 15A/250В на DIN-рейку
Силовое реле в корпусе для крепления на DIN-рейку предназначено для удаленной коммутации мощной нагрузки.Напряжение подробнее...

Цена: 1 429 руб.

NetPing адаптер датчиков с аналоговым интерфейсом 0-20мА, модель 886A01
Адаптер предназначен для подключения аналоговых датчиков, передающих сигнал изменением протекающего подробнее...

Цена: 3 354 руб.

NetPing датчик качества электропитания 1-wire 910S20
Датчик предназначен для мониторинга качества электропитания в розетке. Датчик должен быть подключен подробнее...

Цена: 2 240 руб.

NetPing удлинитель-разветвитель 1-wire на 5 портов, модель R912R1
Активный удлинитель-разветвитель для подключения датчиков 1-wire к устройствам NetPing5 портов для подключения подробнее...

Цена: 1 400 руб.

Устройство NetPing 2/PWR-220 v12/ETH
Управляемый блок удаленного распределения питания по сети Ethernet/Internet (IP PDU)2 независимые управляемые подробнее...

Цена: 8 973 руб.

Устройство NetPing 2/PWR-220 v13/GSM3G
Управляемый блок удаленного распределения питания по сети Ethernet/Internet (IP PDU) c поддержкой управления подробнее...

Цена: 15 700 руб.

NetPing датчик наличия электропитания 995S1
Датчик позволяет определить наличие напряжения в розетке питания. Выполнен в корпусе блока питания с подробнее...

Цена: 1 224 руб.

WLC10 кабель протечки
Чувствительный кабель для использования совместно с датчиком VT592. Может быть смонтирован в труднодоступных подробнее...

Цена: 6 700 руб.

VT592 кабельный датчик протечки
Датчик предназначен для работы совместно с кабелем протечки WLC10. Возможность подключения датчика к подробнее...

Цена: 3 800 руб.

-+ руб. руб.
Итого руб.

Данные о заказе