Logstash 合并字段与根对象
Logstash Merge Field With Root Object
我有这样的 logstash 输入
{
"@timestamp": "2016-12-20T18:55:11.699Z",
"id": 1234,
"detail": {
"foo": 1
"bar": "two"
}
}
我想将 "detail" 的内容与根对象合并,以便最终事件如下所示:
{
"@timestamp": "2016-12-20T18:55:11.699Z",
"id": 1234,
"foo": 1
"bar": "two"
}
有没有办法在不编写自己的过滤器插件的情况下完成此操作?
您可以使用 ruby 过滤器来做到这一点。
filter {
ruby {
code => "
event['detail'].each {|k, v|
event[k] = v
}
event.remove('detail')
"
}
}
使用 json_encode
插件(默认不包含)有一个简单的方法。
json
提取器将字段添加到事件的根。它是为数不多的可以向根添加内容的提取器之一。
filter {
json_encode {
source => "detail"
target => "detail"
}
json {
source => "detail"
remove_field => [ "detail" ]
}
}
我有这样的 logstash 输入
{
"@timestamp": "2016-12-20T18:55:11.699Z",
"id": 1234,
"detail": {
"foo": 1
"bar": "two"
}
}
我想将 "detail" 的内容与根对象合并,以便最终事件如下所示:
{
"@timestamp": "2016-12-20T18:55:11.699Z",
"id": 1234,
"foo": 1
"bar": "two"
}
有没有办法在不编写自己的过滤器插件的情况下完成此操作?
您可以使用 ruby 过滤器来做到这一点。
filter {
ruby {
code => "
event['detail'].each {|k, v|
event[k] = v
}
event.remove('detail')
"
}
}
使用 json_encode
插件(默认不包含)有一个简单的方法。
json
提取器将字段添加到事件的根。它是为数不多的可以向根添加内容的提取器之一。
filter {
json_encode {
source => "detail"
target => "detail"
}
json {
source => "detail"
remove_field => [ "detail" ]
}
}