我有一个Logstash过滤器集,它根据与消息匹配的正则表达式将字段Alert_level
设置为整数。
示例:
if [message] =~ /(?i)foo/ {mutate {add_field => { "Alert_level" => "3" }}}
if [message] =~ /(?i)bar/ {mutate {add_field => { "Alert_level" => "2" }}}
这些情况并非相互排斥,有时会导致Alert_level
中包含2个或更多值的事件:
message => "foobar"
Alert_level => "2, 3"
我想将Alert_level
中的值加到一个总整数中,上面的例子会导致这个:
message => "foobar"
Alert_level => "5"
答案 0 :(得分:1)
logstash本身没有数学,但我喜欢darth_vader的标签创意(如果你的等级只被击中一次)。
您可以为警报级别设置标记,例如“alert_3”,“alert_4”等,然后放入ruby过滤器以循环遍历它们,拆分数值,并将它们一起添加到一个新字段中。 (使用像“alert_”这样的标记前缀会阻止您尝试添加“_grokparsefailure”或其他非警报标记。)
在SO中还有其他一些用于循环遍历ruby字段的示例。
答案 1 :(得分:-1)
根据我的理解,您需要 if 中的 AND 运算符来检查这两个条件:
if "foobar" in [message] and "5" in [Alert_level]{
//do something
}