从logstash中的json数据重新解析转义的子字段

时间:2016-08-06 04:05:00

标签: logstash

我想在logstash中尝试解析json数据。但它是嵌套和逃脱的。

我对在json中的子字段中重新解析转义的json有疑问。

例如:

{"d1": 1, "d2": "{\"c1\": 1, \"c2\": 2}" }

在一般的编程环境中,这很容易解决这个问题。

但是,对于这种情况,logstash配置并不容易。

我能否得到这个案例的提示?

1 个答案:

答案 0 :(得分:2)

我们走了:

filter {

    # this parses the first json
    json {
        source => "message"
    }

    # This parses your nested json
    json {
        source => "d2"
    }

}

您可以将源设置为原始转义json所在的字段。过滤器为您完成其他所有工作。

使用stdin / stdout和你的输入,你得到:

artur@pandaadb:~/dev/logstash$ ./logstash-2.3.2/bin/logstash -f conf2/
Settings: Default pipeline workers: 8
Pipeline main started
{"d1": 1, "d2": "{\"c1\": 1, \"c2\": 2}" }
{
       "message" => "{\"d1\": 1, \"d2\": \"{\\\"c1\\\": 1, \\\"c2\\\": 2}\" }",
      "@version" => "1",
    "@timestamp" => "2016-08-08T11:49:19.381Z",
          "host" => "pandaadb",
            "d1" => 1,
            "d2" => "{\"c1\": 1, \"c2\": 2}",
            "c1" => 1,
            "c2" => 2
}

编辑:

如果" d2"原始属性困扰您,您可以在解析后删除该字段。

干杯,

阿图尔