使用grok过滤器在logstash上解析数据

时间:2017-11-08 10:22:20

标签: regex logstash-grok grok

我在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)]

我做错了什么? 谢谢!

1 个答案:

答案 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})]
                                                                                       ^^^^^^^^^^^^^^^^^^^