如何解决如何使用Logstash过滤器基于其他列的某些行添加新列?
假设我有一个csv文件,如下所示:
cummulated_values
0
2
5
10
17
如何使用logstash过滤器添加新的“值”列,该行定义为 values [n]:= cummulated_values [n]-cummulated_values [n-1],其中0 和 值[0]:=累积值[0] ,其中cummulated_values [n]表示第n “ cummulated_values”列的行? 因此输出表将如下所示:
cummulated_values,values
0,0
2,2
5,3
10,5
17,7
解决方法
我会使用红宝石滤镜来实现。
csv { autodetect_column_names => true }
ruby {
code => '
c = event.get("cummulated_values").to_i
@values ||= c
event.set("values",c - @values)
@values = c
'
}
您需要保留事件的顺序,并且所有事件都需要通过相同的ruby过滤器实例。因此,必须将pipeline.workers设置为1,并验证是否设置了pipeline.ordered,然后将其设置为auto或true(默认值为auto,因此如果未设置,则可以)。>