Я встречал довольно много коммутаторов в которых SNMP индексы могут сдвигаться, например в зависимости от количества добавленных VLAN, то есть первый порт уже будет не ifIndex.1, а к примеру ifIndex.5. На Mikrotik RB2011UiAS-RM порт sfp1 это ifIndex.1, а ether1 уже ifIndex.2. В Huawei коммутаторах и OLT видел вообще заоблачные цифры и плюс ко всему они тоже сдвигались. По этому чтобы не создавать для одной и той же модели устройства отдельные шаблоны, у Zabbix для этого есть решение.
Синтаксис элемента данных SNMP для динамический индексов:
<OID данных>["index","<OID индекса>","<искомая строка>"]
Приведу пример на одном из BDCOM P3310C, допустим порт устройства называется GigaEthernet0/1, убедимся в этом посмотрев описание портов:
snmpwalk -v2c -c public ixnfo.com ifDescr
У меня отобразилось:
IF-MIB::ifDescr.9 = STRING: GigaEthernet0/1
IF-MIB::ifDescr.10 = STRING: GigaEthernet0/2
IF-MIB::ifDescr.11 = STRING: GigaEthernet0/3
…
Теперь, чтобы получить трафик порта используем вместо SNMP OID ifInOctets.9 или ifHCInOctets.9 следующую строку:
ifHCInOctets["index","ifDescr","GigaEthernet0/1"]
Все остальное настраивается как обычно, например для скорости не забываем указать обработки «Пользовательский множитель 8» и «Изменение в секунду».
Аналогичным образом можно получать и другие данные.
Каждый Zabbix поллер использует свой кэш, по этому на устройство не будет идти лишняя нагрузка, так как после первого запроса, SNMP индекс будет браться из кэша.
