Добрый день, есть работающий l2pt/ipsec туннель, есть огромное желание мониторить его zabbix'ом, но все бы нечего если бы oid не менялся при разрыве-реконекте его:
В ifTable они светятся? Вот по ifTable вычислять или по ifDescr там в документации хороший пример про вычисление памяти потреблённой апачем. Там по OID hrSWRunPath вычисляют какой сейчас у апача PID и подставляют полученное значение в hrSWRunPerfMem. Вот и вы так же сделайте только вместо hrSWRunPath воспользуйтесь, наверно, ifDescr (или 1.3.6.1.2.1.2.2.1.2 если циферки больше нравятся) и полученный индекс подставьте уже в ifOperStatus (или в другой OID который вас интересует).
Ок. Узнал. ifAlias у него "iptv". Точно так же я узнаю ifInOctets или ifOperStatus. Допустим после перезапуска ID изменился но ifAlias, то всегда одинаковый вот по нему и вычислю новый ID с помощью забиксовской приблуды для узнавания динамических идентификаторов.
Чтоб узнать сколько байт принято воспользуюсь ifInOctets["index","ifAlias","iptv"]
Чтоб узнать в дауне интерфейс или в апе (down/up) воспользуюсь ifOperStatus["index","ifAlias","iptv"]
Заббикс видимо сделает snmpwalk по ifTable затем у найденных интерфейсов узнает ifAlias и у того у которого ifAlias=="iptv" возьмёт идентификатор и подставит в ifOperStatus или в ifInOctets или... Да во что угодно.
Чтоб назначить интерфейсу ifAlias наверно его надо как-то назвать... Ну там My_Tunnel или что-то вроде этого. Наверно ether1 это алиас к eth1 или ко второму порту... Ну посмотрите какой ifAlias у вашего тоннеля и составьте ключ соответствующим образом. У меня алиас "iptv" и чтоб узнать сколько там входящего траффика на этом интерфейсе я должен проверять ifInOctets["index","ifAlias","iptv"]
@karabanov да, получилось, но как-то частично, т.к mikrotik поднимает виртуальный интерфейс и ему не возможно задать алиас, заменил алиас на ifDescr в итоге получил Upload ifOutOctets["index","ifDescr",""] данные снимаются замечательно, а вот на входящий получаем такой вид ifInOctets["index","ifDescr",""], но после пере поднятия канала данные перестали сниматься habrastorage.org/files/661/95c/451/66195c451cf046c... пробую дальше....
Ну вот и хорошо :-)
Только смущает пустая строка в качестве ifDescr... Если появится ещё одни интерфейс у которого ifDescr пустая строка будет не очень хорошо.
Видите ifDescr это тип порта его никак не поменяешь, а ifAlias это название/описание (называйте, как хотите) оно даётся для удобства, чтоб было ясно для каких целей используется интерфейс (в данном случае в качестве UP-Link).
На этой циске она задаётся командой "description UP-Link". На некоторых D-Link-ах, например, ifAlias название/описание (называйте, как хотите) задаётся командой "config ports 26 description Up-Link", а ifDescr у него "D-Link DES-3200-26 Port 26". В микротеках наверняка есть некий параметр "name" (или что-то вроде этого) который позволяет задать осмысленное имя интерфейсу. Вот если его задать ifAlias и ifDescr всё-равно остаются пустыми? В WINbox-е измените имя интерфейса и запросите по SNMP ifAlias и ifDescr, неужели они не изменятся?
@karabanov не как нет при подключении каждого туннеля формируется интерфейс именем клиента т.е строка в zabbix'e выглядит так ifInOctets["index","ifDescr",""] habrastorage.org/files/c0e/082/663/c0e0826634bc48f... черной стрелкой отмечено что нет возможности дать descr т.к данный интерфейс не является статическим он динамический (появляется после поднятия канала), оранжевая стрелка имя интерфейса, клиента который подключается.
А вот этот l2tp-client1 это не ifDescr случайно?
Можете показать вывод "snmpwalk -v2c -Os -c vashe_comunity IP_mikrotika IF-MIB:ifTable" или "snmpwalk -v2c -On -c vashe_comunity IP_mikrotika .1.3.6.1.2.1.2.2.1" если циферками (там будет "много букаф", поэтому залейте пожалуйста вывод на pastebin.com/).
Нда... Главное, чтоб ещё один интерфейс с пустой строкой в качестве ifDescr не появился...
Вот посмотрите: "настройка l2tp на микротике", там некий товарищ задаёт имя l2tp интерфейсу. Попробуйте сделать так и покажите вывод всей ifTable (ну как-то так "snmpwalk -v2c -Os -c vashe_comunity IP_mikrotika IF-MIB:ifTable"). Где-то это имя должно светиться.
Ну вот же ifDescr.8388611 = STRING:
Я же говорил.
Вот это и используйте в том ключе вместо пустой строки и все будет работать вне зависимости от того появятся какие нибудь ещё интерфейсы или нет. Путаницы не будет все будет однозначно и на своих местах :-)
Можете назвать его как-то более понятно для красоты. Да и удобнее видеть в названии интерфейса l2tp_To_Office, а не абстрактное l2tp-client1 :-)
Парсер сожрал то что было между "<" и ">". В общем в вашем случае ключи должны выглядеть так: ifInOctets["index","ifDescr","l2tp-client1"], ifOutOctets["index","ifDescr","l2tp-client1"], ifOperStatus["index","ifDescr","l2tp-client1"] и так далее.