我在logstash上使用grok过滤器时遇到问题。 我有这个日志:
83.149.9.216 - - [04 / Jan / 2015:05:13:42 +0000]
我想解析IP和日期。 我有下面的代码,但我没有匹配。
^%{IPV4:req_id} - - \[(?<date>%{DAY}/%{MONTH}/%{YEAR}:%{HOUR}:%{MINUTE}:%{SECOND} +0000)]
我做错了什么? 谢谢!
答案 0 :(得分:3)
您应该将%{DAY}
(= 周名称的日期)更改为%{MONTHDAY}
(以匹配数字)并转义{{ 1}}将其匹配为文字+
char:
+
根据Calvin Taylor的建议,您可以进一步增强模式以匹配任何ISO8601时区与^%{IPV4:req_id} - - \[(?<date>%{MONTHDAY}/%{MONTH}/%{YEAR}:%{HOUR}:%{MINUTE}:%{SECOND} \+0000)]
^^^^^^^^^^^ ^
而不是%{ISO8601_TIMEZONE}
:
\+0000
请参阅Grok patterns:
^%{IPV4:req_id} - - \[(?<date>%{MONTHDAY}/%{MONTH}/%{YEAR}:%{HOUR}:%{MINUTE}:%{SECOND} %{ISO8601_TIMEZONE})]
^^^^^^^^^^^^^^^^^^^