丢弃过滤器不工作logstash

Posted

技术标签:

【中文标题】丢弃过滤器不工作logstash【英文标题】:Drop filter not working 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"]

      

【问题讨论】:

【参考方案1】:

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

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

if [addID] == "addID" 
    drop

【讨论】:

感谢您的回复。那么,如果我使用 ruby​​ 过滤器,那么我是否能够删除具有特定 addID 的日志消息?? @User24 是的。参照documentation

以上是关于丢弃过滤器不工作logstash的主要内容,如果未能解决你的问题,请参考以下文章

Logstash 日期过滤器无法正常工作

3. Logstash8.1 工作原理

未找到 logstash grok 过滤器模式

Logstash Grok过滤器Apache访问日志

日志系统的数据过滤组件-Logstash

Logstash:在实施之前测试 Logstash 管道/过滤器