Logstash 日志存储中的大字典文件(>;10MB)存在错误的文件描述符错误

Logstash 日志存储中的大字典文件(>;10MB)存在错误的文件描述符错误,logstash,logstash-configuration,logstash-file,Logstash,Logstash Configuration,Logstash File,我在使用logstash过滤器插件处理的文件中有多条日志消息。然后,过滤后的日志被发送到elasticsearch 日志消息中有一个名为addID的字段。我想删除存在特定ADDD的所有日志消息。这些特定的ADDD存在于ID.txt文件中 如果日志消息的addID与ID.txt文件中存在的任何addID匹配,则应删除该日志消息。我使用ruby过滤器来实现这一点 场景:问题是,如果我使用的字典文件是MBs格式的,那么logstash会挂起,并且当我手动停止管道时,会出现错误的文件描述符错误。但是,如

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

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

如果日志消息的addID与ID.txt文件中存在的任何addID匹配,则应删除该日志消息。我使用ruby过滤器来实现这一点

场景:问题是,如果我使用的字典文件是MBs格式的,那么logstash会挂起,并且当我手动停止管道时,会出现错误的文件描述符错误。但是,如果我使用KBs格式的文件,则一切正常。

我尝试将LS_堆大小更改为4g。对我来说什么都不管用

谁能帮我实现这个目标

下面是我的配置文件

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"
        add_field => { "IS_BAD_IP" => "false" } 
    }

    if [ClientIP] { 
         ruby{
             code => 'if File.open("/Users/jsaw/mapping/badIP.txt").lines.any?{|line|line.include?(event["ClientIP"])}
              event["IS_BAD_IP"] = "true"
         end'

         }   

         if "true" in [IS_BAD_IP]{
              drop { }
         }     

    }
    output {

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

         }
    }