Ad Widget

Collapse

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

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • wolf_ktl
    Junior Member
    • Mar 2016
    • 20

    #1

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

    Есть тригер
    {Monitoring_App_Asterisk_zabbx_3:iax.peers.max(12h )}>{Monitoring_App_Asterisk_zabbx_3:iax.peers.last ()}=1

    Он сравнивает последнее значение iax c максимальным за 12 часов, если оно меньше тогда тригер срабатывает
    как настроить его так, что если тригер в течении 2 минут в ошибке тогда сообщать об ошибке?
  • karik-himik
    Senior Member
    • Oct 2015
    • 116

    #2
    Попробуйте вместо peers.last () указать peers.last (120) вместо peers.last ()
    По умолчания peers.last () раскрывается в peers.last (#1)

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

    Comment

    • wolf_ktl
      Junior Member
      • Mar 2016
      • 20

      #3
      Проверю...

      Comment

      • lastadm
        Junior Member
        • May 2016
        • 1

        #4
        Originally posted by karik-himik
        В данном случае триггер будет срабатывать только после того, как в течение двух минут последнее значение меньше максимального
        Есть мнение, что он просто возьмет для сравнение значение, которое было 120 секунд назад.

        Comment

        • karik-himik
          Senior Member
          • Oct 2015
          • 116

          #5
          Да, и правда не работает.
          И судя по документации значение в секундах он вообще игнорирует, а если строить триггер из конструктора то параметр За последние(t) вообще недоступен.
          Надо что-то еще пробовать.

          Comment

          • Dorlas
            Member
            • May 2016
            • 31

            #6
            Originally posted by wolf_ktl
            Есть тригер
            {Monitoring_App_Asterisk_zabbx_3:iax.peers.max(12h )}>{Monitoring_App_Asterisk_zabbx_3:iax.peers.last ()}=1

            Он сравнивает последнее значение iax c максимальным за 12 часов, если оно меньше тогда тригер срабатывает
            как настроить его так, что если тригер в течении 2 минут в ошибке тогда сообщать об ошибке?
            А зачем использовать функцию last?
            ИМХО Правильнее
            {Monitoring_App_Asterisk_zabbx_3:iax.peers.max(12h )}>{Monitoring_App_Asterisk_zabbx_3:iax.peers.avg( 2m)}

            Кстати, зачем в триггере "=1"?

            Comment

            • wolf_ktl
              Junior Member
              • Mar 2016
              • 20

              #7
              Originally posted by karik-himik
              Да, и правда не работает.
              И судя по документации значение в секундах он вообще игнорирует, а если строить триггер из конструктора то параметр За последние(t) вообще недоступен.
              Надо что-то еще пробовать.
              Тригер сработал не правильно

              Comment

              • wolf_ktl
                Junior Member
                • Mar 2016
                • 20

                #8
                Originally posted by Dorlas
                А зачем использовать функцию last?
                ИМХО Правильнее
                {Monitoring_App_Asterisk_zabbx_3:iax.peers.max(12h )}>{Monitoring_App_Asterisk_zabbx_3:iax.peers.avg( 2m)}

                Кстати, зачем в триггере "=1"?
                avg - это среднее а необходимо последнее значение
                кол-ва каналов iax сравнить с максимальным количеством за 12 часов , если последнее количество меньше максимального то условие Истина т.е 1 , и тригер срабатывает

                Comment

                • Dorlas
                  Member
                  • May 2016
                  • 31

                  #9
                  Originally posted by wolf_ktl
                  avg - это среднее а необходимо последнее значение
                  кол-ва каналов iax сравнить с максимальным количеством за 12 часов , если последнее количество меньше максимального то условие Истина т.е 1 , и тригер срабатывает
                  А максимальное кол-во каналов iax известно? или они увеличиваются?

                  Если максимальное кол-во каналов изначально неизвестен, то можно попробовать так:
                  ({Monitoring_App_Asterisk_zabbx_3:iax.peers.max(12 h )}>{Monitoring_App_Asterisk_zabbx_3:iax.peers.last (0)})&({Monitoring_App_Asterisk_zabbx_3:iax.peers. max(12h )}>{Monitoring_App_Asterisk_zabbx_3:iax.peers.last (60)})&({Monitoring_App_Asterisk_zabbx_3:iax.peers .max(12h )}>{Monitoring_App_Asterisk_zabbx_3:iax.peers.last (120)})=1

                  Comment

                  • wolf_ktl
                    Junior Member
                    • Mar 2016
                    • 20

                    #10
                    Originally posted by dorlas
                    А максимальное кол-во каналов iax известно? или они увеличиваются?

                    Если максимальное кол-во каналов изначально неизвестен, то можно попробовать так:
                    ({monitoring_app_asterisk_zabbx_3:iax.peers.max(12 h )}>{monitoring_app_asterisk_zabbx_3:iax.peers.last (0)})&({monitoring_app_asterisk_zabbx_3:iax.peers. max(12h )}>{monitoring_app_asterisk_zabbx_3:iax.peers.last (60)})&({monitoring_app_asterisk_zabbx_3:iax.peers .max(12h )}>{monitoring_app_asterisk_zabbx_3:iax.peers.last (120)})=1
                    Что то Вы завернули)) если максимально известно , то там вообще проблем нет, а тут скажет триггер универсальный ... , что если добавят транк .. и не надо лесть и править шаблон

                    Comment

                    • Dorlas
                      Member
                      • May 2016
                      • 31

                      #11
                      Originally posted by wolf_ktl
                      Что то Вы завернули)) если максимально известно , то там вообще проблем нет, а тут скажет триггер универсальный ... , что если добавят транк .. и не надо лесть и править шаблон
                      Ну если вы хотите чтобы триггер сработал, если в течение 2 минут была ошибка, то ИМХО самый правильный способ, который я написал ранее, это сравнивать последние 3 значения, каждый по отдельности, и если все они меньше максимального за 12 часов, то триггер сработает.
                      Мы такой схемой пользуемся чтобы определить резкое увеличение нагрузки на cpu, когда каждое последующее значение выше предыдущего в течение 3 минут, конечно может и не красивый триггер, но как нам надо, и главное хорошо работает :-)

                      Comment

                      • karik-himik
                        Senior Member
                        • Oct 2015
                        • 116

                        #12
                        Если кол-во было бы известно, то наверное удобнее было бы использовать функцию
                        count (сек|#кол-во,<шаблон>,<оператор>,<сдвиг_времени>)

                        Для это случая даже есть рабочий пример в документации:
                        ⇒ count(600,12,"gt") → количество значений за последние 10 минут, которые больше '12'

                        Но я уже пару часов пытаюсь понять, как в эту функцию, в поле <шаблон> вместо значения 12 засунуть Вашу функцию iax.peers.max(12h )
                        Не могу найти пример именно синтаксиса такой вставки.

                        Изначально думал, что сработает что-то типа этого:

                        {Monitoring_App_Asterisk_zabbx_3:iax.peers.count(1 20,{Monitoring_App_Asterisk_zabbx_3:iax.peers.max( 12h )},"lt")}
                        → количество значений за последние 2 минуты, которые больше '.max(12h )' = 1

                        Может кто-то знает как вставить одно выражение в качестве параметра другого ?
                        Это решило бы проблему

                        Comment

                        • wolf_ktl
                          Junior Member
                          • Mar 2016
                          • 20

                          #13
                          Originally posted by karik-himik
                          Если кол-во было бы известно, то наверное удобнее было бы использовать функцию
                          count (сек|#кол-во,<шаблон>,<оператор>,<сдвиг_времени>)

                          Для это случая даже есть рабочий пример в документации:
                          ⇒ count(600,12,"gt") → количество значений за последние 10 минут, которые больше '12'

                          Но я уже пару часов пытаюсь понять, как в эту функцию, в поле <шаблон> вместо значения 12 засунуть Вашу функцию iax.peers.max(12h )
                          Не могу найти пример именно синтаксиса такой вставки.

                          Изначально думал, что сработает что-то типа этого:

                          {monitoring_app_asterisk_zabbx_3:iax.peers.count(1 20,{monitoring_app_asterisk_zabbx_3:iax.peers.max( 12h )},"lt")}
                          → количество значений за последние 2 минуты, которые больше '.max(12h )' = 1

                          Может кто-то знает как вставить одно выражение в качестве параметра другого ?
                          Это решило бы проблему
                          Согласен сам бился с этой функцией ... так решения и не нашел

                          Comment

                          • wolf_ktl
                            Junior Member
                            • Mar 2016
                            • 20

                            #14
                            Originally posted by dorlas
                            Ну если вы хотите чтобы триггер сработал, если в течение 2 минут была ошибка, то ИМХО самый правильный способ, который я написал ранее, это сравнивать последние 3 значения, каждый по отдельности, и если все они меньше максимального за 12 часов, то триггер сработает.
                            Мы такой схемой пользуемся чтобы определить резкое увеличение нагрузки на cpu, когда каждое последующее значение выше предыдущего в течение 3 минут, конечно может и не красивый триггер, но как нам надо, и главное хорошо работает :-)
                            Да как Вариант надо попробовать)) Спасибо

                            Comment

                            • wolf_ktl
                              Junior Member
                              • Mar 2016
                              • 20

                              #15
                              Чу-чуть подправил

                              ({Monitoring_App_Asterisk_zabbx_3:iax.peers.max(12 h)}>{Monitoring_App_Asterisk_zabbx_3:iax.peers.las t(180)})and ({Monitoring_App_Asterisk_zabbx_3:iax.peers.max(12 h)}>{Monitoring_App_Asterisk_zabbx_3:iax.peers.las t(60)})and({Monitoring_App_Asterisk_zabbx_3:iax.pe ers.max(12h)}>{Monitoring_App_Asterisk_zabbx_3:iax .peers.last(120)})=1


                              Проверяю

                              Comment

                              Working...