如何解决如何使用 grok 模式在日志消息中找到带有特定单词的带引号的字符串
我的服务器有一条日志消息,格式如下:
{"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
]
],"data_after": [
[
null
]
]
}
{"source_type":"ABCD","host":"a.b.com","data_type":"ABCD"}
输出:
{
"data_before": [
[
"source_type":"ABCD"
]
],"data_after": [
[
"data_type":"ABCD"
]
]
}
提示:使用以下资源来调整和测试您的日志记录模式:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。