在Logstash中解析嵌套的JSON字符串 [英] Parsing nested JSON string in Logstash
本文介绍了在Logstash中解析嵌套的JSON字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在以json格式登录logstash,
我的日志有以下字段,每个字段是一个字符串,而atts
字段是一个字符串化的json(注意:atts
子字段每次都不同)
I am logging to logstash,in json format,
my logs have the following fields, each field is a string and the atts
field is a stringified json (note: atts
sub fields are different each time)
这是一个示例:
{"name":"bob","last":"builder", "atts":"{\"a\":111, \"b\":222}"}
我想将其解析为这样的东西:
I would like to parse it to something like this:
{
"name" => "bob",
"last" => "builder"
"atss" => {
"a" => 111,
"b" => 222}
}
这是我的配置:
input { stdin { } }
filter {
json {
source => "message"
target => "parsed"
}
}
output { stdout { codec => rubydebug }}
好吧, 所以现在我得到了:
ok, so now I get this:
{
"@timestamp" => 2017-04-05T12:19:04.090Z,
"parsed" => {
"atss" => "{\"a\":111, \"b\":222}",
"name" => "bob",
"last" => "the builder"
},
"@version" => "1",
"host" => "0.0.0.0"
}
如何将atts
字段解析为json,以便接收:
how can I parse the atts
field to json so I receive:
{
"@timestamp" => 2017-04-05T12:19:04.090Z,
"parsed" => {
"atss" =>
{"a" => 111,
"b" => 222},
"name" => "bob",
"last" => "the builder"
},
"@version" => "1",
"host" => "0.0.0.0"
}
推荐答案
感谢@Alcanzar这就是我所做的
thanks to @Alcanzar here is what I did
input {
stdin { }
}
filter {
json {
source => "message"
target => "message"
}
json {
source => "[message][atts]"
target => "[message][atts]"
}
}
output { stdout { codec => rubydebug }}
这篇关于在Logstash中解析嵌套的JSON字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文