首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在logstash中以数组作为JSON过滤字段

在logstash中以数组作为JSON过滤字段
EN

Stack Overflow用户
提问于 2014-03-25 19:00:39
回答 1查看 7.3K关注 0票数 3

我开始用logstash收集日志。当前的设置包括一个使用logback作为日志机制和logstash-logback-encoder的Java服务器,将数据输出到一个整洁的JSON表示形式中。基本原理很好。

我希望将JSON格式的附加数据分离到不同的字段中(因此JSON的每个键都在自己的字段中结束)。logstash-logback-encoder为在json_mesage字段中输出此类数据提供了一种机制。但是,这个JSON字符串被放置到一个JSON数组中。请参阅这里的示例格式,以便更好地阅读。

代码语言:javascript
复制
{
"@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。在这里查看我的配置:

代码语言:javascript
复制
input {
  lumberjack {
    <snipped>
    codec => "json"
  }
}
filter {
  json {
    source => "json_message"
  }
 }
 output {
   elasticsearch {
     <snipped>
   }
 }

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

代码语言:javascript
复制
{:timestamp=>"2014-03-25T19:43:13.232000+0100", 
 :message=>"Trouble parsing json", 
 :source=>"json_message", 
 :raw=>["{\"activeSessions\":0}"], 
 :exception=>#<TypeError: can't convert Array into String>, 
 :level=>:warn}

是否有方法在解析之前从数组中提取JSON字符串?任何帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-26 13:30:57

实际上,它非常简单,并且遵循普通编程语言的思路。不过,我在文件里没有找到答案。

只需将索引添加到筛选器中的字段:

代码语言:javascript
复制
filter {
  json {
    source => "json_message[0]"
  }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22643932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档