Мониторинг оборудования Eltex по протоколу SNMPv3
В этой статье речь пойдет про мониторинг оборудования Eltex по протоколу SNMPv3 в Zabbix. Ранее мы рассматривали устройство протокола SNMPv3, теперь же сосредоточимся на прикладной задаче по мониторингу коммутаторов и маршрутизаторов.
Особенность оборудования Eltex состоит в том, что разные его серии имеют различные наборы команд для настройки SNMPv3, поэтому приходится держать под рукой несколько шаблонов конфигураций. Благо, документация проиндексирована и легко находится - и для маршрутизаторов, и для коммутаторов.
Например, для маршрутизаторов серии ESR, конфигурация выглядит следующим образом:
snmp-server
snmp-server user snmpv3vianame
access ro
authentication algorithm sha1
authentication access priv
authentication key ascii-text authv3sha
privacy algorithm aes128
privacy key ascii-text privv3aes
enable
exit
А для коммутаторов серии MES 23XX немного иначе:
snmp-server server
snmp-server engineID local default
snmp-server group snmpv3group v3 auth
snmp-server group snmpv3group v3 priv
snmp-server user snmpv3user snmpv3group v3 auth sha authv3sha priv-protocol aes-128-cfb priv privv3aes
После настройки проверим работоспособность протокола в консоли сервера мониторинга (пакеты snmp и snmp-mibs-downloader должны быть установлены):
snmpwalk -v 3 -u snmpv3user -l authPriv -A authv3sha -a sha -x aes -X privv3aes 192.168.1.1 1.3.6
Интерфейс Zabbix 5.0 предполагает настройку параметров SNMPv3 в момент создания узла сети. Для масштабируемости задействуем пользовательские макросы:
Пора наполнять шаблоны. Для обнаружения и фильтрации сетевых интерфейсов я применяю устоявшийся метод, подходящий большинству сетевых устройств разных производителей, более-менее одинаково реализующих ветку IF-MIB в дереве OID-объектов. Моё выражение для LLD (Low Level Discovery – низкоуровневого обнаружения) выглядит следующим образом (в дистрибутивы GNU/Linux файл IF-MIB встроен изначально, поэтому можно обращаться к OID интерфейсов по их именам без импорта MIB-файлов):
discovery[{#IFDESCR},IF-MIB::ifDescr,{#IFALIAS},IF-MIB::ifAlias,{#IFADMINSTATUS},IF-MIB::ifAdminStatus]
Такое выражение позволяет гибко фильтровать нежелательные интерфейсы:
При обнаружении будут отфильтрованы следующие интерфейсы:
* выключенные с помощью команды shutdown (adminstatus<>1) – по фильтру #IFADMINSTATUS;
* не имеющие текстового описания – по #IFALIAS;
* имеющие в текстовом описании символ * – по #IFALIAS;
* являющиеся служебными или техническими – по #IFDESCR.
Такой подход к фильтрации освобождает систему мониторинга от сбора ненужных данных и избавляет её администраторов от анализа статистики интерфейсов, не представляющих интереса.
Наполнение LLD стандартно:
Устройства обычно учитывают объемы сетевого трафика в байтах. Чтобы получать значения в битах, необходимо использовать предобработку «Пользовательский множитель» для умножения получаемых значений на 8. Предобработка «Изменение в секунду» позволяет высчитывать дельту трафика за единицу времени, чтобы в итоге получить кривую трафика за условную единицу времени, равную частоте опроса:
Мой вариант LLD содержит 5 прототипов элементов данных:
Скорость и статус необходимы для корректного формирования прототипов триггеров:
Ну и, конечно же, визуализация трафика для каждого обнаруженного интерфейса:
С наполнением шаблонов не возникает проблем благодаря наличию документации на маршрутизаторы ESR и коммутаторы MES23xx. Для простоты и независимости от MIB-файлов я использую цифровые OID.
Для маршрутизатора подобраны базовые метрики, всё остальное можно добавить по своему усмотрению:
Для коммутатора всё аналогично:
Есть тонкость с отображением времени работы (Timeticks должен иметь предобработку «Пользовательский множитель» 0.01, потому что сетевое оборудование измеряет свой uptime в сотых долях секунд). Кроме того, поскольку у рассматриваемых устройств нет OID, содержащего точное название модели устройства, приходится извлекать нужное значение из описательного OID 1.3.6.1.2.1.1.0 с помощью предобработки «Регулярное выражение». Это ведет к тому, что для каждой модели серии MES23XX придется создавать свой шаблон и настраивать элемент данных Model. Этот вариант мне кажется более гибким, чем если бы пришлось задействовать текстовые поля в конфигурации SNMP каждого обслуживаемого устройства:
В триггерах, помимо простых реакций, стоит заложить оповещение об отсутствии отклика по SNMP при наличии отклика по ICMP. Это частая ситуация, например, при задвоении IP-адресов, отсутствии корректных настроек SNMP на устройстве, блокировке трафика межсетевыми экранами и т. д.:
Последнее, на что нужно обратить внимание, - сбор инвентарных данных. Zabbix не самый подходящий продукт для учета оборудования, однако если включать сбор инвентарных данных в узлах сети, он и в этом окажется полезным:
Готовые шаблоны для ESR-21 и MES23XX, созданные в Zabbix 5.2, можно легко адаптировать под свои устройства и специфику задач.
P.S.: Шаблоны размещу на share.zabbix.com, как только смогу войти в аккаунт на этой площадке.