【问题标题】:Logstash Merge Field With Root ObjectLogstash 合并字段与根对象
【发布时间】:2016-12-20 21:42:34
【问题描述】:

我的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"
}

有没有办法在不编写我自己的过滤器插件的情况下实现这一点?

【问题讨论】:

    标签: logstash logstash-configuration


    【解决方案1】:

    您可以使用 ruby​​ 过滤器来做到这一点。

    filter { ruby { code => " event['detail'].each {|k, v| event[k] = v } event.remove('detail') " } }

    【讨论】:

    • 在 logstash 版本 5 中,语法已更改为像这样code => "event.get('detail').each {|k, v| event.set(k, v) } event.remove('detail')"
    • 希望 Logstash 本身有一些功能
    【解决方案2】:

    使用json_encode 插件(默认不包含)有一个简单的方法。

    json 提取器将字段添加到事件的根。它是极少数可以向根目录添加内容的提取器之一。

    filter {
        json_encode {
            source => "detail"
            target => "detail"
        }
    
        json {
            source => "detail"
            remove_field => [ "detail" ]
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 2023-02-13
      • 2021-02-23
      相关资源
      最近更新 更多