我想通过logstash的grok过滤器提取字段。例如,如果出现以下日志,我想提取消息时间,线程,日志级别和状态代码。
2020-01-01 10:10:10 [QuartzScheduler-1]错误发生c.l.c.i.c.t.a.c.AmazonElbV2Task-Exception ..... LoadBalancing;状态码:400;错误代码:节流;
消息时间,线程和日志级别是通过以下过滤器提取的。如何提取状态码?
%{TIME:messageTime} [(?[A-Za-z0-9 \ W .-_] +)]%{LOGLEVEL:logLevel}
您可以使用以下GROK表达式。使用GROK调试器对您提供的输入进行了测试。我建议您也使用kibana的GROK调试器,或者可以在线找到1个以构建GROK表达式。
^%{TIMESTAMP_ISO8601:event_timestamp}%{SPACE}\[%{DATA:thread}\]%{SPACE}%{LOGLEVEL:log_level}%{GREEDYDATA}Status Code: %{NUMBER:status:int}%{GREEDYDATA}$