Ad Widget

Collapse

При мониторинге системного журнала Windows триггер ошибочно срабатывает

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • alexzav
    Junior Member
    • Dec 2019
    • 8

    #1

    При мониторинге системного журнала Windows триггер ошибочно срабатывает

    Добрый день, подскажите пож-ста.

    Для мониторинга события неожиданной перезагрузки/ включения системы Windows Server 2016
    Создал элемент данных:
    Агент активный
    тип информации - журнал.
    ключ
    eventlog[System,,,,20271|20255|20209|41|6008|12|13|11|1001| 1030|1074|2013|20249,,]


    создал Триггер
    {Alexzav_windows_event_log:eventlog[System,,,,20271|20255|20209|41|6008|12|13|11|1001| 1030|1074|2013|20249,,].logeventid(1001)}=1
    Триггер срабатывает на событие с кодом
    10016

    Аналогичная ситуация с триггерами:
    {Alexzav_windows_event_log:eventlog[System,,,,20271|20255|20209|41|6008|12|13|11|1001| 1030|1074|2013|20249,,].logeventid(13)}=1
    код должен быть 13, а сработал на 6013



    Zabbix Сервер 4.4
    Подскажите в чем может быть проблема?
    Спасибо.
    Last edited by alexzav; 16-12-2019, 16:09.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Originally posted by alexzav
    Zabbix Сервер 4.4
    Подскажите в чем может быть проблема?
    Спасибо.
    Проблема достаточно стандартная: лень читать документацию :-)
    А там ведь написано:
    logeventid (шаблон)
    Проверка, совпадает ли ID события последней записи из журнала указанному регулярному выражению.
    шаблон - регулярное выражение описывающее требуемый шаблон, в формате Perl совместимых регулярных выражений (PCRE).
    Если нужно, чтобы фунция срабатывала только на "13", а не на любое число, содержащее внутри подстроку "13", то выражение должно быть не
    logeventid(13)
    а
    logeventid("^13$")

    Comment

    • alexzav
      Junior Member
      • Dec 2019
      • 8

      #3
      Спасибо, за полный ответ, особенно про "Лень".
      Было очень приятно при первом обращении на форум.
      Пойду в документацию....

      Comment

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

        #4
        Не обижайтесь, я ж поставил смайлик :-)
        К тому же дал конкретный ответ, снабжённый ссылкой на документацию, и даже процитировал нужный фрагмент из неё.
        Проблема-то решена?

        Comment

        • alexzav
          Junior Member
          • Dec 2019
          • 8

          #5
          Добрый день.
          Моя ошибка была в копировании примера с просторов инета, а там почему-то большинство без регулярки, может для предыдущих версий.
          По Вашему совету переделал на регулярные выражения, пару раз перезагрузил сервак - триггер не сработал - не понятно.
          Пытаюсь для эксперимента отловить события, которые часто возникают (проверку учетных данных журнала безопасности), чтобы не перезагружать сервак.

          Вот что наваял - триггер (ловлю событие 4776, где в тексте есть код ошибки "0xC0000064")
          {Alexzav_windows_event_log:eventlog[Security,,,,4776,,].iregexp("^0xC0000064$",300)}=1 - создал конструктором
          сомнение вызывает время - нужно или нет, для обработки новых событий?

          Я еще только учусь, все медленно получается. в документацию поглядываю...
          Спасибо

          Comment

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

            #6
            Originally posted by alexzav
            Вот что наваял - триггер (ловлю событие 4776, где в тексте есть код ошибки "0xC0000064")
            {Alexzav_windows_event_log:eventlog[Security,,,,4776,,].iregexp("^0xC0000064$",300)}=1
            Ну, тут, как раз обратная ситуация: регулярное выражение "^0xC0000064$" будет отлавливать только сообщения, в которых строка целиком состоит лишь из указанного текста.
            Если надо отлавливать подстроку в любом месте сообщения, то ограничители "^" и "$" из регулярного выражения надо, наоборот, убрать.

            сомнение вызывает время - нужно или нет, для обработки новых событий?
            Если нужно смотреть только на последнее пришедшее от агента значение - то не нужно.
            Если хотите анализировать сразу несколько последних значений (есть ли такая подстрока хоть в одном из них) - то нужно.
            Для вашего случая, вероятно, нужно просто:
            Code:
            {Alexzav_windows_event_log:eventlog[Security,,,,"^4776$",,].iregexp("0xC0000064")}=1
            Такой триггер должен срабатывать, когда придёт значение, содержащее подстроку "0xC0000064" (в любом регистре), и будет закрываться в случае, когда придёт новое значение, не содержащее такой строки. Причём агентом будут присылаться только значения, для которых EventID=4776 (для этого нужно сначала подкорректировать сам элемент данных, поправив пятый параметр в ключе).

            Comment

            • alexzav
              Junior Member
              • Dec 2019
              • 8

              #7
              Kos, Спасибо.

              Даа, с регуляркой я перемудрил.
              Опять возникают вопросы....
              - "и будет закрываться в случае, когда придёт новое значение, не содержащее такой строки." - он закроется, даже если нет выражения восстановления? (просто хочу вытаскивать проблемы, которые буду закрывать руками (аварийная перезагрузка, критическая ошибка и пр.) )
              - у меня, элемент данных - eventlog[Security,,,,4776,,], тут тоже необходимо использовать регулярку в виде eventlog[Security,,,,"^4776$",,] ?
              а если ловим несколько кодов ошибок, то в элементе данных будет строка? "^4771$|^4772$|^4773$"
              Спасибо.

              Comment

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

                #8
                Originally posted by alexzav
                - "и будет закрываться в случае, когда придёт новое значение, не содержащее такой строки." - он закроется, даже если нет выражения восстановления? (просто хочу вытаскивать проблемы, которые буду закрывать руками (аварийная перезагрузка, критическая ошибка и пр.) )
                Любой триггер пересчитывается в случае, когда приходит новое значение для любого из элементов данных, упомянутых в триггере.
                Кроме того, при использовании временнЫх триггерных функций (nodata(), date(), time(), и т.п.) выражение триггера дополнительно пересчитывается ещё и каждые 30 секунд (просто по таймеру).
                Если при очередном пересчёте триггерное выражение выполняется - триггер срабатывает (генерируется событие ПРОБЛЕМА).
                Если после этого при очередном пересчёте условие триггера НЕ выполняется - триггер может закрыться (сгенерировано событие ВОССТАНОВЛЕНИЕ). Если указано выражение восстановления - то для закрытия триггера оно также должно выполниться (дополнительно к тому, что перестало выполняться основное условие триггера).

                Если хотите на каждое сообщение из логов генерировать своё событие, которое потом закрывать руками, то условие триггера может быть формальным (выполняться всегда) - например, повторять условие из ключа элемента данных, или же быть, например, "strlen()>0". Только не забудьте выставить галочку, разрешающую ручное закрывание триггера, иначе он после срабатывания будет висеть вечно.

                Originally posted by alexzav
                - у меня, элемент данных - eventlog[Security,,,,4776,,], тут тоже необходимо использовать регулярку в виде eventlog[Security,,,,"^4776$",,] ?
                а если ловим несколько кодов ошибок, то в элементе данных будет строка? "^4771$|^4772$|^4773$"
                Да. Поскольку пятый параметр - это регулярное выражение, то указывая просто "4776", получается, что эта подстрока может быть в любом месте EventID: можно (хотя это и маловероятно) поймать события, у которых оно равно, например, "47761" или "24776".
                А ваш последний пример вполне рабочий, но его можно записать более компактно: "^477(1|2|3)$" или даже "^477[123]$".
                Last edited by Kos; 17-12-2019, 13:17.

                Comment

                • alexzav
                  Junior Member
                  • Dec 2019
                  • 8

                  #9
                  Можно, маленькое уточнение.

                  В моём примере - ловлю события с определенным кодом и в триггере по регулярке ищу вхождение например, iregexp("0xC0000064").
                  в настройках триггера стоит:
                  - закрывать вручную.
                  - событие восстановления я не указываю
                  - режим генерации - Множественная
                  Далее
                  - приходит НАШЕ событие->триггер сработал - > создалась проблема
                  - далее пришли новые данные в наши элементы данных, но выражение не срабатывает по регулярке -iregexp("0xC0000064") триггер не срабатывает(закрывается)
                  в примере не использую временные триггерные функции.

                  Я правильно понял, Проблема в данном случае - не исчезнет, пока я её руками не закрою?

                  Comment

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

                    #10
                    Вот врать не буду - не уверен, но мне кажется, что при таком сценарии прежние проблемы всё же закроются. Надо пробовать.

                    Comment

                    • alexzav
                      Junior Member
                      • Dec 2019
                      • 8

                      #11
                      Спасибо большое.
                      Общение было познавательным, стало понятнее по принципам работы продукта.
                      Буду тестировать и отлавливать необходимые события.
                      Удачи

                      Comment

                      Working...