Logstash添加字段值

时间:2017-02-08 14:47:57

标签: logstash logstash-forwarder

我有一个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"

2 个答案:

答案 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
}