java 数组 过滤_java-在logstash中将数组过滤为JSON的字段

我开始使用logstash收集日志.当前设置包括一台Java服务器,该服务器使用logback作为日志记录机制和logstash-logback-encoder,以纯净的JSON表示形式输出数据.基础工作正常.

我想将JSON格式的其他数据分隔在单独的字段中(因此JSON的每个键最终都位于其自己的字段中). logstash-logback-encoder提供了一种在json_mesage字段中输出此类数据的机制.但是,此JSON字符串放置在JSON数组中.请参阅此处的格式化示例,以更好地阅读.

{

"@timestamp":"2014-03-25T19:34:11.586+01:00",

"@version":1,

"message":"Message{\"activeSessions\":0}",

"logger_name":"metric.SessionMetrics",

"thread_name":"scheduler-2",

"level":"INFO",

"level_value":20000,

"HOSTNAME":"stage-01",

"json_message":["{\"activeSessions\":0}"],

"tags":[]

}

我尝试使用简单的JSON过滤器解析传入的JSON.在这里查看我的配置:

input {

lumberjack {

codec => "json"

}

}

filter {

json {

source => "json_message"

}

}

output {

elasticsearch {

}

}

但是,这导致logstash日志中出现以下错误.数组中的JSON字符串根本无法处理.

{:timestamp=>"2014-03-25T19:43:13.232000+0100",

:message=>"Trouble parsing json",

:source=>"json_message",

:raw=>["{\"activeSessions\":0}"],

:exception=>#,

:level=>:warn}

有没有一种方法可以在解析之前从数组中提取JSON字符串?任何帮助是极大的赞赏.谢谢.


版权声明:本文为weixin_32432759原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。