Ad Widget

Collapse

как вывести изменение значений в минуту из предобработки jsonpath?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • shkiper
    Senior Member
    • Mar 2016
    • 123

    #1

    как вывести изменение значений в минуту из предобработки jsonpath?

    есть предобработка jsonpath в зависимом элементе данных, нормально отрабатывает
    мне надо получить изменение в минуту
    основной элемент данных (и соответственно предобработка) прилетает раз в 1-6 сек (ключ mqtt.get и интервала опроса нет)
    я попробовал создать вычисляемый элемент данных типа delta("зависимый.key", 1m), но что он ругается "Cannot evaluate expression: "Cannot evaluate function "delta(1m)": item "зависимый.key" not supported."

    Надо это делать шагами предобработки, но как?
    Last edited by shkiper; 05-01-2021, 01:33.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Есть же стандартный вид предобработки: "Change per second". Если нужно именно в минуту, а не в секунду, то следующим шагом предобработки домножаете на 60.

    Comment

    • shkiper
      Senior Member
      • Mar 2016
      • 123

      #3
      спасибо, попробовал, результат есть и гораздо лучше чем раньше, но с нюансами
      не могу найти идеальный вариант
      вообще я считаю импульсы, частота у них постоянная - 4 об/мин, это когда оборудование работает (для чего собственно мониторинг и нужен - смотреть когда работает оборудование)
      но поток данных неравномерен (активная проверка без интервала обновления), данные поступают иногда через 10-20 секунд, а бывает подряд через секунду пара значений прилетает
      и бывает так совпадает - проходит увеличение счетчика на следующую секунду после предыдущего значения
      и соответственно если умножить на 60, то получится - 60 об/мин, что никак не соответствует истине
      вот как тут быть, "выпиливать" куски побольше и с них считать среднее или срезать пики регуляркой?

      вот как это получается (я добавляю еще множитель для состыковки с другим графиком, 4 об/мин соответствует значение 160)
      Click image for larger version  Name:	mqtt_flow.png Views:	1 Size:	4.3 KB ID:	416176

      и что интересно из 6 рабочих выходов на счетчике импульсов, такая ерунда только на одном, раз в час - одно, два "совпадения"

      раньше считывал топики с помощью mosquitto_sub, с помощью mqtt.get однозначно лучше, но вот высчитать среднее без заданных интервалов прям проблема
      Last edited by shkiper; 05-01-2021, 11:07.

      Comment

      • Kos
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • Aug 2015
        • 3404

        #4
        Да, при неравномерном поступлении данных картина будет не очень аккуратной, особенно при малых интервалах между соседними значениями.
        Я не знаю, что делать в такой ситуации :-(
        Наверное, правильным было бы при получении значений с разницей менее 2 секунд просто отбрасывать последнее значение, но для таких проверок в Zabbix-е просто нет нужных средств (по-моему, добраться до таймстэмпа значения сейчас нельзя даже через Javascript, буду рад ошибиться). Можно разве что отбрасывать явно неадекватные результаты (например, если вычисленное значение не попало в заданный интервал допустимых значений), но это не совсем то.
        Как вариант - оставить всё как есть (зная при этом, что отдельные значения могут быть неточными), но учитывать это в триггерах (т.е. в триггерных выражениях использовать только функции, обрабатывающие несколько последних значений - min(), max(), avg(), count() и т.п.).

        Comment

        • shkiper
          Senior Member
          • Mar 2016
          • 123

          #5
          "срезал" пики ф-цией "по диапазону" в предобработке
          Click image for larger version

Name:	zbx_diap.png
Views:	304
Size:	6.6 KB
ID:	416187
          ставлю 250 вместо 160, чтобы визуально видеть глюк на графике, пока понаблюдаю где и как часто выскакивает

          Comment

          Working...