首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logstash,json数组为单个事件,由元素字段生成字段?

Logstash,json数组为单个事件,由元素字段生成字段?
EN

Stack Overflow用户
提问于 2016-11-17 04:50:39
回答 1查看 889关注 0票数 0

我使用http_poller作为输入,并返回一个json数组。我使用的是默认的json编解码器。json看起来是这样的:

{“名称”:“UsedMemory”、“值”:{“值”:“222932448”、“类型”:“java.lang.Long”}、{“名称”:“FreeMemory”、“值”:{“值”:“308630048”、“类型”:“java.lang.Long”}、{“名称”:“堆”、“值”:{“值”:“531562496”、“类型”:“java.lang.Long”}、{“名称”:“UpTime”,“值”:{“值”:“29900897”,“类型”:“java.lang.Long”},{“名称”:“ProcessCPU”,“值”:{“值”:“0.15846178794662266”,“类型”:“java.lang.Double”},{“名称”:“GcCount”,“值”:{“值”:“2198”,“类型”:“java.lang.Long”},{“名称”:“GcTime”,“值”:{“值”:“35658”,“类型”:“java.lang.Long”}}

我看到logstash通过拆分数组将每个数组元素视为一个新事件。例如

代码语言:javascript
复制
{
    "name" => "UpTime",
    "value" => {
    "value" => "29579549",
    "type" => "java.lang.Long"
},
    "@version" => "1",
    "@timestamp" => "2016-11-17T04:12:45.492Z"
}
{
    "name" => "ProcessCPU",
    "value" => {
    "value" => "0.16146030555740817",
    "type" => "java.lang.Double"
},
    "@version" => "1",
    "@timestamp" => "2016-11-17T04:12:45.492Z"
}
...

如何获得logstash (2.4)来组合元素,将其视为一个事件并输出如下

代码语言:javascript
复制
{
    "Uptime" => "29579549"
    "ProcessCPU" => ""0.16146030555740817"
    ....

}

我认为我必须生成这样一个新的字段,但需要遍历数组的所有元素才能生成一个完整的事件。{ "%{name}“=> "%{value}”.}

EN

回答 1

Stack Overflow用户

发布于 2016-11-24 21:53:50

在阅读了更多关于逻辑存储和实验的内容之后,我找到了答案:

  1. 在http_poller中,将编解码器更改为“平原”
  2. 在filter部分中,使用json过滤器。例如

json {源=>“消息”目标=> "doc“}

  1. 添加一个ruby代码过滤器来处理json字段,如下所示:

Ruby{代码=>“event‘’doc‘.每个{\elem’‘name’]=elem‘’value‘}”}}

  1. 使用变体筛选器删除文档和消息字段
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40646963

复制
相关文章

相似问题

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