Ad Widget

Collapse

LLD RegExp Filter

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • amk
    Junior Member
    • Sep 2017
    • 15

    #1

    LLD RegExp Filter

    Доброго дня, Сообщество!


    Не могу понять почему не работает в LLD RegExp Filter

    Имеется: Zabbix 4.0.10
    Развернутый на: CentOS Linux release 7.6.1810 (Core)

    С помощью LLD получает список значений в макрос а затем пытаюсь макрос отфильтровать по совпадению с RegExp.
    Список значений имеет вид:

    Code:
    ethernetCsmacd(6)
    ethernetCsmacd(6)
    ethernetCsmacd(6)
    ethernetCsmacd(6)
    ethernetCsmacd(6)
    ethernetCsmacd(6)
    ethernetCsmacd(6)
    ethernetCsmacd(6)
    ethernetCsmacd(6)
    l2vlan(135)
    l2vlan(135)
    ieee8023adLag(161)
    tunnel(131)
    tunnel(131)
    tunnel(131)
    tunnel(131)
    необходимо что бы попали только значение где есть: (6)

    Делаю фильтр выбираю выбираю этот макрос, устанавливаю что фильтровать при совпадении и пишу регулярку вида (\(6\)).
    В результате ни одно значение не попадает под этот фильтр.
    Если использовать регулярку: (6) то она срабатывает но попадает все где есть цифра 6, это не подходит


    Пробовал (\(6\)) протестировать в Administration - General - Regular Expressions - все работает.

    Подскажите что делаю не так в LLD.



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

    #2
    Может, так?
    Code:
    [B]\(6\)[/B]

    Comment

    • amk
      Junior Member
      • Sep 2017
      • 15

      #3
      Спасибо за ответ. Да я так тоже пробовал. Результат аналогичный пробовал даже
      Code:
      \\(6\\)

      Comment

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

        #4
        Опишите, пожалуйста, подробнее, что у вас происходит. Может быть, дело и не в фильтре вовсе?

        Comment

        • amk
          Junior Member
          • Sep 2017
          • 15

          #5
          Да конечно!


          LLD Type SNMPv2 agent
          SNMP OID discovery[{#IFOPERSTATUS},1.3.6.1.2.1.2.2.1.8,{#IFADMINSTATU S},1.3.6.1.2.1.2.2.1.7,{#IFALIAS},1.3.6.1.2.1.31.1 .1.1.18,{#IFNAME},1.3.6.1.2.1.31.1.1.1.1,{#IFDESCR },1.3.6.1.2.1.2.2.1.2,{#IFTYPE},1.3.6.1.2.1.2.2.1. 3]

          Из макроса {#IFTYPE} который содержит значения вида:

          Code:
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          l2vlan(135)
          l2vlan(135)
          ieee8023adLag(161)
          tunnel(131)
          tunnel(131)
          tunnel(131)
          tunnel(131)
          необходимо оставить только с типом 6 то есть:

          Code:
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          Это сдалть я пытаюсь фильтром вида:
          Click image for larger version  Name:	Untitled.jpg Views:	1 Size:	16.0 KB ID:	382146



          Но ничего не происходит items не создаются

          если я делаю регулярное выражение (6) то items создаются но в них попадает лишнее:

          Code:
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ethernetCsmacd(6)
          ieee8023adLag(161)
          Как то так =)

          Comment

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

            #6
            Напрашивающееся решение: а может, в регулярном выражении вместо строки со скобками использовать другую часть значения, где никаких скобок нет?
            Code:
            ^ethernetCsmacd
            Вроде бы, в вашем случае это должно дать тот же результат?

            Comment

            • amk
              Junior Member
              • Sep 2017
              • 15

              #7
              Конечно это похоже на бред сумасшедшего. Но этот вариант я тоже пробовал.
              Code:
              ^ethernetCsmacd.*$
              ^ethernetCsmacd
              ether
              (ether)
              ^(ehter)

              все это не дает никакого результата
              но если я меня на (6) или (161) или все что угодно с цифрами в скобках регулярка работает.
              Так же пробовал все это вводить в Administration - General - Regular Expressions, то есть создаю регулярку присваиваю ей имя, тестирую ее - работает, а затем в фильтре LLD указываю @имярегулярки и не работает.

              Comment

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

                #8
                Не, фигня какая-то :-/
                По "ethernetCsmacd" (безо всяких скобок) должно срабатывать корректно (по крайней мере, в вашем случае).
                Может, всё же дело не в регулярке? После обновления правила нужно подождать минуту (пока обновится конфигурация работающего сервера), а затем ещё некоторое время (равное периоду работы LLD), чтобы дождаться очередного цикла низкоуровневого обнаружения. Может, просто не дождались результатов? (можно на время отладки период LLD выставить в пару минут, когда всё устаканится - вернуть в нормальное значение)
                Нет ли ошибок, как в веб-интерфейсе (на странице конфигурирования правила LLD - красной отметки в графе "Info"), так и в логе сервера Zabbix?

                Comment

                • amk
                  Junior Member
                  • Sep 2017
                  • 15

                  #9
                  Я форсирую обновление Configuration - Hosts - Discovery - Отмечаю нужное мне и нажимаю на кнопку Check now, после этого смотрю не появились ли новые items. Нет красный квадрат с восклицатенльным знаком отсутствует.
                  Еще пробовал в Administration - General - Regular Expressions создать правила с типом Character string included если указываю цифры 6 или 161 работает корректно Items появляются, если указываю (6) или ether не работает.


                  Попробую чистый zabbix развернуть на виртуалке и попробую сделал тоже самое.
                  Last edited by amk; 11-07-2019, 14:34.

                  Comment

                  • amk
                    Junior Member
                    • Sep 2017
                    • 15

                    #10
                    В общем установил чистый Zabbix 4.2.4
                    Добавил HOST
                    Открыл темплейт: Template Module Interfaces Simple SNMPv2
                    Добавил в Discovery еще одну строку FIlter как на фото

                    Click image for larger version  Name:	Безымянный.jpg Views:	1 Size:	84.7 KB ID:	382171

                    Слинковал его с HOST сделал check now и не работает, items не создаются.

                    Меняю ^ether на 6 делаю check now и все работает. Ни чего не понимаю…
                    Last edited by amk; 11-07-2019, 19:04.

                    Comment

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

                      #11
                      Прошёлся по своему свитчу утилитой snmpwalk, начиная с OID=1.3.6.1.2.1.2.2.1.
                      Собственно, причина проблемы стала очевидной.
                      Значения, которые возвращаются в таблице 1.3.6.1.2.1.2.2.1.3 (ifType), имеют тип "INTEGER". В текст эти значения преобразуются, видимо, при помощи таблицы Value Mapping, в результате чего при отображении в Zabbix-е подставляется более читабельное текстовое значение, а исходное целочисленное значение добавляется после него в круглых скобках. Но - главное! - в Zabbix приходит и в его истории сохраняется только число. Соответственно, любые попытки обрабатывать строки будут неуспешными.
                      Так что, для вашего случая (брать только значения с шестёркой) правильным регулярным выражением будет:
                      Code:
                      ^6$

                      Comment

                      • amk
                        Junior Member
                        • Sep 2017
                        • 15

                        #12
                        Kos и правда видел же но не придал этому значения, смутили буквы в начале, спасибо за помощь!

                        Comment

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

                          #13
                          Заработало как надо?

                          Comment

                          • amk
                            Junior Member
                            • Sep 2017
                            • 15

                            #14
                            Да все взлетело

                            Comment

                            Working...