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

本文介绍了如何在使用logstash收集日志时,处理由Java服务器输出的包含JSON数据的日志。日志由logback和logstash-logback-encoder以JSON格式生成,但数据位于一个JSON数组中。作者尝试使用logstash的JSON过滤器解析这个数组,但遇到了错误。寻求解决从数组中提取并解析JSON字符串的方法。
摘要由CSDN通过智能技术生成

我开始使用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字符串?任何帮助是极大的赞赏.谢谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值