繁体   English   中英

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

[英]Parsing data with grok filter on logstash

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

我究竟做错了什么? 谢谢!

您应该将%{DAY} (= 星期几的名称)更改为%{MONTHDAY} (以匹配数字 )并转义+以将其匹配为文字+字符:

^%{IPV4:req_id} - - \[(?<date>%{MONTHDAY}/%{MONTH}/%{YEAR}:%{HOUR}:%{MINUTE}:%{SECOND} \+0000)]
                              ^^^^^^^^^^^                                              ^

根据Calvin Taylor的建议,您可以进一步增强模式以匹配任何ISO8601时区与%{ISO8601_TIMEZONE}而不是\\+0000

^%{IPV4:req_id} - - \[(?<date>%{MONTHDAY}/%{MONTH}/%{YEAR}:%{HOUR}:%{MINUTE}:%{SECOND} %{ISO8601_TIMEZONE})]
                                                                                       ^^^^^^^^^^^^^^^^^^^

请参阅Grok模式

MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])
DAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM