Ad Widget

Collapse

Текст из SNMP trap в триггере

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • pzabortsev
    Senior Member
    • Dec 2012
    • 338

    #1

    Текст из SNMP trap в триггере

    Привет всем,

    Пытаюсь мониторить ошибки резервного копирования, которое делает Backup Exec (капец, какое глюкавое создание!), с помошью snmp trap.

    Получаю в zabbix 2.0.14 трапы вот такого вида:
    Code:
    09:57:08 2015/05/23 .1.3.6.1.4.1.1302.3.1.2.8.0.2 Error "Backup Exec Job Canceled" bkp02.iag.ru - ubuntu-14-work-Full
    После дефиса стоит название задания, которое вызвало ошибку.
    Вот тут-то у меня наступает затык: как вытащить это название в текст триггера?
    Если использовать {ITEM.VALUE1}, в название триггера лезет вся вышеприведенная строка целиком.
    Как-то можно избавиться от левой части строки в трапе?
  • Disen56
    Junior Member
    • Dec 2014
    • 11

    #2
    regexp'ы и str'ы пробовали?

    Как-то так:
    {%device_name%:snmptrap[Backup Exec Job Canceled].regexp(ubuntu-14-work-Full)}>0

    Ну а название триггера можно любое придумать, например
    Backup Failed on {HOST.NAME}.

    Comment

    • pzabortsev
      Senior Member
      • Dec 2012
      • 338

      #3
      )))) Разумеется, если я заранее знаю название задания, то я могу "ubuntu-14-work-Full" просто взять и написать в названии триггера.
      Фишка в том, чтобы вытащить текст из этого поля. А он может быть разным.

      PS. Всегда можно пойти во пути ручного создания триггеров на каждое задание. Хочется как-то автоматизировать процесс.

      Comment

      • Evgeniy
        Senior Member
        • May 2012
        • 157

        #4
        На ум приходит только парсить скриптом после snmptrapd, оставлять нужные поля и выводить их в название триггера.

        Comment

        • Jimson
          Senior Member
          • Jan 2008
          • 1327

          #5
          я собираю трапы немного по другому:
          snmptrapd -> syslog -> script -> send to zabbix
          syslog выполняет просто роль буфера, в логи он ничего не пишет, скрипт разбирает строчки и формирует уже нормальные логи с severity, кодами и тп

          Comment

          • zmdpc
            Senior Member
            • Oct 2014
            • 484

            #6
            Скрипт писали сами ? Где можно почитать об этом ?

            Comment

            • pzabortsev
              Senior Member
              • Dec 2012
              • 338

              #7
              Originally posted by jimson
              я собираю трапы немного по другому:
              Snmptrapd -> syslog -> script -> send to zabbix
              syslog выполняет просто роль буфера, в логи он ничего не пишет, скрипт разбирает строчки и формирует уже нормальные логи с severity, кодами и тп
              Попробую. Спасибо!

              Ps. Что-то пропустил Ваше сообщение ))

              Comment

              • Jimson
                Senior Member
                • Jan 2008
                • 1327

                #8
                Originally posted by zmdpc
                Скрипт писали сами ? Где можно почитать об этом ?
                Да сам писал. Success story не писал, это решение у меня получилось не универсальное, в смысле выкладывать как есть я это не хочу. Хотя точно не помню, может в каком то из тредов я выкладывал куски скрипта и свой sender на перле.

                Comment

                • Zadralo23
                  Member
                  • Aug 2014
                  • 34

                  #9
                  Originally posted by Jimson
                  Да сам писал. Success story не писал, это решение у меня получилось не универсальное, в смысле выкладывать как есть я это не хочу. Хотя точно не помню, может в каком то из тредов я выкладывал куски скрипта и свой sender на перле.
                  Не знаю поможет ли топикстартеру и всем остальным. Но похожий механизм описан на Хабре. http://habrahabr.ru/company/zabbix/blog/252915/. Там присутствует часть этапа syslog-scrpt-zabbix.

                  А вопрос парсинга событий из {ITEM.VALUE1} так и не решился?
                  А то стоит похожая задача. Получаю SNMP trap вида

                  14:03:02 2015/06/10 PDU INFO:
                  notificationtype TRAP
                  version 0
                  receivedfrom UDP: [10.101.250.1]:53733->[192.168.0.102]
                  errorstatus 0
                  messageid 0
                  community public
                  transactionid 60558
                  errorindex 0
                  requestid 0
                  VARBINDS:
                  DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (3072396271) 355 days, 14:26:02.71
                  SNMPv2-MIB::snmpTrapOID.0 type=6 value=OID: IF-MIB::linkDown
                  IF-MIB::ifIndex.411 type=2 value=INTEGER: 411
                  IF-MIB::ifDescr.411 type=4 value=STRING: "GigabitEthernet2/6/42"
                  IF-MIB::ifType.411 type=2 value=INTEGER: 6
                  SNMPv2-SMI::enterprises.9.2.2.1.1.20.411 type=4 value=STRING: "Lost Carrier"
                  SNMP-COMMUNITY-MIB::snmpTrapAddress.0 type=64 value=IpAddress: 10.101.250.1
                  SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4 value=STRING: "public"
                  SNMPv2-MIB::snmpTrapEnterprise.0 type=6 value=OID: SNMPv2-MIB::snmpTraps

                  И вот ОЧЕНЬ СИЛЬНО ХОЧЕТСЯ при формировании уведомления в какую-нибудь переменную воткнуть допустим "GigabitEthernet2/6/42"
                  что-бы уведомление было Вида
                  On device: {HOST.NAME},{HOST.IP} on port: {переменная} произошло событие {TRIGGER.NAME}
                  Оригинальное событие:
                  {ITEM.VALUE1}

                  {ITEM.VALUE1} - это приведенный выше SNMP trap.

                  Основной вопрос: Можно ли как-то получить в отдельные переменные какие-то ключевые слова из {ITEM.VALUE1} при отправке уведомлений (actions).

                  Comment

                  • Jimson
                    Senior Member
                    • Jan 2008
                    • 1327

                    #10
                    Originally posted by Zadralo23
                    On device: {HOST.NAME},{HOST.IP} on port: {переменная} произошло событие {TRIGGER.NAME}
                    Оригинальное событие:
                    {ITEM.VALUE1}
                    SNMP трапы zabbix хранит в обычном элементе данных типа log. Кроме самого сообщения больше ничего "сохранить" невозможно. Более того, реализуя хранение/обработку виндовых логов разработчики таки расширили таблицу history_log и добавили новый ключ - eventlog, через который можно запихнуть кроме самого сообщения еще severity, eventid и source, вот только всовывая трапы через алгоритм предложенный в документации вы не можете даже этими полями воспользоваться.

                    Я уж не знаю что там можно выжать из предлагаемого решения, можно ли хотя бы отфильтровать трап: убрать лишние OID, добавить что то и тп. В задаче которая стояла у меня последней каплей была очень гибкая система просмотра лога. Короче, как я сказал выше, я просто сделал пушинг логов через zabbix_sender алгоритм попутно получив возможность вытворять с трапом все что мне заблагорассудится, в том числе пушить его как eventlog, выдирать откуда надо severity, исправлять сообщения.

                    То что ты хочешь можно реализовать или помещая имя интерфейса в "source" или, например, в случае LLD, когда у тебя для каждого порта будет свой ключ traps["GigabitEthernet2/6/42"], если пушить трапы "вручную", то можно формировать и имя ключа ЭД.

                    А вообще zabbix и логи/трапы на данный момент можно использовать только для для алармов и то с оговорками, например, если взвести триггер на основании строки в логах, то как этот триггер потом сбрасывать не понятно.

                    Я таки приатачу свой скрипт, как есть, написано крайне коряво, но в качестве иллюстрации, надеюсь, сойдет. Мне там пришлось еще и severity_id свои добавлять, так что да, визуализация логов у меня тоже патченая.
                    Attached Files
                    Last edited by Jimson; 10-06-2015, 16:34.

                    Comment

                    • zabbixx
                      Member
                      • Jul 2012
                      • 71

                      #11
                      Originally posted by Zadralo23
                      Не знаю поможет ли топикстартеру и всем остальным. Но похожий механизм описан на Хабре. http://habrahabr.ru/company/zabbix/blog/252915/. Там присутствует часть этапа syslog-scrpt-zabbix.

                      А вопрос парсинга событий из {ITEM.VALUE1} так и не решился?
                      А то стоит похожая задача. Получаю SNMP trap вида

                      14:03:02 2015/06/10 PDU INFO:
                      notificationtype TRAP
                      version 0
                      receivedfrom UDP: [10.101.250.1]:53733->[192.168.0.102]
                      errorstatus 0
                      messageid 0
                      community public
                      transactionid 60558
                      errorindex 0
                      requestid 0
                      VARBINDS:
                      DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (3072396271) 355 days, 14:26:02.71
                      SNMPv2-MIB::snmpTrapOID.0 type=6 value=OID: IF-MIB::linkDown
                      IF-MIB::ifIndex.411 type=2 value=INTEGER: 411
                      IF-MIB::ifDescr.411 type=4 value=STRING: "GigabitEthernet2/6/42"
                      IF-MIB::ifType.411 type=2 value=INTEGER: 6
                      SNMPv2-SMI::enterprises.9.2.2.1.1.20.411 type=4 value=STRING: "Lost Carrier"
                      SNMP-COMMUNITY-MIB::snmpTrapAddress.0 type=64 value=IpAddress: 10.101.250.1
                      SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4 value=STRING: "public"
                      SNMPv2-MIB::snmpTrapEnterprise.0 type=6 value=OID: SNMPv2-MIB::snmpTraps

                      И вот ОЧЕНЬ СИЛЬНО ХОЧЕТСЯ при формировании уведомления в какую-нибудь переменную воткнуть допустим "GigabitEthernet2/6/42"
                      что-бы уведомление было Вида
                      On device: {HOST.NAME},{HOST.IP} on port: {переменная} произошло событие {TRIGGER.NAME}
                      Оригинальное событие:
                      {ITEM.VALUE1}

                      {ITEM.VALUE1} - это приведенный выше SNMP trap.

                      Основной вопрос: Можно ли как-то получить в отдельные переменные какие-то ключевые слова из {ITEM.VALUE1} при отправке уведомлений (actions).
                      Привет, можно ловить все трапы с item snmp.fallback и на них ты можешь зделать триггер который ловит 2 строчки из траппа!
                      в троем случии
                      строчки
                      1) "GigabitEthernet2/6/42"
                      2) IF-MIB::linkDown

                      если назавеш триггер "GigabitEthernet2/6/42 DOWN" то все ясно что в 2/6/42 косяк ))))

                      у меня так работают 1000+ тригеров смотрят за жостким дисками!

                      Comment

                      • Jimson
                        Senior Member
                        • Jan 2008
                        • 1327

                        #12
                        Originally posted by zabbixx
                        зделать случии назавеш жостким
                        Включайте спелчекеры. У меня из глаз кровь пошла.

                        Comment

                        • zabbixx
                          Member
                          • Jul 2012
                          • 71

                          #13
                          Originally posted by jimson
                          Включайте спелчекеры. У меня из глаз кровь пошла.
                          Извените 20 лет на русском не писал
                          Last edited by zabbixx; 16-06-2015, 15:10.

                          Comment

                          • Jimson
                            Senior Member
                            • Jan 2008
                            • 1327

                            #14
                            Нет смысла небылицы сочинять, я лишь попросил пользоваться спелчекерами. Ваш стиль письма никак не согласуется с возрастом в районе 40, к тому же ошибки очень специфичны, связаны, скорее всего, с тем что лет 10-15 назад начали давать фонетику раньше грамматики (вначале учат что мы "слышим карова", а потом начинают ставить двойки за "карова" в диктантах). Да и доступ в интернет с младших классов школы накладывает отпечаток.

                            Comment

                            • zabbixx
                              Member
                              • Jul 2012
                              • 71

                              #15
                              чувак, че ты здесь рамашку развел ???
                              я помог, тот кто читать может и тому кому суть важна поймет!
                              и нехрен цеплятся, хочеш выяснить отношения пиши в личку и не ной как баба!!!!

                              Comment

                              Working...