我在logstash中新手grok,我必须解析以下日志模式。
Jul 26 09:46:37 abc-lb1 2016-07-26 09:46:37.245 +0200 abc-lb1 WF WARN UNRECOGNIZED_COOKIE 188.200.126.234 50011 10.50.51.25 443 global GLOBAL LOG NONE [Cookie\="_ga" Service-created\="769 days back" Reason\="No valid encrypted pair"] GET example.com/search.action?searchText\=EH-5H&token\=--0----EH-5H-- TLSv1.2 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" 188.200.126.234 50011 "-" https://example.com/my-account/login
我需要知道如何避免GROK中的一组字符串
在上面的日志中,可以看到重复的时间戳,我需要知道,如何避免字符串如下:
Jul 26 09:46:37 abc-lb1
答案 0 :(得分:0)
假设您只需要两个DataFrame
和2016-07-26 09:46:37.245
字段,那么您的grok过滤器应如下所示:
https://example.com/my-account/login
您将获得以下输出:
grok{ match => {"message" => "%{TIMESTAMP_ISO8601:time} %{GREEDYDATA} %{URI:url}"} }
通过直接从{
"time": [
[
"2016-07-26 09:46:37.245"
]
],
"url": [
[
"https://example.com/my-account/login"
]
]
}
开始,您可以避免日志行中的前几个字段,并且通过不命名2016-07-26 09:46:37.245
来避免介于两者之间的所有字段。如果您将%{GREEDYDATA}
命名为%{GREEDYDATA}
,那么您将输出如下:
%{GREEDYDATA:data}
现在,您可以将相同的步骤应用于您想要避免的任何字段。
您可以调试结果here