Logstash - 如何在条件if语句中使用变量而不是硬编码值?

时间:2016-01-07 10:41:00

标签: conditional logstash

我有这样的条件IF

if ([mesage] =~ /(CRITICAL|ERROR)/) {
     add_field => { "priority" => "critical" }
} else {
    add_field => { "priority" => "low" }
}

如何从字段中获取这些值?
我试过以下选项,但这没效果。

add_field => { "priorityMessages" => "CRITICAL|ERROR" }
if ([mesage] =~ /([priorityMessages])/) {
     add_field => { "priority" => "critical" }
} else {
    add_field => { "priority" => "low" }
}

1 个答案:

答案 0 :(得分:0)

add_field需要是过滤器的一部分(并且仅在该过滤器存在时触发)。试试这个:

if [message] =~ /(CRITICAL|ERROR)/) {
    mutate {
        add_field => { "priority" => "critical" }
    }
}

但更好的做法是使用grok从非结构化[message]字段中提取字段。