Ad Widget

Collapse

Помогите создать триггер

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • xvasekx
    Junior Member
    • Sep 2015
    • 3

    #1

    Помогите создать триггер

    Добрый день, помогите создать триггер.
    Есть некий скрипт который при запуске отправляет статус 1 и при окончании отправляет статус 2, затем после некой задержки скрипт опять запускается и шлет значения.
    Нужно чтобы триггер срабатывал если скрипт выполняется (статус 1) больше 30 минут.
    написал триггер {status.count(30m,2)}<1, но триггер срабатывает сразу же как отправляю статус 1.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Я решал подобную задачу, только у меня сообщения о старте/останове писались в файл. Остальное совпадает: нужно было контролировать, что процесс вовремя успешно завершился.

    В итоге остановился примерно на такой конструкции триггера (при условии, что двойка присылается при успешном завершении скрипта):
    Code:
    {status.last()}#2
    &
    (
    {status.nodata(30m)}#0
    |
    {status.count(#2,2)}=0
    )
    Смысл такой: первое условие нужно для того, чтобы перевести триггер в состояние OK, как только придёт любое сообщение об успешном останове скрипта, и оставаться в таком состоянии до тех пор, пока последнее значение Item-а остаётся таким (независимо от всего остального).
    Второе условие заставляет триггер переходить в состояние PROBLEM в случае, когда сообщение о старте скрипта было, а никаких других сообщений (включая сообщение об останове) за последние 30 минут не было. Считаем, что скрипт завис намертво, поскольку больше никаких сообщений не поступает.
    Третье условие срабатывает в случае, если скрипт сообщение об останове прислал, но потом "вылетел" и, например, через 10 минут запускается повторно. Т.е. не только последнее, но и предпоследнее значение Item-а не было сообщением об останове скрипта. Без этого условия в такой ситуаци триггер бы не срабатывал вообще.

    Comment

    • yukra
      Senior Member
      • Apr 2013
      • 1359

      #3
      Originally posted by xvasekx
      Добрый день, помогите создать триггер.
      Есть некий скрипт который при запуске отправляет статус 1 и при окончании отправляет статус 2, затем после некой задержки скрипт опять запускается и шлет значения.
      Нужно чтобы триггер срабатывал если скрипт выполняется (статус 1) больше 30 минут.
      написал триггер {status.count(30m,2)}<1, но триггер срабатывает сразу же как отправляю статус 1.
      max(30m)>1
      Last edited by yukra; 20-11-2015, 13:14.

      Comment

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

        #4
        Originally posted by yukra
        max(30m)>1
        В смысле?
        Скрипт запустился, прислал единицу, отработал успешно, прислал двойку. Триггер сработает. Зачем?
        Скрипт запустился, прислал единицу, завис, больше ничего не прислал. Триггер не сработает. И?

        Comment

        • rough-84
          Senior Member
          • Oct 2014
          • 198

          #5
          Originally posted by Kos
          В смысле?
          Скрипт запустился, прислал единицу, отработал успешно, прислал двойку. Триггер сработает. Зачем?
          Скрипт запустился, прислал единицу, завис, больше ничего не прислал. Триггер не сработает. И?
          Тогда max(30m)=1

          Comment

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

            #6
            Originally posted by rough-84
            Тогда max(30m)=1
            Скрипт успешно отработал час назад. Сейчас снова запустился, прислал единицу. Триггер сработал, хотя скрипт только начал свою работу.

            Comment

            • rough-84
              Senior Member
              • Oct 2014
              • 198

              #7
              Originally posted by Kos
              Скрипт успешно отработал час назад. Сейчас снова запустился, прислал единицу. Триггер сработал, хотя скрипт только начал свою работу.
              Ну никто же не спорит с вашим вариантом, просто ипровизируем, например

              last()=1
              and
              prev()=1
              or
              nodata(70m)#0

              70 это типа с запасом, при условии что каждый час выполняется

              Comment

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

                #8
                Originally posted by rough-84
                Ну никто же не спорит с вашим вариантом, просто ипровизируем
                А, ну тогда sorry, я слишком серьёзно отнёсся

                Comment

                Working...