Система мониторинга OpenNMS — одна из наиболее мощных и распространенных систем управления сетью (NMS).
OpenNMS — это свободное программное обеспечение мониторинга сетевой инфраструктуры уровня предприятия. Кроме обычной для Open Source-проектов поддержки сообществом пользователей, производитель предоставляет многоуровневое коммерческое сопровождение продукта: от внедрения до обеспечения технической поддержки 24х7 и обучения персонала.
OpenNMS реализована на Java, что обеспечивает кроссплатформенность: поддерживаются ОС семейств Linux, Solaris, Mac OS X, Windows, теоретически — любая с поддержкой Java SDK 1.4 и выше.
Обзор возможностей:
- Контроль сетевых служб (Web, DNS, DHCP, сервисы СУБД (Oracle, MSSQL, PostgreSQL и др.);
- Автоматическое обнаружении (discovery) сетевых устройств и контроль их состояния;
- Управление событиями (Syslog, SNMP trap и т.д.)
- Отправка уведомлений при изменении состояния объектов системы;
- Накопление и просмотр данных мониторинга;
- Распределенная архитектура;
- Интеграция с системами более высокого уровня;
Более подробный обзор, например, здесь: Система мониторинга OpenNMS
Вес (severity) событий в OpenNMS
Вес (severity) событий определяет код и уровень важности события в системе мониторинга.
Вес события может, например, использоваться для визуального выделения сообщений о событиях в журнале (логе).
События OpenNMS могут иметь следующий вес:
- Critical (7)
Критическое событие, множественный отказ инфраструктуры сети. Проблема требует незамедлительного решения.
Цвет: пурпурный: #C00 - Major (6)
Отказ узла сети, либо опасность такого отказа. Проблема требует незамедлительного рассмотрения.
Цвет: Красный: #F30 - Minor (5)
Отказ части функциональности узла сети (сервиса, интерфейса, источника питания). Узел сети требует внимания.
Цвет: Orange: #F90 - Warning (4)
Произошло событие. Следует обратить внимание, возможно требуется вмешательство.
Цвет: yellow: #FC0 - Normal (3)
Информационное сообщение. Действий не требуется.
Цвет: Темно зеленый: #360 - Cleared (2)
Отказ узла устранен. Работа восстановлена.
Цвет: Серый: #EEE - Indeterminate (1)
Вес события не важен, либо неизвестен/
Цвет: светло зеленый: #990
Настройка веса событий Trap PDU протокола SNMP
Вес событий в OpenNMS задается путем ранжирования входящих сообщений по правилам, заданным в файлах конфигурации для событий.
Для добавления обработчика события SNMP Trap PDU оборудования необходимо произвести следующие действия:
1) Создать файл события SNMP Trap PDU в $ONMS/etc/events Например, MyDeviceVendor.events.xml
<events xmlns="http://xmlns.opennms.org/xsd/eventconf">
<event>
<mask>
<maskelement>
<mename>id</mename>
<!-- замените {VendorID} на реальный, для вашего оборудования -->
<mevalue>.1.3.6.1.4.1.{VendorID}.1</mevalue>
</maskelement>
<maskelement>
<mename>generic</mename>
<mevalue>6</mevalue>
</maskelement>
<maskelement>
<mename>specific</mename>
<mevalue>5</mevalue>
</maskelement>
<varbind>
<!-- для фильтрации по значению переменной. Оключено.
<vbnumber>1</vbnumber>
<vbvalue>1011</vbvalue>
-->
<!-- для фильтрации по содержимому переменной -->
<vbnumber>2</vbnumber>
<vbvalue>~(.*)'warning'(.*)</vbvalue>
<vbvalue>~(.*)'off'(.*)</vbvalue>
<vbvalue>~(.*)'on'(.*)</vbvalue>
</varbind>
</mask>
<uei>uei.opennms.org/vendor/myvendor/traps/myVendorTrapNotification</uei>
<event-label>trap event: myVendorTrapNotification</event-label>
<descr>
<![CDATA[
<p>Received: %parm[#2]% </p>
]]>
</descr>
<logmsg dest='logndisplay'>
<![CDATA[
<p>Trap ID: %parm[#1]% </p>
<p>Received: %parm[#2]% </p>
]]>
</logmsg>
<severity>Warning</severity>
</event>
<event>
<mask>
<maskelement>
<mename>id</mename>
<!-- замените {VendorID} на реальный, для вашего оборудования -->
<mevalue>.1.3.6.1.4.1.{VendorID}.1</mevalue>
</maskelement>
<maskelement>
<mename>generic</mename>
<mevalue>6</mevalue>
</maskelement>
<maskelement>
<mename>specific</mename>
<mevalue>5</mevalue>
</maskelement>
<varbind>
<vbnumber>2</vbnumber>
<vbvalue>~(.*)'alarm'(.*)</vbvalue>
<vbvalue>~(.*)'not connected'(.*)</vbvalue>
<vbvalue>~(.*)'unknown'(.*)</vbvalue>
</varbind>
</mask>
<uei>uei.opennms.org/vendor/myvendor/traps/myVendorTrapNotification</uei>
<event-label>trap event: myVendorTrapNotification</event-label>
<descr>
<![CDATA[
<p>Received: %parm[#2]% </p>
]]>
</descr>
<logmsg dest='logndisplay'>
<![CDATA[
<p>Trap ID: %parm[#1]% </p>
<p>Received: %parm[#2]% </p>
]]>
</logmsg>
<severity>Critical</severity>
</event>
<event>
<mask>
<maskelement>
<!-- замените {VendorID} на реальный, для вашего оборудования -->
<mevalue>.1.3.6.1.4.1.{VendorID}.1</mevalue>
</maskelement>
<maskelement>
<mename>generic</mename>
<mevalue>6</mevalue>
</maskelement>
<maskelement>
<mename>specific</mename>
<mevalue>5</mevalue>
</maskelement>
<varbind>
<vbnumber>2</vbnumber>
<vbvalue>~(.*)'normal'(.*)</vbvalue>
</varbind>
</mask>
<uei>uei.opennms.org/vendor/myvendor/traps/myVendorTrapNotification</uei>
<event-label>trap event: myVendorTrapNotification</event-label>
<descr>
<![CDATA[
<p>Received: %parm[#2]% </p>
]]>
</descr>
<logmsg dest='logndisplay'>
<![CDATA[
<p>Trap ID: %parm[#1]% </p>
<p>Received: %parm[#2]% </p>
]]>
</logmsg>
<severity>Normal</severity>
</event>
</events>
2) подключить этот файл к конфигурации событий OpenNMS:
..
<event-file>events/MyDeviceVendor.events.xml</event-file>
..
Файл MyDeviceVendor.events.xml содержит три узла event с различными настройками фильтра mask, который применяется к переменным SNMP Trap PDU. Каждому узлу event соответствует свой severity (см. соответствующий тег в конце каждого узла)
Как нетрудно заметить, узлы event в примере практически идентичны, за исключением настройки фильтра. Фильтрация м.б. настроена к по совпадению значения переменной, так и по значению переменной для регулярного выражения (см. узел varbind).
В данном случае вес событий задается следующим образом:
- Normal — при наличие в содержимом переменной 2 строки 'normal'
- Critical — при наличие в содержимом переменной 2 строки 'alarm', 'not connected', 'unknown'
- Warning — при наличие в содержимом переменной 2 строки 'warning', 'on', 'off'
Шаблоны заголовка и описания сообщений в журнале для событий можно задать соответственно в узлах descr и logmsg.