Ad Widget

Collapse

Подскажите как сделать триггер.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Pavel777
    Junior Member
    • Jan 2023
    • 2

    #1

    Подскажите как сделать триггер.

    Есть три триггера ошибки у элемента данных: 1,2,3 (Разные виды ошибок). 0=ОК
    Подскажите как сделать так чтобы триггер срабатывал только на продолжительные события (например событие продолжается более 15 минут) и не обращал внимания на кратковременные хаотичные по времени алармы.

    Большое спасибо заранее!
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Как правило, помогает анализировать не одно значение (последнее, при использовании функции last()), а несколько (функции min(), max(), avg() и моя любимая - count()).
    И использовать второй аргумент, задающий глубину выборки (либо продолжительность по времени, либо по числу обрабатываемых значений).
    Чтобы ответить конкретнее, нужен и более конкретный вопрос (как минимум, ваша версия Zabbix; триггерная формула у вас сейчас; интервал опроса фигурирующих в этой формуле данных; что именно устраивает, а что нет).

    Comment


    • Pavel777
      Pavel777 commented
      Editing a comment
      Добрый день!
      Спасибо за ответ

      Текущая формула такая:
      last(/L2/varMLgrTractStatusVideo.4.84.78.84.52,#3)=1

      Интервал опроса одна минута (Get-ами)
      Сейчас получется что срабатывает на последнюю третью попытку (если правильно понимаю формулу). Да стало немного меньше спама (получается из-за увеличения тригера last на #3), но все равно выбранная логика не нравится, так как попадает на кратковременные события, которые не нужно алармить.

      Ложные события могут возникать например с интервалом раз в (2,5,15 минут вообщем хаотично) и продолжительностью 30сек-2мин.

      То есть исходя из вышесказанного хотелось бы видеть формулу где фиксируются только алармы которые продолжаются от 10минут и выше (учитывая именно начало нового события).

      + Немного про оптимизацию триггеров вопрос:

      имеется элемент данных по которому мониторим сигнал видео
      У него есть три статуса помимо 0=NORMAL
      1)Absent=1
      2)Freeze=2
      3)Silence=3

      Сейчас я создаю три триггера для этого элемента данных.
      last(/L2/varMLgrTractStatusVideo.4.84.78.84.52,#3)=1
      last(/L2/varMLgrTractStatusVideo.4.84.78.84.52,#3)=2
      last(/L2/varMLgrTractStatusVideo.4.84.78.84.52,#3)=3

      Вопрос: Можно ли как-то оптимизировать и обьеденить в один триггер, но чтобы были разные статусы аларма в зависимости от Цифры приходящей.


      заранее спасибо за ответ!
  • Pavel777
    Junior Member
    • Jan 2023
    • 2

    #3
    Версия /6.0/

    Comment

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

      #4
      Добрый день!
      Спасибо за развёрнутое описание, единственное замечание - лучше это делать отдельной репликой на форуме, а не комментарием к чужой реплике.

      Теперь замечания.

      1.
      Текущая формула такая:
      Code:
      last(/L2/varMLgrTractStatusVideo.4.84.78.84.52,#3)=1​
      Интервал опроса одна минута (Get-ами)
      Сейчас получется что срабатывает на последнюю третью попытку (если правильно понимаю формулу).​
      Скорее всего, понимаете неправильно. Функция last() всегда возвращает одно и только одно значение, в данном случае - третье с конца.
      Т.е. когда приходит новое значение, эта триггерная формула будет анализировать не его, а значение, пришедшее две минуты назад.

      2.
      хотелось бы видеть формулу где фиксируются только алармы которые продолжаются от 10 минут и выше
      Ну например, если хочется видеть, что из 10 последних значений статуса равны единице все 10:
      Code:
      count(/L2/varMLgrTractStatusVideo.4.84.78.84.52,#10,"eq",1)=10​
      3.
      Вопрос: Можно ли как-то оптимизировать и объединить в один триггер, но чтобы были разные статусы аларма в зависимости от Цифры приходящей.
      ​Если ситуации, когда статус меняется с нулевого значения на какое-то другое возникают относительно редко и статус не "прыгает" с одного ненормального значения на другое, то достаточно просто проверять, не больше ли он нуля в течение всех последних 10 минут:
      Code:
      min(/L2/varMLgrTractStatusVideo.4.84.78.84.52,10m)>0​
      Функция min() возвращает минимальное значение из выборки; т.е. если минимальное больше нуля, то все остальные тем более будут ненулевыми.
      А в текст уведомления и в оперативные данные (Operational data)​ добавить макрос {ITEM.LASTVALUE} для отображения текущего состояния.
      Я бы ещё сделал соответствующую табличку преобразования значений (Value map, ссылка), чтобы вместо цифр отображалось бы их текстовое описание.

      Comment


      • Pavel777
        Pavel777 commented
        Editing a comment
        Добрый день! Кажется это то что нужно. Буду тестировать. Спасибо за наводку.

        count(/L2/varMLgrTractStatusVideo.4.84.78.84.52,#10,"eq",1)= 10​ Только ваша формула вылетает с ошибкой видно из-за синтаксиса.
        Детали Не удалось обновить триггер
        Ошибочный параметр "/1/expression": некорректное выражение начиная с "​".


        count(/L2/varMLgrTractStatusVideo.4.84.78.84.52,#10,,"1")=10 Можете проверить правильно ли я ее переделал ?

        -За последние (T) 10 Количество
        -Количество успешно полученных значений V = 1
        -Результат = 10
    Working...