我们如何在 GROK 中转义一组字符串或字符
How do we escape a set of strings or characters in 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
I need to know How to avoid a set of strings in GROK
在上面的日志中,可以看到重复的时间戳,我需要知道,如何避免这样的字符串:
Jul 26 09:46:37 abc-lb1
假设您只需要 2016-07-26 09:46:37.245
和 https://example.com/my-account/login
两个字段,那么您的 grok 过滤器应该如下所示:
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}
那么你将输出如下:
{
"time": [
[
"2016-07-26 09:46:37.245"
]
],
"data": [
[
"+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 "-""
]
],
"url": [
[
"https://example.com/my-account/login"
]
]
}
现在您可以对要避免的任何字段应用相同的步骤。
你可以调试结果here
我是 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
I need to know How to avoid a set of strings in GROK
在上面的日志中,可以看到重复的时间戳,我需要知道,如何避免这样的字符串:
Jul 26 09:46:37 abc-lb1
假设您只需要 2016-07-26 09:46:37.245
和 https://example.com/my-account/login
两个字段,那么您的 grok 过滤器应该如下所示:
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}
那么你将输出如下:
{
"time": [
[
"2016-07-26 09:46:37.245"
]
],
"data": [
[
"+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 "-""
]
],
"url": [
[
"https://example.com/my-account/login"
]
]
}
现在您可以对要避免的任何字段应用相同的步骤。
你可以调试结果here