我在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]"
...
}
}