Добрый день. Забиксом занимаюсь относительно недавно. Подскажите решение данного вопроса. Собираю данные с оборудования через SNMP. Но получаемые данные не совсем правильные. Чтобы довести до нужно вида необходимо прогнать через формулу. На пример получаю значение 204 и должно получиться -16,9. Формула: 10 * log10(204) - 40 = -16,9. Посоветовали добавить скрипт php и в него загнать формулу. Но я не знаю как это всё сделать.
Ad Widget
Collapse
zabbix, данные в скрипт
Collapse
X
-
Tags: None
-
к сожалению только через формулу прогонять нужно. у оборудования есть два протокола по которому может отдать данные,cli и snmp.Comment
-
-
Comment
-
-
Ну подставьте в вашу формулу вместо десятичного логарифма натуральный, помноженный на указанную константу (один раз вычисленное значение десятичного логарифма числа e).
10 * log10(X) - 40 ≈ 10 * (0,43429 * ln(X)) - 40 = 4,3429 * ln(X) - 40
Соответственно, если у вас в скрипте переменной X присвоено значение, то дальше с помощью awk это можно пересчитать как-то так:
Соответственно, при X=204 возвращается -16.9039.Code:... X=$(...) echo "$X" | awk '{print 4.3429 * log($1) - 40}'Comment
-
Сделал немного по другому.Ну подставьте в вашу формулу вместо десятичного логарифма натуральный, помноженный на указанную константу (один раз вычисленное значение десятичного логарифма числа e).
10 * log10(X) - 40 ≈ 10 * (0,43429 * ln(X)) - 40 = 4,3429 * ln(X) - 40
Соответственно, если у вас в скрипте переменной X присвоено значение, то дальше с помощью awk это можно пересчитать как-то так:
Соответственно, при X=204 возвращается -16.9039.Code:... X=$(...) echo "$X" | awk '{print 4.3429 * log($1) - 40}'
#!/bin/bash
l=$(echo "l($1)/l(10)" | bc -l)
echo $(echo "10*$l-40" | bc)
Теперь пошла другая задача.
Как этот скрипт использовать в элементе данных?
Если элемент данных уже получаю по SNMP. Может как то можно добавить правило обнаружения, прототипы элементов данныхLast edited by reductor89; 19-11-2018, 13:46.Comment
-
По фэншую - надо рисовать модуль и делать calculated item
Альтернатива немного аналоговая, но результат будет достигнут.
Добавить в скрипт строку
snmpget -v2c -c community HOST OID
результат использовать в формуле.
В конфиге агента нарисовать userparameter с вызовом скрипта.
В хосте добавить item типа agent с созданным userparameter.Comment
-
Та дело в том,что мне придётся делать 512 скриптов тогда. Может есть способ по проще какой нибудь?По фэншую - надо рисовать модуль и делать calculated item
Альтернатива немного аналоговая, но результат будет достигнут.
Добавить в скрипт строку
snmpget -v2c -c community HOST OID
результат использовать в формуле.
В конфиге агента нарисовать userparameter с вызовом скрипта.
В хосте добавить item типа agent с созданным userparameter.Comment
-
Разобрался как необходимо сделать. Расскажу может кому то что то будет полезно.
Создал скрипт в /usr/lib/zabbix/externalscripts
Создал Прототипы элементов данных с типом внешняя проверка, с ключом signal1.sh[{#SNMPVALUE}], передал параметр в скрипт и получил желаемый результ. Спасибо за помощь!
Last edited by reductor89; 20-11-2018, 10:35.Comment
Comment