[英]Using Ruby filter in logstash to sum values of a field everytime that event appears
我试图在每次显示时对特定字段的值求和,该字段采用以下格式: [cdr][Service-Information][PS-Information][Service-Data-Container][Accounting-Output-Octets]
并且它的值是一个数字字段(它显示消耗的位数)。
我正在尝试做的是以下内容:
a = event.get("[cdr][Service-Information][PS-Information][Service-Data-Container][Accounting-Output-Octets]")
if a
sum = 0
a.each_index { |x|
sum += a["amount"]
}
event.set("amount-sum", sum)
end
我收到以下错误:
发生 Ruby 异常:整数的未定义方法“each_index”
我是 Ruby 的新手,所以我不知道这段代码是否也适用于这种类型的领域。
如果 a 是整数你可以使用这样的东西:
a = 123456789
a = a.to_s.split("").map(&:to_i)
sum = 0
a.each do |x|
sum += x
end
p sum #=> 45
如果块不在一行中,请不要使用大括号。 在这里,我用 do end 完成它只是为了展示它必须是怎样的。 如果你想使用一行代码块 - 你必须这样写:
a.each {|x| sum += x}
如果块 > 1 行比使用 do/end | 别的 { }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.