logstash 动态解析 json 以在输出中添加新字段

logstash parse dynamically json to add new fields in the output

我有以下 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

谢谢!

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

中使用它
mutate {
    add_field => { "something%{sid}" => "%{data}" }
}

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