[英]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.