使用事件字段作为哈希变量

时间:2017-04-12 14:11:54

标签: elasticsearch configuration logstash influxdb

我在Logstash中接收包含测量值,值和标签的事件。我不知道提前有什么字段和什么标签。所以我想做这样的事情:

input {
   http {}
}

filter {
  ruby {
    code => '
      tags = event.get("stats_tags").split(",")
      samples = event.get("stats_samples").split(" ")

      datapoints = {}

      samples.each {|s|
        splat = s.split(" ")
        datapoints[splat[0]] = splat[1]
      }

      event.set("[@metadata][stats-send-as-tags]", tags)
      event.set("[@metadata][stats-datapoints]", datapoints)

    '
  }
}

output {
    influxdb {
        host => "influxdb"
        db => "events_db"        
        measurement => measurement
        send_as_tags => [@metadata][stats-send-as-tags]
        data_points => [@metadata][stats-datapoints]
    }
}

但这会产生错误。经过多次谷歌搜索无济于事后,我开始认为这是不可能的。

有没有办法将哈希和数组从事件字段传递到输出/过滤器配置?

编辑:如果我双击它,我得到的错误是

  output {
    influxdb {
      # This setting must be a hash
      # This field must contain an even number of items, got 1
      data_points => "[@metadata][stats-datapoints]"
      ...
    }
  }

0 个答案:

没有答案