如何使用 grok 模式在日志消息中找到带有特定单词的引号字符串
How do you find a quoted string with specific word in a log message using grok pattern
我的服务器有一条日志消息,格式如下:
{"host":"a.b.com","source_type":"ABCD"}
到目前为止我有这个 grok 模式,但它接受双引号中的任何单词。
\A%{QUOTEDSTRING}:%{PROG}
如何更改仅检查“主机”的“QUOTEDSTRING”?
“host”并不总是在消息的开头,也可以在消息的中间找到。
感谢您的帮助。
由于问题指定“host”可以在日志中的任何位置,您可以使用以下内容:
\{(\"%{GREEDYDATA:data_before}\",)?(\"host\":\"%{DATA:host_value}\")?(,\"%{GREEDYDATA:data_after}\")?\}
解释:
- data_before 存储找到主机类型条目之前的可选数据。您可以根据需要将其分开
- host :这存储主机值
- data_after 存储找到主机类型条目后的可选数据。你可以根据你的需要将它分开
示例:
{"host":"a.b.com","source_type":"ABCD"}
输出:
{
"data_before": [
[
null
]
],
"host_value": [
[
"a.b.com"
]
],
"data_after": [
[
"source_type":"ABCD"
]
]
}
{"host":"a.b.com"}
输出:
{
"data_before": [
[
null
]
],
"host_value": [
[
"a.b.com"
]
],
"data_after": [
[
null
]
]
}
{"source_type":"ABCD","host":"a.b.com","data_type":"ABCD"}
输出:
{
"data_before": [
[
"source_type":"ABCD"
]
],
"host_value": [
[
"a.b.com"
]
],
"data_after": [
[
"data_type":"ABCD"
]
]
}
提示:使用以下资源来调整和测试您的日志记录模式:
我的服务器有一条日志消息,格式如下:
{"host":"a.b.com","source_type":"ABCD"}
到目前为止我有这个 grok 模式,但它接受双引号中的任何单词。
\A%{QUOTEDSTRING}:%{PROG}
如何更改仅检查“主机”的“QUOTEDSTRING”? “host”并不总是在消息的开头,也可以在消息的中间找到。
感谢您的帮助。
由于问题指定“host”可以在日志中的任何位置,您可以使用以下内容:
\{(\"%{GREEDYDATA:data_before}\",)?(\"host\":\"%{DATA:host_value}\")?(,\"%{GREEDYDATA:data_after}\")?\}
解释:
- data_before 存储找到主机类型条目之前的可选数据。您可以根据需要将其分开
- host :这存储主机值
- data_after 存储找到主机类型条目后的可选数据。你可以根据你的需要将它分开
示例:
{"host":"a.b.com","source_type":"ABCD"}
输出:
{
"data_before": [
[
null
]
],
"host_value": [
[
"a.b.com"
]
],
"data_after": [
[
"source_type":"ABCD"
]
]
}
{"host":"a.b.com"}
输出:
{
"data_before": [
[
null
]
],
"host_value": [
[
"a.b.com"
]
],
"data_after": [
[
null
]
]
}
{"source_type":"ABCD","host":"a.b.com","data_type":"ABCD"}
输出:
{
"data_before": [
[
"source_type":"ABCD"
]
],
"host_value": [
[
"a.b.com"
]
],
"data_after": [
[
"data_type":"ABCD"
]
]
}
提示:使用以下资源来调整和测试您的日志记录模式: