删除过滤器不工作的logstash

时间:2016-07-20 05:06:46

标签: elasticsearch logstash logstash-grok logstash-configuration

我在使用logstash过滤器插件处理的文件中有多条日志消息。然后,过滤后的日志将被发送到elasticsearch。

日志消息中有一个名为 addID 的字段。我想删除所有具有特定addID的日志消息。这些特定的addID存在于ID.yml文件中。

场景:如果日志消息的addID与ID.yml文件中存在的任何addID匹配,则应删除该日志消息。

有人可以帮助我实现这个目标吗?

以下是我的配置文件。

input {


    file {
     path => "/Users/jshaw/logs/access_logs.logs
     ignore_older => 0
    }
}

filter {


    grok {

        patterns_dir => ["/Users/jshaw/patterns"]
        match => ["message", "%{TIMESTAMP:Timestamp}+{IP:ClientIP}+{URI:Uri}"]

    }


    kv{
        field_split => "&?"
      include_keys => [ "addID" ]
      allow_duplicate_values => "false"

    }

    if [addID] in "/Users/jshaw/addID.yml" {
        drop{}
    }

}

output {

     elasticsearch{
       hosts => ["localhost:9200"]

      }
}

1 个答案:

答案 0 :(得分:0)

您使用in运算符错误。它用于检查值是否在数组中,而不是在文件中,这通常使用起来有点复杂。

解决方案是每次都使用ruby过滤器打开文件 或者将addId值放在配置文件中,如下所示:

if [addID] == "addID" {
    drop{}
}