Ad Widget

Collapse

Триггер - определенное значение появляется n-кол-во раз за t минут, тогда 'Проблема'.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • AlanPo
    Junior Member
    • Apr 2020
    • 4

    #1

    Триггер - определенное значение появляется n-кол-во раз за t минут, тогда 'Проблема'.

    Добрый день. Подскажите пожалуйста, есть ли возможность сделать триггер проверки по событию: определенное значение появляется n-количество раз за t минут, тогда триггер срабатывает?

    В шаблоне есть элемент данных читающий код состояния с МФУ Kyocera по SNMP. (целочисленное)
    В нормальном состоянии код может иметь 2 значения: 35078 - режим ожидания ; 10001 готов
    Есть код ошибки 44001 - открыта передняя крышка. Как сообщить триггеру, что реакция должна быть только при появлении данного кода 3 раза (например) за 30 минут


  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Смотри в строну вычисляемых ЭД и функции count.

    Comment

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

      #3
      Originally posted by AlanPo
      Есть код ошибки 44001 - открыта передняя крышка. Как сообщить триггеру, что реакция должна быть только при появлении данного кода 3 раза (например) за 30 минут
      Воспользоваться штатной триггерной функцией count().
      Что-то вроде:
      Code:
      {HOST:Item.count(30m,44001)}>=3

      Comment

      • AlanPo
        Junior Member
        • Apr 2020
        • 4

        #4
        Спасибо большое за Ваши советы. Посмотрел в сторону count.
        Совершил первоначально тестовую проверку на обычное срабатывание триггера по последнему значению {Template_Kyocera_Common:kcprtAlertStateCod.last() }=44001
        Затем создал выражение используя "count" {Template_Kyocera_Common:kcprtAlertStateCod.count( 5m,44001)}=3. По логике, должно срабатывать так: если 44001 появляется 2 раза в течение 5 минут то это FALSE , на 3 раз это TRUE и триггер срабатывает. И вот тут появилась проблема. Триггер сохраняет свое состояние (ПРОБЛЕМА) постоянно (даже когда код сменился на 37058). Я так понимаю, что в выражении триггера должно быть еще одно условие, например в течение 5 минут ошибка проверяется и если 3 раза появляется 44001, то проблема. Но, если с 6 по 10 минуту проблема не наблюдается, то триггер получает статус (ПРОБЛЕМА РЕШЕНА) и восстанавливается?

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #5
          Тут есть один нюанс, с которым вы, видимо, столкнулись. Условие триггера с count пересчитывается при поступлении нового значения. Ели ничего не прилетело, триггер не пересчитывается. Поэтому условие давно может быть ложным (нет трех 44001 за последние 5 минут), но об этом никто не узнает, если 37058 прилетело в те же 5 минут, когда три 44001 еще считались, а больше ничего не прилетало. Чтобы триггер пересчитывался каждые 30 сек, можно добавить в него через and какое-нибудь заведомо истинное условие с временнОй функцией, например ...and {Template_Kyocera_Common:kcprtAlertStateCod.now()} >0

          Comment

          • AlanPo
            Junior Member
            • Apr 2020
            • 4

            #6
            Доброй ночи, Semiadmin. Я этот маленький нюанс себе записал в шпаргалки и спасибо Вам большое за разъяснение такого тонкого момента. Все заработало, как надо, в итоге. Спасибо Всем еще раз за помощь и хорошего дня!

            Comment

            Working...