在 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
        '
    }