Ad Widget

Collapse

Частое срабатывание триггера

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Evgene-mmk
    Member
    • Nov 2020
    • 44

    #1

    Частое срабатывание триггера

    Сегодня ночью из-за неких проблем у сетевиков от нескольких серверов прилетело больше 1000 сообщений на почту типа "Problem: MSSQL: Service is unavailable" и через некоторое время "Resolved in 26s: MSSQL: Service is unavailable".
    Загрубить триггер чтоб он срабатывал после двух трех проверок, вроде как не вариант, потому как сегмент сети может отваливаться периодически с разным интервалом.
    Отключать триггер если он сработал больше N раз за 10 мин ? Как это сделать ? Только через API ?
    Кто как борется с данным явлением ??
  • Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    #2
    Можно условие срабатывания поправить, сделать что-то вроде "в течение часа все было хорошо, а сейчас сломалось". При этом условие восстановления становится обязательным, а то быстро погаснет.

    Comment

    • Evgene-mmk
      Member
      • Nov 2020
      • 44

      #3
      Originally posted by Semiadmin
      Можно условие срабатывания поправить, сделать что-то вроде "в течение часа все было хорошо, а сейчас сломалось". При этом условие восстановления становится обязательным, а то быстро погаснет.
      Не понял можно подробнее? Было {Template DB MSSQL by ODBC:net.tcp.service[tcp,{HOST.CONN},{$MSSQL.PORT}].last()}=0 немного "загрубил" {Template DB MSSQL by ODBC:net.tcp.service[tcp,{HOST.CONN},{$MSSQL.PORT}].max(3m)}=0
      Last edited by Evgene-mmk; 03-09-2021, 07:48.

      Comment

      • Semiadmin
        Senior Member
        • Oct 2014
        • 1625

        #4
        как-то так:
        Problem: net.tcp.service.min(1h,1m) >0 and net.tcp.service.last()=0
        Recovery: net.tcp.service.last()>0

        Comment

        • Victor Vislobokov
          Senior Member
          • Aug 2018
          • 298

          #5
          Originally posted by Evgene-mmk
          Сегодня ночью из-за неких проблем у сетевиков от нескольких серверов прилетело больше 1000 сообщений на почту типа "Problem: MSSQL: Service is unavailable" и через некоторое время "Resolved in 26s: MSSQL: Service is unavailable".
          Загрубить триггер чтоб он срабатывал после двух трех проверок, вроде как не вариант, потому как сегмент сети может отваливаться периодически с разным интервалом.
          Отключать триггер если он сработал больше N раз за 10 мин ? Как это сделать ? Только через API ?
          Кто как борется с данным явлением ??
          Это явление назвается Флаппинг Защиты от которого в Zabbix нет.
          Но в данном случае, вам надо разобраться чего вы хотите? А хотеть вы можете разного: например, отключить уведомления, оставив триггер или чтобы триггер срабатывал и оставался сработавшим, не реагируя на кратковременное восстановление работы службы или напротив, чтобы триггер перестал срабатывать после 3-4 раз недоступности/доступности. Соотвественно и способы есть разные: изменить условия срабатывания триггера, создать глобальную корелляцию, которая будет закрывать триггер(ы) в случае проблем с вышестоящим сетевым оборудованием, наконец создать период обслуживания на период проведения сетевиками работ, в который данные по хостам будут собираться, но сработка триггеров происходить не будет. Определитесь.

          Comment

          • Evgene-mmk
            Member
            • Nov 2020
            • 44

            #6
            Originally posted by Victor Vislobokov
            >>чтобы триггер перестал срабатывать после 3-4 раз недоступности/доступности. Да, наверно это лучший вариант. Правильней было бы после 10 срабатываний на 30 мин посылать некое сообщение и отключать оповещение по этим триггерам. Как это реализовать ?? Возможно ли в триггере делать инкремент какого-нибудь макроса который потом сбрасывать вручную ?
            >>создать глобальную корелляцию, которая будет закрывать триггер(ы) в случае проблем с вышестоящим сетевым оборудованием. Не пойдет, у меня нет триггеров от сетевого оборудования тем более это ВМ которые могут перемещаться по разным серверным в разных сегментах сети.
            >>наконец создать период обслуживания на период проведения сетевиками работ. Нет, это аварийное состояние.
            Last edited by Evgene-mmk; 03-09-2021, 09:48.

            Comment

            • Evgene-mmk
              Member
              • Nov 2020
              • 44

              #7
              Originally posted by Semiadmin
              как-то так:
              Problem: net.tcp.service.min(1h,1m) >0 and net.tcp.service.last()=0
              Recovery: net.tcp.service.last()>0
              Я правильно понимаю что для следующего срабатывания он должен быть 1 час в состоянии ОК. То есть если начнется такая колбаса он пришлет мне один раз проблему, потом восстановление, и после не будет реагировать пока не будет ОК в течении часа ?? (хотя сеть и будет отваливаться периодически). То есть у меня не будет причин толкнуть сетевиков для исправления проблемы.

              Comment

              • Semiadmin
                Senior Member
                • Oct 2014
                • 1625

                #8
                Ну вы же вообще хотели отключать триггер через API, а тут он просто не будет срабатывать в течение заданного времени после аварии.

                Comment

                • Evgene-mmk
                  Member
                  • Nov 2020
                  • 44

                  #9
                  Originally posted by Semiadmin
                  Ну вы же вообще хотели отключать триггер через API, а тут он просто не будет срабатывать в течение заданного времени после аварии.
                  Да, как один вариантов. Может быть есть какое-то другое решение ?
                  Просто представьте: Все спят и видят сны, в час ночи приходит первое сообщение, через 20 мин и 20 сообщений я понимаю что проблема не моя. Но сообщения сыплются до утра, отключить я их не могу, кроме меня не спят еще пять человек и это не считая сетевиков.
                  Наверно такая проблема возникала не только у меня вот и хотел бы узнать кто-как решал подобные проблемы.

                  Comment

                  • Semiadmin
                    Senior Member
                    • Oct 2014
                    • 1625

                    #10
                    Я бы сначала начал с формулировки алгоритма - как именно оно должно работать. Часто то, что не удается реализовать одним триггером, реализуемо через вычисляемый айтем и триггер. Надо понимать, что хотя в Zabbix и нет ни галки "stop flapping", ни полноценного event processing'а, при желании можно сделать многое.

                    Comment

                    • Semiadmin
                      Senior Member
                      • Oct 2014
                      • 1625

                      #11
                      Но вообще, классический способ - просто отложить выход из проблемы до тех пор, пока работа не стабилизируется:
                      Problem: net.tcp.service.last()=0
                      Recovery: net.tcp.service.min(30m)=1

                      Comment

                      Working...