Ad Widget

Collapse

Создание нового элемента на основе полученного SNMP трапа

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • RybaKit18
    Junior Member
    • Jun 2020
    • 5

    #1

    Создание нового элемента на основе полученного SNMP трапа

    Добрый день!

    Есть некая система, которая посылает SNMP trap Alarm. Если авария есть, то раз в 15 минут (+/-). Трапы ловятся и записываются в Zabbix (тип SNMP trap). Теперь стоит задача на основе полученных данных создать элемент данных (Alarm) или триггер, который будет активен во время действия этой аварии. Если в течении определенного времени (например, 30 минут) не приходит нового сообщения об этой аварии, то элемент деактивируется/ триггер переходит в неактивное состояние. Пока не знаю как подойти к задаче и возможно ли реализвать это стандартным функционалом Zabbix.

    Спасибо!
  • viktorzzz
    Junior Member
    • May 2020
    • 18

    #2
    Создаёшь триггер который будет реагировать на полученное сообщение. В зависимости от типа и вида данных используешь подходящую функцию - last, regexp и т.д. В recovery expression используешь функцию nodata()

    Comment

    • RybaKit18
      Junior Member
      • Jun 2020
      • 5

      #3
      Забыл добавить, что аварии разные. То есть сообщения разные. Мы заранее не знаем что за авария придет (текстовое сообщение), но если она длится более 15 минут, то приходит еще один трап. И т.д. Я думаю, что триггеры надо создавать под каждую аварию отдельно и удалять при неактивности (например 1 день). Что то вроде правила обнаружения.

      Comment

      • viktorzzz
        Junior Member
        • May 2020
        • 18

        #4
        Если объект данных статичный, создан и существует всегда, если тип данных, в приходящих сообщениях - текст, если кол-во и аварийных сообщений известно и конечно - то самый простым вариантом будет создать нужное кол-во триггеров, реагирующих на нужные сообщения. И отключать их по истечению нужного времени. Если же какое-то из упомянутых выше условий не соблюдается - тогда делать всё при динамического обнаружения

        Comment

        • RybaKit18
          Junior Member
          • Jun 2020
          • 5

          #5
          Теперь вопрос. Как создать динамический триггер для события?

          Comment

          • viktorzzz
            Junior Member
            • May 2020
            • 18

            #6
            Сходить и почитать в официальной документации. Там очень неплохо всё описано.

            Comment

            • Evgeniy
              Senior Member
              • May 2012
              • 157

              #7
              Originally posted by RybaKit18
              Теперь вопрос. Как создать динамический триггер для события?
              Посмотрите в сторону корреляции событий. В документации есть пример с файлами журналов, для трапов будет почти также.

              Comment

              • RybaKit18
                Junior Member
                • Jun 2020
                • 5

                #8
                Спасибо за совет! Сейчас сообщения создаются с тегом номера ошибки по шаблону из сообщения: ALARMID = {{ITEM.VALUE}.regsub("^.*Alarm ID\s+[0-9]+).*$, \1)}
                Но через 15 минут приходит новый трап и создаётся точно такое же сообщение. Теперь у меня не получается создать правило генерации сообщений так, что бы не размножались сообщения каждые 15 минут. Так же требуется закрывать их в случае неприхода повторного трапа в течении 30 минут.

                Comment

                • Evgeniy
                  Senior Member
                  • May 2012
                  • 157

                  #9
                  Originally posted by RybaKit18
                  что бы не размножались сообщения каждые 15 минут
                  Как вариант, воспользоваться глобальной корреляцией событий и закрывать все новые с тем же тегом.
                  Originally posted by RybaKit18
                  Так же требуется закрывать их в случае неприхода повторного трапа в течении 30 минут.
                  Как посоветовали выше:
                  Originally posted by viktorzzz
                  В recovery expression используешь функцию nodata()

                  Comment

                  • RybaKit18
                    Junior Member
                    • Jun 2020
                    • 5

                    #10
                    Originally posted by Evgeniy
                    Как вариант, воспользоваться глобальной корреляцией событий и закрывать все новые с тем же тегом.
                    Замечательно! В текущих проблемах уже не отображается, но в истории найти что-либо становится проблематично из-за огромного количества трапов. Может есть вариант не создавать события с одинаковыми тэгами?

                    nodata() подразумевает отсутствие любых данных, но могут приходить данные о других проблемах. В таком случае текущая просроченная проблема тоже не закроется?

                    Comment

                    • Evgeniy
                      Senior Member
                      • May 2012
                      • 157

                      #11
                      Originally posted by RybaKit18
                      Замечательно! В текущих проблемах уже не отображается, но в истории найти что-либо становится проблематично из-за огромного количества трапов. Может есть вариант не создавать события с одинаковыми тэгами?

                      nodata() подразумевает отсутствие любых данных, но могут приходить данные о других проблемах. В таком случае текущая просроченная проблема тоже не закроется?
                      К сожалению, глобальная корреляция только закрывает проблемы, а не прекращает их генерировать... С nodata триггер не закроется, если будут приходить данные о других проблемах. Без трапов о восстановлении сложно что-то придумать, я бы на вашем месте искал бы другие способы мониторинга без использования snmptraps.

                      Comment

                      Working...