Logstash筛选器,从拆分数组中添加字段(如果不为空)

时间:2019-05-15 08:17:09

标签: logstash logstash-filter

我正在对两个字段进行拆分,并将不同的数组元素分配给新字段。但是,当它们不存在时,最终会将代码附加到该字段,例如“%{variable}”

我假设我可以对数组元素执行5 if语句,以在将其分配给新字段之前查看其是否存在,但这似乎是一种非常麻烦的方法。有没有一种更好的方法来仅在填充时分配

split => { "HOSTALIAS" => ", " }
split => { "HOSTGROUP" => "," }

add_field => {
                    "host-group" => "%{[HOSTGROUP][0]}"
                    "ci_alias" => "%{[HOSTALIAS][0]}"
                    "blueprint-id" => "%{[HOSTALIAS][1]}"
                    "instance-id" => "%{[HOSTALIAS][2]}"
                    "vm-location" => "%{[HOSTALIAS][3]}"
          }

1 个答案:

答案 0 :(得分:0)

您可以使用grok过滤器。在这里,我们丢弃失败的消息,但我们可以采取不同的处理方式。

filter {
    grok {
        match => [ "HOSTALIAS", "%{WORD:ci_alias},%{WORD:blueprint-id},%{WORD:instance-id},%{WORD:vm-location}"] 
    }
    if "_grokparsefailure" in [tags] {
        drop { }
    }
}