Ad Widget

Collapse

Zabbix 3.4.6, regex, препроцессинг

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Anth(0)ny
    Member
    • Jul 2015
    • 42

    #1

    Zabbix 3.4.6, regex, препроцессинг

    Здравствуйте!

    Есть проблема с raw-данными элемента и их препроцессингом через регулярное выражение.

    Основной элемент: агент telnet с 2 пошаговыми командами. 2 введенных запроса возвращают отформатированный многострочный xml (текст) с несколькими строками мусора (эхо от введенных команд).

    Зависимые элементы: получает данные из основного элемента через запрос xpath
    Данные: должны извлекаться из основного элемента - различные типы (текстовые, цифровые и т.д.)

    Если не использовать regex, в результате запроса я получаю 2 похожих xml-блока данных (и немного промежуточного мусора), и мне нужно игнорировать 1-ое вхождение (1-й xml блок) и поместить данные в элемент только от 2-го xml-блока, потому что 1-й бесполезен и ДОЛЖЕН игнорироваться.

    Теги xml-блоков:
    Code:
    <RESPONSE VERSION = "L100"> ... </RESPONSE>
    Проблема: я всегда получаю пустые данные в основной элемент, если я пытаюсь использовать его предварительную обработку с помощью regexp. Основной элемент поддерживается, но данные всегда пусты.

    Может ли кто-нибудь помочь с препроцессингом, с правильным регулярным выражением?

    Я пытаюсь использовать такую общую схему:

    1. Основной элемент получает необработанные текстовые данные с блоками xml и пытается извлечь второе вхождение с этим регулярным выражением:

    Code:
    (?:<R((?:.*?\r?\n?)*)E>)
    Output formatting: \2
    2. Все зависимые элементы извлекают данные из основного элемента через запросы xpath, например:

    Code:
    /RESPONSE[@VERSION="L100"]/OBJECT[1]//PROPERTY[@name="virtual-disk-serial"]/text()
    
    /RESPONSE[@VERSION="L100"]/OBJECT[1]//PROPERTY[@name="health-numeric"]/text()
    
    и т.д
    Полный xml-выхлоп и текущее экспериментальное регулярное выражение препроцессинга находятся здесь: https://regex101.com/r/I2ehOc/3

    Спасибо!
  • UncleSam
    Junior Member
    • Aug 2013
    • 5

    #2
    Для получения основного элемента попробуйте использовать regexp флаг "single line" тогда регулярное выражение будет проще.

    regexp: /<R.*?E>.*(<R.*E>)/s
    А единственным результатом поиска будет второй XML.
    Explore and test this PCRE (Legacy) regular expression online. Understand the pattern with regex explanations, generate code, and export matches to CSV or JSON.

    Comment

    • Anth(0)ny
      Member
      • Jul 2015
      • 42

      #3
      Спасибо, мне уже помогли =)

      Вот результаты всех моих изысканий, шаблон для мониторинга HP MSA.

      The Zabbix Team has collected all official Zabbix monitoring templates and integrations.

      Comment

      Working...