Ad Widget

Collapse

Восстановление тригера (logrt)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Sloner999
    Senior Member
    • Jan 2022
    • 101

    #1

    Восстановление тригера (logrt)

    Добрый день.
    Вопрос про триггер, хочу сделать выражение восстановления, в элементе данных используется logrt.
    Мониторим лог, ждём события. Событие настало - варнинг. Если события не повторилось в течение 24 часов - восстановление тригера.

    find(/TEST/logrt[{$TEST.DIR}{$TEST.LOG}.log],,,"{$TEST.ERROR}")=1

    Восстановление?
    count(find(/TEST/logrt[{$TEST.DIR}{$TEST.LOG}.log],,,"{$TEST.ERROR}").(24h,0))=0

    Очевидно делаю неправильно в востановлении.. не подскажите?
    "чукча не писатель, чукча читатель", но мониторинг нужен всем.. ))
    Заранее спасибо
  • Alex_UUU
    Senior Member
    • Dec 2018
    • 541

    #2
    Если значения в логах нет, то и в хистори его не будет.
    Можно использовать nodata

    Comment

    • Sloner999
      Senior Member
      • Jan 2022
      • 101

      #3
      Originally posted by Alex_UUU
      Если значения в логах нет, то и в хистори его не будет.
      Можно использовать nodata
      nodata(/TEST/logrt[{$TEST.DIR}{$TEST.LOG}a.log],1)=1

      Так? но не срабатывает почему-то..
      может единицы времени я путаю..

      Comment

      • Lurker
        Member
        • Nov 2016
        • 83

        #4
        с логами не работал. ПРЕДПОЛОЖУ что nodata не срабатывает потому, как лог успешно опросился и запись об этом есть. А то, что при этом новых данных в нём нет это уже другое.
        Ещё вариант. В логе лежат не только события, от которых триггер срабатывает, но и другие. И вот они-то и не дают сработать nodata.
        Я бы гуглил в сторону конструкции find(item.value(или какая там функция возвращает значение итема на момент срабатывания триггера))=0
        P.S. естественно на синтаксис я забил, просто псевдокод для примера.

        Comment

        • Alex_UUU
          Senior Member
          • Dec 2018
          • 541

          #5
          Вроде бы nodata срабатывает при отсутствии данных в хистори. Не важно, почему их там нет.
          А у тебя в формуле стоит время - секунда.

          Comment

          • Sloner999
            Senior Member
            • Jan 2022
            • 101

            #6
            Originally posted by Alex_UUU
            Вроде бы nodata срабатывает при отсутствии данных в хистори. Не важно, почему их там нет.
            А у тебя в формуле стоит время - секунда.
            Не, nodata не пойдёт..

            Используется функцию nodata():
            {zabbix.zabbix.com:tick.nodata(3m)}=1

            Для того, чтобы этот триггер заработал, элемент данных ‘tick’ должен быть задан как элемент данных типа Zabbix траппер. Узел сети должен периодически отправлять данные этому элементу данных, используя zabbix_sender. Если не было получено данных за последние 180 секунд, значением триггера станет ПРОБЛЕМА.

            Comment

            • Sloner999
              Senior Member
              • Jan 2022
              • 101

              #7
              Originally posted by Lurker
              с логами не работал. ПРЕДПОЛОЖУ что nodata не срабатывает потому, как лог успешно опросился и запись об этом есть. А то, что при этом новых данных в нём нет это уже другое.
              Ещё вариант. В логе лежат не только события, от которых триггер срабатывает, но и другие. И вот они-то и не дают сработать nodata.
              Я бы гуглил в сторону конструкции find(item.value(или какая там функция возвращает значение итема на момент срабатывания триггера))=0
              P.S. естественно на синтаксис я забил, просто псевдокод для примера.
              Лог - тестовый, только я туда руками заношу, кроме моих записей ничего нет...
              а по nodata - ты скорее всего прав.
              find и время последней сработки позде 24 часов = как увязать?

              Comment

              • Semiadmin
                Senior Member
                • Oct 2014
                • 1625

                #8
                find(/TEST/logrt[{$TEST.DIR}{$TEST.LOG}.log],1d,,"{$TEST.ERROR}") and now()

                Comment

                • Sloner999
                  Senior Member
                  • Jan 2022
                  • 101

                  #9
                  Originally posted by Semiadmin
                  find(/TEST/logrt[{$TEST.DIR}{$TEST.LOG}.log],1d,,"{$TEST.ERROR}") and now()
                  Это выражение проблемы или выражение восстановления?

                  Comment

                  • Semiadmin
                    Senior Member
                    • Oct 2014
                    • 1625

                    #10
                    Проблемы, выражение восстановления тут без надобности

                    Comment

                    • Sloner999
                      Senior Member
                      • Jan 2022
                      • 101

                      #11
                      Originally posted by Semiadmin
                      Проблемы, выражение восстановления тут без надобности
                      Премного благодарен, тестирую.

                      Comment

                      • Sloner999
                        Senior Member
                        • Jan 2022
                        • 101

                        #12
                        Originally posted by Semiadmin
                        Проблемы, выражение восстановления тут без надобности
                        Спасибо, гуру! Всё как в аптеке!

                        Comment

                        • teddy
                          Senior Member
                          • Dec 2017
                          • 234

                          #13
                          Originally posted by Semiadmin
                          find(/TEST/logrt[{$TEST.DIR}{$TEST.LOG}.log],1d,,"{$TEST.ERROR}") and now()
                          Коллеги! поясните логику даного выражения? верю что работает - но почему рабоатет понять не могу.
                          find возвращает 0 или 1 в зависимости от результата поиска в истории. now() всегда не 0. каков смысл оператора and в этом случае???

                          Comment

                          • Semiadmin
                            Senior Member
                            • Oct 2014
                            • 1625

                            #14
                            now() - фиктивное, всегда истинное условие, добавленное для того, чтобы триггер пересчитывался каждые 30 секунд, а не только при получении новой записи из лога

                            Comment

                            • teddy
                              Senior Member
                              • Dec 2017
                              • 234

                              #15
                              Originally posted by Semiadmin
                              now() - фиктивное, всегда истинное условие, добавленное для того, чтобы триггер пересчитывался каждые 30 секунд, а не только при получении новой записи из лога
                              Понял. Спасибо. т.е по сути вы такой магией заставляете пересчитываться выражение независимо от изменения результатом из лога.
                              Увы не везде применимо. Я все ж надеюсь что появится функция для триггеров типа trigger-time которая возвращает время активности текущего триггера в выражении закрытия триггера. Самое обидное что заббикс это число считает ( т.к выводит в сообщении о закрытии ) но получить его для условия закрытия нельзя.

                              Comment

                              Working...