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.
    Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.

    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...