我正在尝试在 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 模式与输入中的数据不匹配”。
我怎样才能正确地使这种后向/前瞻工作?
编辑:我应该注意,在 Grok 模式末尾没有 postgrey_action 匹配,Grok 调试器会按预期运行和工作(使用 linux-syslog 和 grok-patterns)。
Logstash 版本 6.3.2