Опрос свичей посредством SNMP

В Ubilling начиная с релиза 0.4.1 появилась возможность опроса активного сетевого оборудования посредством SNMP (требует установленного net-snmp). Механика опроса шаблонизирована и позволяет опрашивать оборудование по любым OID-ам. Также модуль «Опрос свичей» использует в своей работе кеширование результатов, что позволяет сделать отображение результатов приемлемым по времени.

Поддерживаемое из коробки оборудование

  • ZyXEL GS-4012F
  • ZyXEL GS-3012F
  • ZyXEL ES-2108
  • ZyXEL ES-2108G
  • Zyxel GS-2200-24
  • Cisco Catalyst 3500
  • Cisco Catalyst WS-C3548-XL-EN
  • Cisco-2940-8TT-S
  • Foxgate S6248-S4
  • Foxgate S6224-S4
  • Foxgate S6208-S1
  • Foxgate S6424-S2C2
  • Foxgate-S6224-S2
  • Foxgate-S-6008-S1L2
  • D-Link DES-3200-10
  • D-Link DES-3200-18
  • D-Link DES-3200-26
  • D-Link DES-3200-28
  • D-Link DES-3526
  • D-Link DES-1228/ME
  • D-Link DGS-1100-6/ME
  • D-Link DGS-3120-24sc
  • D-Link DES-3200-28F
  • D-Link DGS-1510-52
  • D-Link-DGS-1210-20
  • D-Link-DES-2108
  • D-Link-DES-3010G
  • D-Link-DES-3026
  • D-Link-DES-3226S
  • D-Link-DGS-3100-24TG
  • D-Link-DGS-1500-20
  • D-Link-DGS-3000-10TC
  • D-Link-DGS-3024
  • D-Link-DGS-3200-10
  • D-Link-DES-3028
  • Dlink-DES-1210-26
  • Dlink-DES-1210-28
  • Dlink-DGS-1210-10
  • Dlink-DGS-1210-12TS
  • HP ProCurve Switch 2626
  • HP ProCurve Switch 2650
  • HP ProCurve Switch 2524
  • HP ProCurve Switch 2824
  • Dell PowerConnect 5324
  • Alcatel LS-5224
  • Huawei S2326TP
  • Extreme Networks Summit 200-24
  • ZIZITRA
  • TP-LINK TL-SG5412F
  • TP-LINK TL-SL5428E v2
  • Edge-Core ECS3510-28T
  • Huawei s232tp_c05
  • Eltex MES1124MB
  • Eltex MES2124MB
  • Eltex MES2124F
  • Eltex MES3108F
  • 3COM-3250

И много-много других, о которых мы уже задолбались писать. Давайте вы сами посмотрите что будет работать из коробки заглянув в директорию config/snmptemplates?

Настройка

В общем случае настройка сводиться к добавлению модели свича с правильным шаблоном SNMP

После чего следует добавить устройство с нужной моделькой и указанным SNMP комьюнити, а также подстрокой SWPOLL в описании, которая сигнализирует Ubilling о том, что для данного устройства следует применить стандартные механизмы опроса относительно выбранного шаблона.

Если все добавлено верно - у свича в колонке действия должна появиться иконка «Опрос при помощи SNMP»

Набор параметров запрашиваемых с устройства, полностью зависит от выбранного шаблона и может быть практически произвольным. Также возможно отображение FDB с устройства.

Учитывая, что опрос устройства происходит не слишком быстро, для ускорения отображения результатов используется механика кеширования. Для периодического опроса всех устройств, с целью заполнения кеша сырых данных следует использовать вызов swpoll из API удаленного вызова процедур.

Формат шаблона для опроса устройства

Шаблоны всех устройств лежат в /config/snmptemplates/ и имеют например какой-то такой вид:

megaswitch9000
[define]
DEVICE="MegaSwitch-9000 2ports"
FDB=true
FDB_MODE=default
 
[PORTSTATE]
NAME="Port states"
OIDS=".1.3.6.1.2.1.2.2.1.8.1,.1.3.6.1.2.1.2.2.1.8.2"
PARSER=sp_parse_zyportstates
 
[UPTIME]
NAME="Uptime"
OIDS=".1.3.6.1.2.1.1.3.0"
PARSER=sp_parse_raw

Как видим файл состоит из секций.
Секция [define] является обязательной. В ней описываются такие характеристики устройства как DEVICE (полное наименование модели) и булевый параметр FDB - означающий, что для устройства следует попытаться достать FDB а также необязательный параметр FDB_MODE указывающий на метод опроса FDB таблиц. Он может принимать значения default (по-умолчанию) или dlp (для некоторых моделей свитчей Dlink) и tlp5428ev2 для соответствующего tp-link. В случае, если параметр FDB_MODE не указан, по-умолчанию будет считаться, что он установлен в значение default. Также существует необязательная опция FDB_IGNORE_PORTS указывающая порты, MAC адреса находящиеся за которыми будут исключены при парсинге FDB
Далее каждая из секций описывает уникальный набор параметров, по которому будет опрашиваться устройство. Имя секции особого значения не имеет и просто должно быть уникальным. Каждая секция состоит из как минимум трех обязательных переменных. Это NAME - отображаемое название опрашиваемой характеристики (будет локализовано), OIDS - список OID-ов через запятую которые будут опрошены для конкретной модели и PARSER - парсер данных, через который будут пропущены данные полученные от каждого OID-а в текущей секции. Из вышеприведенного примера можно заключить, что данный шаблон будет отображать состояние двух первых портов свича и его аптайм а также пытаться показывать таблицу соответствия MAC-ов по портам.
Начиная с релиза Ubilling 0.8.5 также можно хранить ваши шаблоны в content/documents/mysnmptemplates/. Они будут иметь приоритет перед базовыми и будут нормально переживать обновления биллинга. Также, если вам требуется изменить поведение какого-то существующего шаблона (например игнорируемые FDB порты) потрудитесь перед модификацией, скопировать его в content/documents/mysnmptemplates/ и редактировать его уже там.

На данный момент доступны следующие парсеры полученных из OID данных:

  • sp_parse_raw - данные показываются как есть без особой обработки
  • sp_parse_zyportbytes - счетчики байт/пакетов на портах
  • sp_parse_zyportdesc - строковые описания портов
  • sp_parse_zyportstates - состояние портов
  • sp_parse_ciscocpu - нагрузка на CPU в %
  • sp_parse_ciscomemory - количество занятой памяти в Мб
  • sp_parse_eltex_acpower - напряжение AC питания свитчей Eltex
  • sp_parse_eltex_dcpower - напряжение DC питания свитчей Eltex
  • sp_parse_eltex_battery - уровень заряда АКБ свитчей Eltex
  • sp_parse_fxportstates - состояние портов для некоторых Foxgate 60xx
  • sp_parse_fxportbytes - счетчики байт/пакетов на портах для некоторых Foxgate 60xx
  • sp_parse_cable_tester - парсер кабельного тестера для свитчей Dlink

А если требуется делать еще и snmpset?

Начиная с релиза 0.8.4 появилась возможность в процессе опроса, делать устройствам snmp set. Для этого в каждой секции за исключением «define» добавлена возможность указать опцию SETOIDS в формате:

SETOIDS="oid|type|value,oid|type|value"

Где oid является собственно oid-ом, value является значением которое будет установлено, а type указывает на тип и может принимать следующие значения:

  • i INTEGER
  • u INTEGER UNSIGNED
  • s STRING
  • x HEX STRING
  • d DECIMAL STRING
  • n NULLOBJ
  • o OBJID
  • t TIMETICKS
  • a IPADDRESS
  • b BITS

Следует также заметить, что секция с SETOIDS может быть самодостаточной и не требует указания других опций, таких как NAME, OIDS или скажем PARSER. В таком случае, она просто проведет по очереди все write операции и завершит свою работу. Вот пример указания port description для двух портов:

[portnames]
SETOIDS=".1.3.6.1.2.1.31.1.1.1.18.4|s|testport1,.1.3.6.1.2.1.31.1.1.1.18.5|s|testport2"

Хотя да, никто не запрещает быть ей при этом обычной интерактивной секцией и показывать в процессе своей работы какие-то результаты. Например как-то так:

[portnames]
SETOIDS=".1.3.6.1.2.1.31.1.1.1.18.4|s|testport1,.1.3.6.1.2.1.31.1.1.1.18.5|s|testport2"
NAME="Ports"
OIDS=".1.3.6.1.2.1.31.1.1.1.18.4,.1.3.6.1.2.1.31.1.1.1.18.5"
PARSER=sp_parse_raw

В таком случае, следует всегда помнить о том, что сначала всегда выполняются все snmp set операции, а потом уже производиться опрос и рендер указанных в опции OIDS данных.

Генератор шаблонов

Также камрадом DemonidZe был запилен генератор шаблонов опроса оборудования, для тех кому лень самому разбираться.

switchpoller.txt · Последние изменения: 2017/09/23 12:44 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki