Ad Widget

Collapse

Функция для тригера по элементу текст

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • fractal90
    Senior Member
    • Jun 2019
    • 177

    #1

    Функция для тригера по элементу текст

    Привет, подскажите какую лучше задействовать функцию для тригера по тексту?

    есть элемент, он получает данные - "Active device", хочу чтобы заббикс уведомлял о том, что он теперь получает данные не "Active device", а например error или unknown, вообщем все что отличается от Active
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Функции str() или regexp().
    Например:
    Code:
    {Host:item.str("Active device")}=0
    сработает в том случае, если на хосте Host в элемент данных Item придёт текстовое значение, в котором НЕ будет найдена указанная Вами подстрока.

    Либо:
    Code:
    {Host:item.regexp("^Active device$")}=0
    - в случае, если надо обязательно проверять на полное совпадение (а не просто искать подстроку).

    Comment


    • fractal90
      fractal90 commented
      Editing a comment
      спасибо, пойду пробовать
  • fractal90
    Senior Member
    • Jun 2019
    • 177

    #3
    Originally posted by Kos
    Функции str() или regexp().
    Например:
    Code:
    {Host:item.str("Active device")}=0
    сработает в том случае, если на хосте Host в элемент данных Item придёт текстовое значение, в котором НЕ будет найдена указанная Вами подстрока.

    Либо:
    Code:
    {Host:item.regexp("^Active device$")}=0
    - в случае, если надо обязательно проверять на полное совпадение (а не просто искать подстроку).
    сделал такого вида

    {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Active unit$")}
    or {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Standby unit$")}
    and {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Standby unit$")}
    or {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")}=0
    то есть если состояние по этим элементам не Standby unit или Active unit тогда тригер должен сработать, но почему то не хочет так..

    и вот так не работает,

    {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Active unit$")} or {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Standby unit$")}=0
    Last edited by fractal90; 24-01-2021, 12:16.

    Comment

    • fractal90
      Senior Member
      • Jun 2019
      • 177

      #4
      да, я немного упустил, эти значения перманентно должны быть, то есть "cfwHardwareStatusDetail.6 всегда равно Active unit", а "cfwHardwareStatusDetail.6 всегда равно Standby unit" вообщем сделал так

      {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Active unit$")} and {Cisco ASA CORE NSK ACTIVE:cfwHardwareStatusDetail.7.regexp("^Standby unit$")}=0
      в этом случае если элементы стоят именно в этих состояниях, то все норм, иначе срабатывает тригер.

      Comment

      • fractal90
        Senior Member
        • Jun 2019
        • 177

        #5
        а хотя нет, все равно что то не то, как правильно в этом случае сделать так чтобы тригер срабатывал если значения не равны данным? "[TR]
        [TD]{Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Active unit$")} and {Cisco ASA CORE NSK ACTIVE:cfwHardwareStatusDetail.7.regexp("^Standby unit$")}=0[/TD]
        [/TR]
        "

        Comment

        • fractal90
          Senior Member
          • Jun 2019
          • 177

          #6
          правильно ли будет это сделать с count?
          {Cisco ASA:cfwHardwareStatusDetail.6.count(3m,"^Standb y unit$",like)} and
          {Cisco ASA:cfwHardwareStatusDetail.7.count(3m,"^Active unit$",like)}>=3

          Comment

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

            #7
            Originally posted by fractal90
            сделал такого вида
            Code:
            {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Active unit$")}
            or {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Standby unit$")}
            and {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Standby unit$")}
            or {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")}=0
            то есть если состояние по этим элементам не Standby unit или Active unit тогда тригер должен сработать, но почему то не хочет так..

            и вот так не работает
            А кто будет сравнивать с нулём значения остальных выражений, кроме последнего?
            Code:
            {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Active unit$")}[B][COLOR=#0000ff]=0[/COLOR][/B]
            or {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Standby unit$")}[B][COLOR=#0000ff]=0[/COLOR][/B]
            and {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Standby unit$")}[B][COLOR=#0000ff]=0[/COLOR][/B]
            or {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")}=0

            Comment

            • fractal90
              Senior Member
              • Jun 2019
              • 177

              #8
              Originally posted by Kos
              А кто будет сравнивать с нулём значения остальных выражений, кроме последнего?
              Code:
              {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Active unit$")}[B][COLOR=#0000ff]=0[/COLOR][/B]
              or {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Standby unit$")}[B][COLOR=#0000ff]=0[/COLOR][/B]
              and {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Standby unit$")}[B][COLOR=#0000ff]=0[/COLOR][/B]
              or {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")}=0
              хм, я думал я почему то думал что одного достаточно

              вот что я получаю

              Code:
              .1.3.6.1.4.1.9.9.147.1.2.1.1.1.4.4 = STRING: folink TenGigabitEthernet0/6 (system)
              .1.3.6.1.4.1.9.9.147.1.2.1.1.1.4.6 = STRING: [COLOR=#f1c40f]Unit has failed[/COLOR]
              .1.3.6.1.4.1.9.9.147.1.2.1.1.1.4.7 = STRING: [B]Active unit[/B]
              в нормальном режиме вместо текущего значения "Unit has failed" должен стоять "Standby unit", то есть сейчас он должен сработать при созданном тригере с условием "И"

              Code:
              {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Standby unit$")}=0 and
              {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")}=0
              но что то не то)

              Comment

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

                #9
                Originally posted by fractal90
                вот что я получаю
                Code:
                .1.3.6.1.4.1.9.9.147.1.2.1.1.1.4.4 = STRING: folink TenGigabitEthernet0/6 (system)
                .1.3.6.1.4.1.9.9.147.1.2.1.1.1.4.6 = STRING: [COLOR=#f1c40f]Unit has failed[/COLOR]
                .1.3.6.1.4.1.9.9.147.1.2.1.1.1.4.7 = STRING: [B]Active unit[/B]
                в нормальном режиме вместо текущего значения "Unit has failed" должен стоять "Standby unit", то есть сейчас он должен сработать при созданном тригере с условием "И"
                Code:
                {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Standby unit$")}=0 and
                {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")}=0
                но что то не то)
                Если у вас два условия соединены операцией "and", то, очевидно, для срабатывания триггера должны выполняться оба.
                А у вас второе условие не выполняется ({Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")} вернёт единицу).

                Comment

                • fractal90
                  Senior Member
                  • Jun 2019
                  • 177

                  #10
                  Originally posted by Kos
                  Если у вас два условия соединены операцией "and", то, очевидно, для срабатывания триггера должны выполняться оба.
                  А у вас второе условие не выполняется ({Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")} вернёт единицу).
                  не совсем понимаю, с функцией regexp не выйдет работа совместно с оператором and и разными условиями?

                  Comment

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

                    #11
                    Почему же, всё выйдет. Только объясните человеческим языком, что вы хотите настроить.
                    Сейчас процитированное выражение:
                    Code:
                    {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Standby unit$")}=0
                    and
                    {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")}=0
                    означает: шестой параметр НЕ РАВЕН "Standby unit" И седьмой параметр НЕ РАВЕН "Active unit".

                    Для шестого параметра это условие и в самом деле выполняется (для него пришло значение "Unit has failed").
                    А для седьмого - не выполняется (его значение таки "Active unit").

                    Или я чего-то не понимаю?

                    Comment

                    • fractal90
                      Senior Member
                      • Jun 2019
                      • 177

                      #12
                      Originally posted by Kos
                      Почему же, всё выйдет. Только объясните человеческим языком, что вы хотите настроить.
                      Сейчас процитированное выражение:
                      Code:
                      {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Standby unit$")}=0
                      and
                      {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")}=0
                      означает: шестой параметр НЕ РАВЕН "Standby unit" И седьмой параметр НЕ РАВЕН "Active unit".

                      Для шестого параметра это условие и в самом деле выполняется (для него пришло значение "Unit has failed").
                      А для седьмого - не выполняется (его значение таки "Active unit").

                      Или я чего-то не понимаю?
                      да, все верно, это два параметра на одной железке, 6 параметр отвечает за часть кластера фаерволла который в данный момент standby, а 7 в режиме active (через него ходит трафик), при аварии сменяется статус к примеру "Unit has failed" и вот в этот момент нужно давать сработку и смотреть на какой ноде проблема, в нормальном режиме работы на железке должны быть оба статуса в значениях "active" и "standby"

                      в итоге, получаем значения одновременно "active" и "standby" значит аварии нет, если один из параметров изменился на другое значение значит авария

                      Comment

                      • Semiadmin
                        Senior Member
                        • Oct 2014
                        • 1625

                        #13
                        В таком случае можно записать:
                        not ({Cisco ASA:cfwHardwareStatusDetail.6.regexp("^Standby unit$")} and {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^Active unit$")})
                        условия "=1" я опустил за ненадобностью, но можно их добавить для читабельности.

                        Comment

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

                          #14
                          Ну, если допустимыми значениями для обоих параметров являются лишь "Standby unit" и "Active unit", то можно (в первом приближении) указать, что нужно ругаться на что-либо отличное от них:
                          Code:
                          {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^(Standby|Active) unit$")}=0 or {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^(Standby|Active) unit$")}=0
                          Это, правда, не проверяет ситуацию, когда оба параметра одновременно равны "Standby" либо "Active" (по идее, тогда тоже надо ругаться), но зато достаточно просто формулируется.

                          Comment

                          • fractal90
                            Senior Member
                            • Jun 2019
                            • 177

                            #15
                            Originally posted by Kos
                            Ну, если допустимыми значениями для обоих параметров являются лишь "Standby unit" и "Active unit", то можно (в первом приближении) указать, что нужно ругаться на что-либо отличное от них:
                            Code:
                            {Cisco ASA:cfwHardwareStatusDetail.6.regexp("^(Standby|Active) unit$")}=0 or {Cisco ASA:cfwHardwareStatusDetail.7.regexp("^(Standby|Active) unit$")}=0
                            Это, правда, не проверяет ситуацию, когда оба параметра одновременно равны "Standby" либо "Active" (по идее, тогда тоже надо ругаться), но зато достаточно просто формулируется.
                            ну, оба "Standby" так никогда не будет, либо это баг, оба "Active", тут просто мониторинг совсем работать не будет) а так да, с or и в таком виде очень компактно и красиво, спасибо

                            Comment

                            Working...