在 Logstash 中平均多个字段
Averaging multiple fields in Logstash
我有一个事件通过可变数量的字段 { "dev_1": 12, "dev_2": 34, ... }
。我应该查看哪些 logstash 过滤器来生成这些字段的平均值,例如 { "device_avg": 23 }
?
我事先不知道确切的字段名称。我需要做一些模式匹配来平均所有匹配的字段 dev_*
但我不确定这是否是我可以简单地使用聚合过滤器
您将不得不使用 ruby 过滤器。尝试
ruby {
code => '
total = 0
count = 0
event.to_hash.each { |k, v|
if k =~ /^dev_/
count += 1
total += v.to_f
end
}
if count > 0 ; event.set("average", total/count) ; end
'
}
我有一个事件通过可变数量的字段 { "dev_1": 12, "dev_2": 34, ... }
。我应该查看哪些 logstash 过滤器来生成这些字段的平均值,例如 { "device_avg": 23 }
?
我事先不知道确切的字段名称。我需要做一些模式匹配来平均所有匹配的字段 dev_*
但我不确定这是否是我可以简单地使用聚合过滤器
您将不得不使用 ruby 过滤器。尝试
ruby {
code => '
total = 0
count = 0
event.to_hash.each { |k, v|
if k =~ /^dev_/
count += 1
total += v.to_f
end
}
if count > 0 ; event.set("average", total/count) ; end
'
}