【发布时间】:2020-02-06 20:29:24
【问题描述】:
我是 Logstash 的新手。我想使用 grok 将日志文件中的每一行解析为 json 对象。我的日志如下所示:
1570519737247 I access {"date":"2019-10-08T09:28:57.247","rootTitle":"title1","rootModel":"model1","dcTitle":"[1a]"}
1570519737247 I access {"date":"2019-10-08T09:28:57.247","rootTitle":"title2","rootModel":"model2","dcTitle":"[1b]"}
可以看到每一行都是以文本开头,然后是有效的json对象。
我想为每一行构造一个像这样的对象:
{
"accesing": "1570519737247",
"message": {
"date":"2019-10-08T09:28:57.247",
"rootTitle":"title1",
"rootModel":"model1",
"dcTitle":"[1a]"
}
}
所以我想把开头的数字分配给“访问”键,我不需要“我访问”这个词,然后是 json 对象来“消息”。
我在 grok 调试器 %{WORD:accesing} %{GREEDYDATA:message} 中尝试了这种模式,但当然这不是我需要的。请问,有人可以帮忙吗?
【问题讨论】:
-
并且在grok过滤器之后,如Ishara的回答所示,可以使用json过滤器来解析消息。
标签: json elasticsearch logstash logstash-grok