【问题标题】:logstash parse dynamically json to add new fields in the outputlogstash 动态解析 json 以在输出中添加新字段
【发布时间】:2016-04-21 14:46:09
【问题描述】:

我有以下 JSON 输入:

{
    "ts": "1459504800000",
    "data": "30.7",
    "sid": "1"
}

使用这个过滤器:

filter {
    mutate {
            convert => { 
            "data" => "float"
            "ts" => "integer" 

        }

    }

    date { 
        match => [ "ts", "UNIX_MS"]
            target => "ts_date"
    }
}

我得到以下结果:

{
            "ts" => 1459504800000,
          "data" => 30.7,
           "sid" => "1",
      "@version" => "1",
    "@timestamp" => "2016-04-21T14:29:54.241Z",
          "type" => "redis-input",
       "ts_date" => "2016-04-01T10:00:00.000Z"
}

我想在使用输入的"data""sid" 参数值(1 和30.7)动态组合的结果中添加一个新字段。该字段应该类似于"somestring"+"1" => 30.7

谢谢!

【问题讨论】:

    标签: json logstash logstash-configuration


    【解决方案1】:

    这就是 add_field 的用途。对于像这样与其他过滤器无关的任务,我会在 mutate 中使用它:

    mutate {
        add_field => { "something%{sid}" => "%{data}" }
    }
    

    此时该值将是一个字符串。如果您希望它是数字,则需要使用 convert 函数进行第二次变异。

    【讨论】:

    • 谢谢@Alain。你知道如何将“%{data}”的数据类型解析为浮点数吗?
    • 是的,“如果您希望它是数字,您需要使用 convert 函数进行第二次变异。”
    • 类似 mutate { convert => { "something%{sid}" => "float"}}?
    猜你喜欢
    • 2015-03-12
    • 2011-11-30
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2021-08-02
    相关资源
    最近更新 更多