Вес (severity) событий в OpenNMS

в 22:52, , рубрики: Песочница, метки: , ,

Система мониторинга 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.


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js