在读取模式下为gzip文件输入的logstash文件消耗了很高的内存

时间:2018-12-28 13:45:35

标签: node.js logstash logstash-file

目前,我正在使用文件输入插件在Logstash中处理gzip文件。它消耗非常大的内存,并且即使在提供了很大的堆大小之后也要继续重新启动。截至目前,我们平均每分钟处理50个文件,并计划每分钟处理1000个文件。对于100个文件,RAM需求达到10Gb。调整此配置的最佳方法是什么,是否有更好的方法来处理logstash中的大量数据。  建议使用nodejs或任何其他语言编写处理引擎。

下面是logstash conf。

input {
  file {
    id => "client-files"
    mode => "read"
    path => [ "/usr/share/logstash/plugins/message/*.gz" ]
    codec => "json"
    file_completed_action => log_and_delete
    file_completed_log_path => "/usr/share/logstash/logs/processed.log"
  }
}
filter {
  ruby {
    code => 'monitor_name = event.get("path").split("/").last.split("_").first
             event.set("monitorName", monitor_name )
             split_field = []
             event.get(monitor_name).each do |x|
               split_field << Hash[event.get("Datapoints").zip(x)]
             end
             event.set("split_field",split_field)'
  }
  split {
    field => "split_field"
  }
  ruby {
    code => "event.get('split_field').each {|k,v| event.set(k,v)}"
    remove_field => ["split_field","Datapoints","%{monitorName}"]
  }
}

0 个答案:

没有答案