Ad Widget

Collapse

Спамит триггер

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Jimson
    Senior Member
    • Jan 2008
    • 1327

    #16
    Не понимаю что делает триггер.
    У вас написано что в состояние проблема он переходит если за последнии 600 секунд было хотя бы три значения равныю нулю. Это понятно.
    А в состояние OK он переходит если два последних значения не равны и при этом последнее значение равно нулю. Круто, но смысл от меня ускользает.

    И последнии данные покажите, а то может у вас icmpping[] возвращает через раз нули, нам то отсбда не видно.

    P.S. Я уже вроде спрашивал, какой смысл вообще собирать icmpping[]? ну собирайте icmppingloss[], хоть какой то дополнительный профит от значения, по проценту (зная сколько мы пакетов посылаем) можно понять сколько из них было потеряно, а почему icmpping[] вернул 1 фиг знает, может там все великолепно, а может один из 10 реплаев только получен.

    Comment

    • prostrelov
      Senior Member
      • May 2012
      • 115

      #17
      Спасибо, вот первую ошибку уже нашли.
      К сожалению сегодня протестировать поправленный триггер не успеваю.
      iz99-2.vsrf.Term: g:icmp

      2013-05-28 16:36:33 1369744593 0
      2013-05-28 16:33:33 1369744413 0
      2013-05-28 16:30:33 1369744233 0
      2013-05-28 16:27:33 1369744053 0
      2013-05-28 16:24:33 1369743873 0
      2013-05-28 16:21:33 1369743693 0
      2013-05-28 16:18:33 1369743513 0
      2013-05-28 16:16:33 1369743393 0
      2013-05-28 16:14:33 1369743273 0
      2013-05-28 16:12:33 1369743153 0
      2013-05-28 16:10:33 1369743033 0
      2013-05-28 16:08:33 1369742913 0
      2013-05-28 16:06:33 1369742793 0
      2013-05-28 16:04:33 1369742673 0
      2013-05-28 16:02:33 1369742553 0
      2013-05-28 16:00:33 1369742433 0
      2013-05-28 15:58:33 1369742313 0
      2013-05-28 15:56:33 1369742193 0
      2013-05-28 15:54:33 1369742073 0
      2013-05-28 15:52:33 1369741953 0
      2013-05-28 15:50:33 1369741833 0
      2013-05-28 15:48:33 1369741713 0
      2013-05-28 15:46:33 1369741593 0
      2013-05-28 15:44:33 1369741473 0
      2013-05-28 15:42:33 1369741353 0
      2013-05-28 15:40:33 1369741233 0
      2013-05-28 15:38:33 1369741113 0
      2013-05-28 15:36:33 1369740993 0
      2013-05-28 15:34:33 1369740873 0
      2013-05-28 15:32:33 1369740753 0
      2013-05-28 15:30:33 1369740633 0
      2013-05-28 15:28:33 1369740513 0
      2013-05-28 15:26:33 1369740393 0
      2013-05-28 15:24:33 1369740273 0
      2013-05-28 15:22:33 1369740153 0
      2013-05-28 15:20:33 1369740033 0
      2013-05-28 15:18:33 1369739913 0
      стабильно ноль.

      Триггер мне нужен просто как индиктор для карты - что поднятно что лежит, поэтому icmpping.

      ({TRIGGER.VALUE}=0&{VKC.Hosts:icmpping.count(600,0 )}>3)|
      ({TRIGGER.VALUE}=1&{VKC.Hosts:icmpping.change(0)}=0&
      {VKC.Hosts:icmpping.last(0)}=0)

      п.с.
      Jimson, спасибо огромное. Тригеры отрабатывают адекватно наконец-то.
      Last edited by prostrelov; 29-05-2013, 08:51.

      Comment

      • prostrelov
        Senior Member
        • May 2012
        • 115

        #18
        Пытаюсь задокументировать тригер и не могу понять
        вот такой гистерезис отрабатывает адекватно ситуации
        ({TRIGGER.VALUE}=0&{VKC.Hosts:icmpping.count(600,0 )}>3)|
        ({TRIGGER.VALUE}=1&{VKC.Hosts:icmpping.change(0)}= 0&
        {VKC.Hosts:icmpping.last(0)}=0)

        а вот такой прыгает туда обратно каждые 2 минуты:
        ({TRIGGER.VALUE}=0&{VKC.Hosts:icmpping.count(600,0 )}>3)|
        ({TRIGGER.VALUE}=1&{VKC.Hosts:icmpping.change(0)}= 0&
        {VKC.Hosts:icmpping.last(0)}=1)

        Хотя по логике {VKC.Hosts:icmpping.last(0)} должен быть равен "1".
        Ведь тригер должен переходить в состояние ОК когда мы получаем успешный пинг а не когда мы получаем ноль.

        Comment

        • Jimson
          Senior Member
          • Jan 2008
          • 1327

          #19
          Да потому что условия в обоих частях должны быть взаимоисключающие, а у вас они могут существовать одновременно. Пример: три последнии проверки вернули нули, у вас сработал триггер, следующие две проверки вернули единицы, из-за того что в условии учитывается текущее состояние триггера - ПРОБЛЕМА(1) выполняется условие "два последних значения единицы" и триггер переключается в состояние ОК(0), при получении следующего значения, любого, у вас будет последовательность 0 0 0 1 1 х и условие триггера опять выполняется, так как те три нуля еще не вышли за пределы 10 минут.
          Вы перемудрили, будьте проще

          Comment

          • prostrelov
            Senior Member
            • May 2012
            • 115

            #20
            Да но ведь если брать в учёт что интервал между проверками 180 сек
            то разве успеет набраться столько значений за 600 секунд ?
            1е условие получить 3 нуля за 600 секунд
            0,0,0
            180+180+180 = 540 секунд

            приходит единица
            0,0,0,1
            180+180+180+180 = 720 секунд
            она проверяется по первой части услвоия
            в которую первый пришедший ноль уже не войдёт по ограничению в 600 секунд. Итого мы получим значение 0,0,1 которое не удовлетворяет 1у условию но ещё пока не удовлетворяет и второму,
            поэтому система ждёт 3е значение. Когда приходит ещё одна единица
            0,1,1 условие должно проверить последние два значения (не появился ли опять ноль) и проверить равно ли значение последнее 1е и только после этого перевести триггер в состояние ОК.
            Но этого не происходит. Вместо этого каждые 2 минуты триггер скачет туда обратно.

            Если можно раскройте механизм таких триггеров более подробно.
            Или может быть есть более простое решение.

            Comment

            • Lone Wolf
              Member
              • Mar 2010
              • 34

              #21
              Может, опишете задачу ещё раз? Только не подглядывая в первое сообщение и более формальным языком.
              Например, "Триггер срабатывает, если то-то и так-то".
              Глядишь, сами и разберётесь.
              Сдаётся мне, гистерезис там совсем не нужен.

              Comment

              • Jimson
                Senior Member
                • Jan 2008
                • 1327

                #22
                Уже сам факт того что триггер у вас переключается "каждые 2 минуты" говорит о том что каждые 2 минуты у вас приходят новые данные, или чаще, но в последнем случае триггер переключается через каждые N новых значений. Просто так триггер пересчитаться не может, если в нем не используется функция nodata(), он пересчитывается только когда один из элементов данных используемых в его формуле получает новое значение.

                Вариантов почему у вас переключается триггер всего три:
                1) переключается в соответсвии с приходящими данными, при этом данные приходят не каждые 3 минуты, а каждые 2 минуты, смотрите почему у вас хосты то пингуются, то нет
                2) переключается потому что данные поступают раз в минуту или чаще, в этом случае ваше условие триггера не правильное, переделывайте
                3) не правильно работает функция count(), я ей не пользовался и подтвердить ее работу не могу

                Вы хотите, что триггер перешел в состояние проблема если вы получили подряд три нуля, и вернулся в нормальное состояние если получено подряд две единицы, чем не устраивает такое условие:

                ( trigger.value = 0 & icmpping.max(#3) = 0 ) | ( trigger.value = 1 & icmpping.min(#2) = 1 )

                или тоже самое, через sum()

                ( trigger.value = 0 & icmpping.sum(#3) = 0 ) | ( trigger.value = 1 & icmpping.sum(#2) = 2 )

                тип элемента данных, надеюсь, у вас целочисленный ? хотя вроде zabbix сравнение на равенство для float делает с точностью до 5 знаков, так что пробллем с 0 = 0.000000000001 быть не должно, но лучше "перебдеть"

                Comment

                • Lone Wolf
                  Member
                  • Mar 2010
                  • 34

                  #23
                  Может, всё же так?

                  icmpping.max(#3) = 0 | (trigger.value = 1 & icmpping.min(#2) = 0)

                  Если триггер сработал, то он должен гореть, пока среди 2-х последних значений есть хотя бы один ноль.

                  Comment

                  • prostrelov
                    Senior Member
                    • May 2012
                    • 115

                    #24
                    Думаю проще чтоб не возникало вопросов описать ситуацию более развёрнуто:
                    Есть ряд удалённо расположенного оборудования которое
                    периодически живёт в выключенном состоянии и включается только
                    по надобности и для видеоконференций. Отвечает оно по icmp, и
                    частенько бывают перебои в подключении и потери
                    пакетов. Доступа к этому оборудованию мы не имеем поэтому
                    поправить ситуацию возможности нет. Соответственно всё что
                    требуется это мониторить доступность оборудования и сделать
                    триггер который будет показывать оборудование лежащим и не
                    будет прыгать в problem\ok в случае если ему придёт пару нулей с
                    проверки, т.к. вполне возможно что это потеря пакетов на канале и
                    оборудование всё ещё включено.

                    По звонку данное оборудование включается поэтому применить
                    одно условие с одним таймаутом не выгодно т.к. тогда триггер будет
                    иметь одинаковую задержку в обе стороны ok и problem. А нам
                    требуется что бы он быстро переходил в ok и медленно в problem.

                    Comment

                    • Lone Wolf
                      Member
                      • Mar 2010
                      • 34

                      #25
                      Так основная-то цель какая? Следить, чтобы у них оборудование было включено в нужное время?
                      Тогда icmpping.max(#3)=0 будет достаточно - не нужно ждать 2-х успешных пингов для того, чтобы убедиться, что оборудование включено.
                      Last edited by Lone Wolf; 06-06-2013, 10:48.

                      Comment

                      • prostrelov
                        Senior Member
                        • May 2012
                        • 115

                        #26
                        Применив данный триггер
                        ({TRIGGER.VALUE}=0&{VKC.Hosts:icmpping.max(#3)}=0) |({TRIGGER.VALUE}=1&{VKC.Hosts:icmpping.min(#2)}=0 )
                        я получил тот же эффект
                        каждые 3 минуты триггеры скачат в PROBLEM и OK.

                        Comment

                        • Lone Wolf
                          Member
                          • Mar 2010
                          • 34

                          #27
                          Я имел в виду, оставить {VKC.Hosts:icmpping.max(#3)}=0 и больше ничего не писать.
                          Не подходит?

                          Comment

                          • Jimson
                            Senior Member
                            • Jan 2008
                            • 1327

                            #28
                            Originally posted by prostrelov
                            Применив данный триггер
                            ({TRIGGER.VALUE}=0&{VKC.Hosts:icmpping.max(#3)}=0) |({TRIGGER.VALUE}=1&{VKC.Hosts:icmpping.min(#2)}=0 )
                            я получил тот же эффект
                            каждые 3 минуты триггеры скачат в PROBLEM и OK.
                            Значит дело не в условии триггера. Сделай как сказал LoneWolf что бы окончательно в этом убедиться.

                            Comment

                            • prostrelov
                              Senior Member
                              • May 2012
                              • 115

                              #29
                              Спасибо за помощь.
                              {VKC.Hosts:icmpping.max(#3)}=0
                              данный триггер не спамит каждые 3 минуты, но в обе стороны триггер
                              переходит с одинаковой скоростью (3 значения = 540скунд).
                              но с гистерезисом понять в чём проблема так и не получилось.

                              Comment

                              • Lone Wolf
                                Member
                                • Mar 2010
                                • 34

                                #30
                                Что-то здесь не так.
                                Можно выложить сюда скрин настройки Item'а VKC.Hosts:icmpping?

                                Comment

                                Working...