Добрый день
Работаю над интеграцией CRM системы с мониторингом Zabbix через его API.
Цель: по указанному интерфейсу маршрутизатора собирать количество пройденного трафика, чтобы в дальнейшем можно было выбрать количество трафика за определенное время.
Реализация: Сделал два элемента данных типа SNMPv2 с OID ifInOctets["index","ifDescr","lte1"] и соответственно ifOutOctets["index","ifDescr","lte1"]. Они работают корректно. Значения, которые они собирают - это количество байт, пройденных в/из интерфейса с момента запуска устройства. В идеале это должен быть вечно растущий график. Проблема заключается в обнулениях (модное слово 2020) счетчиков трафика из-за перезапуска устройства и соответственно график падает к нулю. Получается график типа пила. Для суммирования пройденного трафика in/out и компенсации обнулений сделал вычисляемый элемент данных. В формуле довольно топорно записываю: к предыдущему значению этого вычисляемого элемента прибавляем суммы дельт элементов данных in и out.
Довольно скудно это выглядит так: last(#2) + abschange(traffic.tx-lte1)*(change(traffic.tx-lte1) >= 0) + abschange(traffic.rx-lte1)*(change(traffic.rx-lte1)>=0) + last(traffic.tx-lte1) * (change(traffic.tx-lte1) < 0) + last(traffic.rx-lte1) * (change(traffic.rx-lte1) < 0) + (last(traffic.tx-lte1) + last(traffic.rx-lte1))*(last(#2) < 1)
Проблема: ожидаемо, получаю на элементе ошибку not supported с комментарием "значение last(#2) не существует". Не использовать "накопительную" переменную нельзя, т.к. если опираться только на значения из элементов in/out трафика при обнулении счетчиков они неизбежно направят и вычисляемый элемент данных к нулю.
Просьба тапками не бросаться. Над интеграцией работаю пару недель. Все по мануалам. Буду рад светлым идеям.
Работаю над интеграцией CRM системы с мониторингом Zabbix через его API.
Цель: по указанному интерфейсу маршрутизатора собирать количество пройденного трафика, чтобы в дальнейшем можно было выбрать количество трафика за определенное время.
Реализация: Сделал два элемента данных типа SNMPv2 с OID ifInOctets["index","ifDescr","lte1"] и соответственно ifOutOctets["index","ifDescr","lte1"]. Они работают корректно. Значения, которые они собирают - это количество байт, пройденных в/из интерфейса с момента запуска устройства. В идеале это должен быть вечно растущий график. Проблема заключается в обнулениях (модное слово 2020) счетчиков трафика из-за перезапуска устройства и соответственно график падает к нулю. Получается график типа пила. Для суммирования пройденного трафика in/out и компенсации обнулений сделал вычисляемый элемент данных. В формуле довольно топорно записываю: к предыдущему значению этого вычисляемого элемента прибавляем суммы дельт элементов данных in и out.
Довольно скудно это выглядит так: last(#2) + abschange(traffic.tx-lte1)*(change(traffic.tx-lte1) >= 0) + abschange(traffic.rx-lte1)*(change(traffic.rx-lte1)>=0) + last(traffic.tx-lte1) * (change(traffic.tx-lte1) < 0) + last(traffic.rx-lte1) * (change(traffic.rx-lte1) < 0) + (last(traffic.tx-lte1) + last(traffic.rx-lte1))*(last(#2) < 1)
Проблема: ожидаемо, получаю на элементе ошибку not supported с комментарием "значение last(#2) не существует". Не использовать "накопительную" переменную нельзя, т.к. если опираться только на значения из элементов in/out трафика при обнулении счетчиков они неизбежно направят и вычисляемый элемент данных к нулю.
Просьба тапками не бросаться. Над интеграцией работаю пару недель. Все по мануалам. Буду рад светлым идеям.
Comment