我们如何在GROK中转义一组字符串或字符

时间:2016-07-26 11:41:02

标签: logstash logstash-grok elastic-stack grok

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

1 个答案:

答案 0 :(得分:0)

假设您只需要两个DataFrame2016-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