Ad Widget

Collapse

Zabbix предобработка регулярным выражением

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Rust10m
    Junior Member
    • Aug 2021
    • 2

    #1

    Zabbix предобработка регулярным выражением

    Всем здравствуйте, напишите пожалуйста как исправить регулярное выражение. Обрабатываю зависимый тип данных на вход подается лог файл, пытаюсь получить число после обработки. Не знаю почему пытается обработать 4 строку.

    Шаблон: total flows\: (\d+) \1

    Ожидаемый результат: 7080

    Текст обработки:
    Summary: total flows: 7080, total bytes: 212.5 M, total packets: 258028, avg bps 2,9 M
    Time window: 2021-08-04 11:22:13 - 2021-08-04 11:31:55
    Total flows processed: 7080, Blocks skipped: 0, Bytes read: 396600
    Sys: 0.003s flows/second: 2480769.2 Wall: 0.002s flows/second: 3353137.8

    Ошибка:
    Processing failed for: Sys: 0.003s flows/second: 2480769.2 Wall: 0.002s flows/second: 3353137.8
    1. Failed: cannot perform regular expression "total flows\: (\d+)" match for value of type "string": pattern does not match
  • johndoe2374
    Member
    • Aug 2021
    • 80

    #2
    Вы забыли про слово "processed" в регулярном выражении, плюс не забывайте про регистр, либо добавляйте (?i) для отключения чувствительности. Правило предобработки будет выглядеть так:
    - шаблон: Total flows processed\: (\d+)
    - вывод: \1
    Last edited by johndoe2374; 09-08-2021, 09:22. Reason: Тут же сам забыл про "processed" )

    Comment

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

      #3
      Покажите, пожалуйста:
      • версию сервера Zabbix, с которой работаете;
      • что приходит не в лог-файл, а в качестве значения мастер-айтема (можно посмотреть в истории).
      Как правило, при обработке логов (например, с использованием стандартных метрик "log[...]" или "logrt[...]") каждая строка лог-файла приходит в виде отдельного значения.
      Предобработка с использованием регулярных выражений предполагает, что под это регулярное выражение подпадает каждое обрабатываемое значение (т.е. в случае логов - каждая строка обрабатывается отдельно, и для каждой это регулярное выражение должно что-то найти).
      Очевидно, что в последней строке из Вашего примера исходный шаблон не находит соответствия, что приводит к ошибке. Немного смущает то, что то же самое должно происходить и с предыдущими двумя строками.

      Решение, соответственно, должно сводиться к тому, чтобы в зависимом элементе данных ненужные значения игнорировать.
      Это можно делать разными путями, например:
      • для шага препроцессинга "Regular expression" проставить галочку "Custom on fail" и действие: "Discard value" (самый простой, на мой взгляд, способ);
      • добавить предварительный шаг препроцесинга "Matches regular expression" с тем же регулярным выражением (и, опционально, тем же действием "Discard value");
      • откорректировать исходный мастер-айтем, чтобы он возвращал только нужные строки и ничего лишнего.

      Comment


      • Rust10m
        Rust10m commented
        Editing a comment
        Спасибо, исправил ошибку использовав опцию "Custom on fail".

        Версия Zabbix 5.0.13
        Значения мастер-айтема:
        Sys: 0.004s flows/second: 1514705.9 Wall: 0.002s flows/second: 2281284.6
        Total flows processed: 6180, Blocks skipped: 0, Bytes read: 346200
        Time window: 2021-08-17 09:17:09 - 2021-08-17 09:26:59
        Summary: total flows: 6180, total bytes: 87.1 M, total packets: 121663, avg bps: 1.2 M, avg pps: 206, avg bpp: 716
    Working...