Я пытаюсь использовать lookbehind и lookahead в пользовательском шаблоне Grok и получаю ошибки совпадения с шаблоном в отладчике Grok, которые не могу устранить.
Это для архивирования системных журналов.В настоящее время я пытаюсь разобрать приложение postgrey.
Приведенные данные, такие как:
2019-04-09T11:41:31-05:00 67.157.192.7 postgrey: action=pass, reason=triplet found, delay=388, client_name=unknown, client_address=103.255.78.9, sender=members@domain.com, recipient=person@domain.com
Я пытаюсь использовать следующее, чтобы натянуть строку между «action =» и запятой, следующей сразу за ней в качестве поля «postgrey_action»:
%{TIMESTAMP_ISO8601:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG} (?<postgrey_action>(?<=action=).+?(?=\,))
Я ожидаю увидеть следующий вывод:
{
"program": "dhcpd:",
"logsource": "66.146.192.67",
"timestamp": "2019-04-09T11:41:31-05:00"
"postgrey_action": "pass"
}
Вместо этого от отладчика я получаю «При условии, что шаблоны Grok не соответствуют данным на входе».
Как правильно заставить работать этот lookbehind / lookahead?
Редактировать: я должен отметить, что без совпадения postgrey_action в конце шаблона Grok, отладчик Grok работает и работает как положено (используя linux-syslog и grok-pattern).
Logstash версии 6.3.2