Ad Widget

Collapse

Мониторинг и настройка триггеров для служб Windows

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • a3a
    Junior Member
    • Jun 2021
    • 16

    #1

    Мониторинг и настройка триггеров для служб Windows

    Доброго времени суток!

    Необходим мониторинг и настройка триггеров для служб Windows. Серверов очень много, так что нужен шаблон. Выдёргиваю службы через "Description", предварительно указав в фильтрах {#SERVICE.DESCRIPTION} matches Monitoring.
    Т.е. в каждой необходимой мне службе в описание есть слово Monitoring. Необходимо:
    1. Сработал триггер на State, чтобы если служба не в состоянии Running (значение 0), то сработал триггер и в названии было состояние.
    2. Сработал триггер так, чтобы при условии, что в "Описании службы" не будет слова Monitoring сработал триггер и через час триггер ушёл (также нужно, чтобы ушли триггеры из 1 пункта, если такие будут)
    3. Сработал триггер, если изменится Startup на Disabled и через час триггер ушёл (также нужно, чтобы ушли триггеры из 1 пункта, если такие будут)
    4. Сработал триггер, если службу удалили и через час триггер ушёл (также нужно, чтобы ушли триггеры из 1 пункта, если такие будут)

    Какие item, trigger нужно создать? Может что то необходимо добавить в фильтры. Подскажите пожалуйста.

    P.S. Мониторю службы через ключ service.info["{#SERVICE.NAME}",state]. Версия заббикс и агента 4.4.5
  • Answer selected by Kos at 09-11-2021, 12:56.
    Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    Originally posted by a3a
    Problem:{service.info["{#SERVICE.NAME}",state].last()}<>0
    Recovery: {service.info["{#SERVICE.NAME}",startup].last()}=3
    Так работать и не будет.
    Условие в Recovery (если оно есть) проверяется только как дополнительное условие после того как перестаёт выполняться условие в Problem.
    В вашем случае формула в Problem содержит проверку только одного параметра (state), а вы ожидаете, что триггер закроется, когда пройдёт сравнение другого параметра (startup).
    Решение уже подсказал Alex_UUU : добавить проверку метрики startup прямо в условие срабатывания триггера, убрав условие восстановления вообще (иначе у вас триггеры на службы, которые были временно остановлены, а потом снова запущены, не закроются до тех пор, пока Zabbix не обнаружит, что в свойствах этих служб поменялся их startup type).

    Comment

    • Semiadmin
      Senior Member
      • Oct 2014
      • 1625

      #2
      Собственно, если посмотреть возможные параметры ключа service.info, то там есть все необходимое - state (default), startup, description.
      Единственная сложность - триггеры, которые должны сами гаснуть через час и, очевидно, больше не загораться, пока проблема не решится и не возникнет снова.
      Тут нужно основное условие триггера "сначала было хорошо, а теперь стало плохо" и условие восстановления "сейчас хорошо или плохо уже целый час".
      На примере 4:
      Problem: {service.info["{#SERVICE.NAME}",state].last()} = 255 and {service.info["{#SERVICE.NAME}",state].prev()} <> 255
      Recovery: {service.info["{#SERVICE.NAME}",state].last()} <> 255 or {service.info["{#SERVICE.NAME}",state].min(1h)} = 255


      Comment

      • a3a
        Junior Member
        • Jun 2021
        • 16

        #3
        Собственно, идея была в том, чтобы я постоянно не ставил службы на мониторинг и специалисты, указав в описании Monitoring давали понять, что необходимо его мониторить. Бывают случаи, что службы удаляются, останавливаются, переводят в Disabled сами по себе (либо злоумышленники или неопытные юзеры), то в таких случаях нам достаточно триггера, чтобы их оповестить, а час времени, чтобы не пропустить триггер.

        Если есть идеи по лучше, буду рад.

        Comment

        • a3a
          Junior Member
          • Jun 2021
          • 16

          #4
          Попробовал настроить по 3 пункту. Создал 2 item-а: service.info["{#SERVICE.NAME}",state] и service.info["{#SERVICE.NAME}",startup]
          Problem:{service.info["{#SERVICE.NAME}",state].last()}<>0
          Recovery: {service.info["{#SERVICE.NAME}",startup].last()}=3
          Последовательность действий: стопаю службу -> жду пока вылезет триггер {#SERVICE.NAME} is down -> перевожу Startup на Disable, но триггер не уходит.
          Также пробовал <>2 поставить в Reсovery. Что не так настроено?

          Comment

          • Alex_UUU
            Senior Member
            • Dec 2018
            • 541

            #5
            Покажи, какие значения получает элемент данных. Вернее оба элемента.

            Comment

            • a3a
              Junior Member
              • Jun 2021
              • 16

              #6
              State: В состоянии Running = 0, Stopped = 6
              Startup: В состоянии Manual = 2, Disabled = 3

              Comment

              • Alex_UUU
                Senior Member
                • Dec 2018
                • 541

                #7
                Прямо с временами, в динамике.А не то, какие принимают в теории.

                Comment

                • a3a
                  Junior Member
                  • Jun 2021
                  • 16

                  #8
                  service.info["{#SERVICE.NAME}",state]
                  11/02/2021 05:57:30 PM Stopped (6)
                  11/02/2021 05:56:30 PM Stopped (6)
                  11/02/2021 05:55:30 PM Stopped (6)
                  11/02/2021 05:54:30 PM Stopped (6)
                  11/02/2021 05:53:30 PM Running (0)
                  11/02/2021 05:52:30 PM Running (0)
                  service.info["{#SERVICE.NAME}",startup]
                  11/02/2021 05:58:32 PM disabled (3)
                  11/02/2021 05:57:32 PM disabled (3)
                  11/02/2021 05:56:32 PM disabled (3)
                  11/02/2021 05:55:32 PM disabled (3)
                  11/02/2021 05:54:32 PM manual (2)
                  11/02/2021 05:53:32 PM manual (2)
                  11/02/2021 05:52:32 PM manual (2)
                  Триггер сработал в 05:54:30 и так и висит

                  Comment

                  • Alex_UUU
                    Senior Member
                    • Dec 2018
                    • 541

                    #9
                    Code:
                    Problem:{service.info["{#SERVICE.NAME}",state].last()}<>0
                    Recovery: {service.info["{#SERVICE.NAME}",startup].last()}=3
                    Надеюсь данные - число, а не "Stopped (6)" - т.к. если данные - этот текст, но он всегда не равен 0

                    Тогда скрин самого триггера нуже...

                    Comment

                    • a3a
                      Junior Member
                      • Jun 2021
                      • 16

                      #10
                      Stopped (6) - да, число. Он через маппинг подтягивает расшифровку

                      Click image for larger version

Name:	di-2D8ENC.jpg
Views:	159
Size:	87.1 KB
ID:	434072

                      Comment

                      • Alex_UUU
                        Senior Member
                        • Dec 2018
                        • 541

                        #11
                        Ьлин,так все правильно. У тебя стейт равно 6, триггер всегда срабатывает.
                        поставь:


                        {service.info["{#SERVICE.NAME}",state].last()}<>0
                        and
                        service.info["{#SERVICE.NAME}",startup].last()}<>3

                        Comment

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

                          #12
                          Originally posted by a3a
                          Problem:{service.info["{#SERVICE.NAME}",state].last()}<>0
                          Recovery: {service.info["{#SERVICE.NAME}",startup].last()}=3
                          Так работать и не будет.
                          Условие в Recovery (если оно есть) проверяется только как дополнительное условие после того как перестаёт выполняться условие в Problem.
                          В вашем случае формула в Problem содержит проверку только одного параметра (state), а вы ожидаете, что триггер закроется, когда пройдёт сравнение другого параметра (startup).
                          Решение уже подсказал Alex_UUU : добавить проверку метрики startup прямо в условие срабатывания триггера, убрав условие восстановления вообще (иначе у вас триггеры на службы, которые были временно остановлены, а потом снова запущены, не закроются до тех пор, пока Zabbix не обнаружит, что в свойствах этих служб поменялся их startup type).

                          Comment

                          • a3a
                            Junior Member
                            • Jun 2021
                            • 16

                            #13
                            Спасибо, теперь работает

                            Comment

                            Working...