在 logstash 上使用 grok 过滤器解析数据
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}
(以匹配 数字) 并转义 +
以将其匹配为文字 +
char:
^%{IPV4:req_id} - - \[(?<date>%{MONTHDAY}/%{MONTH}/%{YEAR}:%{HOUR}:%{MINUTE}:%{SECOND} \+0000)]
^^^^^^^^^^^ ^
如 Calvin Taylor 所建议,您可以进一步增强模式以匹配任何带有 %{ISO8601_TIMEZONE}
而不是 \+0000
:
的 ISO8601 时区
^%{IPV4:req_id} - - \[(?<date>%{MONTHDAY}/%{MONTH}/%{YEAR}:%{HOUR}:%{MINUTE}:%{SECOND} %{ISO8601_TIMEZONE})]
^^^^^^^^^^^^^^^^^^^
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)?)
我在 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}
(以匹配 数字) 并转义 +
以将其匹配为文字 +
char:
^%{IPV4:req_id} - - \[(?<date>%{MONTHDAY}/%{MONTH}/%{YEAR}:%{HOUR}:%{MINUTE}:%{SECOND} \+0000)]
^^^^^^^^^^^ ^
如 Calvin Taylor 所建议,您可以进一步增强模式以匹配任何带有 %{ISO8601_TIMEZONE}
而不是 \+0000
:
^%{IPV4:req_id} - - \[(?<date>%{MONTHDAY}/%{MONTH}/%{YEAR}:%{HOUR}:%{MINUTE}:%{SECOND} %{ISO8601_TIMEZONE})]
^^^^^^^^^^^^^^^^^^^
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)?)