Ad Widget

Collapse

Предобработка (preprocessing) регулярным выражением

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • phineev
    Junior Member
    • Jan 2020
    • 10

    #1

    Предобработка (preprocessing) регулярным выражением

    Добрый день.


    Сетевое устройство в момент простоя дает значение метрик по snmp "" - пусто. В момент соединения видео/аудио "NN.NNNN" (любое число)
    Метрики могут быть как целые так и с плавающей запятой.

    В результате создания метрики в режиме простоя она в ошибке, данные корректно поступают только в момент сеанса связи

    я обработал метрику регулярным выражением
    Click image for larger version

Name:	image.PNG
Views:	150
Size:	99.4 KB
ID:	401390

    Если пусто то значение равно 0

    теперь обратная ситуация

    если простой и метрика пуста то она равна нулю,
    но если данные пошли ошибка регулярного выражения (cannot perfom regular expression mach )

    Посоветуйте пожалуйста правильное использование предобработки регулярным выражением, чтоб на выходе получить

    0 если исходные данные ""
    любое число если исходные данные "любое число" (например "1.254" --> 1.254)




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

    #2
    Вы не указали версию используемого сервера Zabbix.
    В v4.4 появилась функция предобработки "Validation", которую в Вашем случае можно использовать вместо второго шага препроцессинга: проверять, что принятое значение подходит под шаблон регулярного выражения (например, "^\d+\.\d+$"), а если не подходит - то через галочку "Custom on fail" заменять значение нулём.

    В более ранних версиях можно лишь извращаться с регулярными выражениями в несколько шагов; но если результатом должно быть число, то самый простой вариант - на втором шаге просто приписывать к полученному значению (возможно, пустому) нолик слева. Для числовых величин это особо ни на что не повлияет, зато пустые строки превратятся в честный ноль.

    Comment

    • phineev
      Junior Member
      • Jan 2020
      • 10

      #3
      Спасибо за ответ.

      Я использую Zabbix 4.0 именно либо извращаться либо подставить 0 слева. Именно это я сейчас ищу . Не подскажите ка это можно сделать? Регулярка в основном проверяет на соответствие а не добавляет символ. Или я не прав ?

      Comment

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

        #4
        Originally posted by phineev
        Спасибо за ответ.

        Я использую Zabbix 4.0 именно либо извращаться либо подставить 0 слева. Именно это я сейчас ищу . Не подскажите ка это можно сделать? Регулярка в основном проверяет на соответствие а не добавляет символ. Или я не прав ?
        Да, у меня самого тоже пока что 4.0 (поскольку LTS).

        Подставить слева с помощью регулярного выражения можно, например, так:
        Выражение:
        Code:
        ^(.*)$
        Замена:
        Code:
        0\1

        Comment

        • phineev
          Junior Member
          • Jan 2020
          • 10

          #5
          Спасибо огромное работает

          Comment

          Working...