Ad Widget

Collapse

Сумма значений элемента данных

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • asid2006
    Junior Member
    • Sep 2013
    • 10

    #1

    Сумма значений элемента данных

    Добрый день. Zabbix 5.4.
    Задача: посчитать трафик на порту маршрутизатора с начала месяца до сегодняшнего дня.

    Что делаю:
    1. Создал элемент данных, в который записывается текущее количество трафика на порту
    2. Создал вычисляемый элемент данных, в который записываю на сколько изменилось значение трафика по сравнению с предыдущим значением: abs(change(//ifInOctets[ppp-out2]))
    3. Пытаюсь создать вычисляемый элемент данных, который просуммирует значения из пункта 2

    Проблема: при использовании выражения "sum(//change_traffic_in, 1M:now/M+1M)" Zabbix показывает ошибку "Cannot evaluate function: invalid second parameter at "sum(//change_traffic_in, 1M:now/M+1M)"."

    Подскажите, как правильно составить выражение для суммирования трафика?

    Обычно при таких задачах говорят, что Zabbix не предназначен для вычисления трафика, что надо настраивать NetFlow... Но суть задачи простая и городить ради этого кучу других систем вряд ли целесообразно. Коротко: есть удалённый объект, подключенный к корпоративной сети через мобильную сеть с ограничением трафика сколько-то гигабайт в месяц. Нужно примерно понимать когда трафик заканчивается или закончился. Если закончился, то видеть когда было высокое потребление.
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    ругается наверное вот по этому

    TIME SUFFIXES


    For time you can use:
    • s - seconds (when used, works the same as the raw value)
    • m - minutes
    • h - hours
    • d - days
    • w - weeks
    а M - megabyte …

    Comment

    • asid2006
      Junior Member
      • Sep 2013
      • 10

      #3
      Originally posted by Hamardaban
      ругается наверное вот по этому

      TIME SUFFIXES


      For time you can use:
      • s - seconds (when used, works the same as the raw value)
      • m - minutes
      • h - hours
      • d - days
      • w - weeks
      а M - megabyte …
      Если так, значит баг... На главной странице в фильтрах now/M работает как надо.

      Comment

      • asid2006
        Junior Member
        • Sep 2013
        • 10

        #4
        Originally posted by Hamardaban
        ругается наверное вот по этому

        TIME SUFFIXES


        For time you can use:
        • s - seconds (when used, works the same as the raw value)
        • m - minutes
        • h - hours
        • d - days
        • w - weeks
        а M - megabyte …
        Меняю значение на sum(//change_traffic_in,1w:now/w), т.е. показать сумму за прошлую неделю - не ругается
        Меняю значение на sum(//change_traffic_in,1w:now/w+1w), т.е. показать сумму за эту неделю - ругается
        Меняю значение на sum(//change_traffic_in,1w:now/w+4d), т.е. показать сумму за 4 дня этой недели - не ругается
        Меняю значение на sum(//change_traffic_in,1w:now/w+5d), т.е. показать сумму за 5 дней этой недели - ругается

        Видимо, вопрос в том, что я прошу показать данные за месяц, а от того момента, с которого я попросил посчитать до сейчас месяц ещё не прошёл. Когда попросил данные за 5 дней - обругался, т.к. сегодня пятница и 5 целых дней ещё не прошло. С 4 днями проблем не было.

        Надо полагать, баг.

        Comment


        • Hamardaban
          Hamardaban commented
          Editing a comment
          ну или так....
      • shkiper
        Senior Member
        • Mar 2016
        • 123

        #5
        Originally posted by asid2006

        Видимо, вопрос в том, что я прошу показать данные за месяц, а от того момента, с которого я попросил посчитать до сейчас месяц ещё не прошёл. Когда попросил данные за 5 дней - обругался, т.к. сегодня пятница и 5 целых дней ещё не прошло. С 4 днями проблем не было.

        Надо полагать, баг.
        если в период агрегации попадает период когда данных не было, был недоступен элемент данных, или возвращалась ошибка, то выдаст ошибку
        т.е. даже если в середине периода будут ошибки получения данных, то выдаст ошибку
        это я на практике столкнулся
        выход из положения - записывать в данные которые агрегируем, гарантировано правильные значения
        например проверять предобработкой что возвращает цифру (или строку) и присваивать какое-то значение при ошибке
        или делать промежуточный вычисляемый итем с ф-цией last() (гарантировано считает последнее значение) и его уже суммировать

        Comment

        Working...