【问题标题】:Drop filter not working logstash丢弃过滤器不工作logstash
【发布时间】:2016-07-20 05:06:45
【问题描述】:

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

日志消息中有一个名为 addID 的字段。我想删除所有存在特定 addID 的日志消息。这些特定的 addIDS 存在于 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"]

      }
}

【问题讨论】:

    标签: elasticsearch logstash logstash-grok logstash-configuration


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。那么,如果我使用 ruby​​ 过滤器,那么我是否能够删除具有特定 addID 的日志消息??
    • @User24 是的。参照documentation
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多