пользовательский шаблон для фильтрации строк при использовании telegraf input.logparser.grok - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь отфильтровать отдельные слова в файле журнала с помощью регулярных выражений, цель состоит в том, чтобы любая строка журнала, соответствующая регулярному выражению в custom_pattern, перешла в impxdb, а строки журнала, которые не совпадают, будут игнорироваться. Когда я тестировал регулярное выражение, оно работает, даже на игровой площадке golang (https://play.golang.org/p/_apzOVwwgl2). Но когда я использую его в conf-файле telegraf, как показано ниже, он не работает, нет входных данных в influenxdb. мне не хватает того, что должно быть добавлено в конфигурацию?

Я протестировал регулярное выражение на http://grokdebug.herokuapp.com/ и https://play.golang.org/p/_apzOVwwgl2, оно работает, но не в custom_patterns в [input.logparser.grok].

Вот мой конфиг grok

[[inputs.logparser]]
   files = ["/var/log/test1"]
   from_beginning = true

   [inputs.logparser.grok]
      patterns = ["%{FAIL_LOG}"]
      custom_patterns = '''FAIL_LOG ^.*?\b(multipathd?)\b.*?\b(failed|failing|(remaining active paths))\b.*?$'''

Шаблон должен соответствовать первым 2 строкам журнала, как показано ниже, и игнорировать третью строку.

Oct 29 03:29:03 dc-as-5p multipath: checker failed interface 8:0 in map 150gb
Oct 29 03:29:03 dc-as-5p multipathd: checker failing interface 8:0 in map 150gb
Oct 29 03:26:03 dc-as-5p link: checker down remaining active paths interface 8:0 in map 150gb

Чтоя делаю не так?

...