Я пытаюсь отфильтровать определенные слова в файле журнала с помощью регулярного выражения, цель состоит в том, чтобы любая строка журнала, соответствующая регулярному выражению в custom_pattern, попадала в influxdb, строки журнала, которые не соответствуют, будут игнорироваться. Когда я тестировал регулярное выражение, оно работало даже на игровой площадке golang (https://play.golang.org/p/_apzOVwwgl2). Но когда я использую его в файле конфигурации телеграфа, как показано ниже, он не работает, вход в influxdb отсутствует. Есть ли что-то, что мне не хватает, что следует добавить в конфигурацию?
Я протестировал регулярное выражение на http://grokdebug.herokuapp.com/ и https://play.golang.org/p/_apzOVwwgl2 это работает, но не в custom_patterns в [inputs.logparser .грок].
Вот мой конфиг грока
[[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.*?$'''
Предполагается, что шаблон соответствует первым двум строкам журнала, как показано ниже, и игнорирует третью строку.
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
Что я делаю не так?
%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME} (?<prog>multipathd?): (?<message>(.*(failed|failing|(remaining active paths)).*))
, я все еще мог сопоставить первые две строки журнала, как и ожидалось, без соответствия третьей строке журнала. Однако, когда я использую этот шаблон внутри inputs.logparser.grok, он все равно не работает, входные данные не записываются в influxdb. Помогите, пожалуйста! - person tfalade   schedule 31.10.2019