Logstash文件输入插件

时间:2014-06-04 09:47:40

标签: logstash

目前我正在使用文件输入插件来浏览我的日志存档,但文件输入插件对我来说不是正确的解决方案,因为文件输入插件固有地期望该文件是事件流而不是静态文件。现在,这对我造成了很大的问题,因为我的日志存档有100,000个日志文件,而logstash打开了所有这些永远不会改变的文件的句柄。

我正面临以下问题

1)Logstash因SO中提到的问题而失败 2)使用那些许多打开的文件句柄,日志存档存储变得非常慢。

是否有人知道让logstash知道静态处理文件或者处理文件后不保留文件句柄的方法。

在logstash Jira bug中,我被告知要编写自己的插件以及其他一些对我没有帮助的建议。

2 个答案:

答案 0 :(得分:5)

Logstash文件输入可以处理静态文件。您需要添加此配置

file {
     path => "/your/logs/path"
     start_position => "beginning"
}

添加start_position后,logstash从头开始读取文件。有关详细信息,请参阅here。请记住

此选项仅修改文件是新的以前未见过的“第一次联系”情况。如果之前已经看过某个文件,则此选项无效。
否则您已将sincedb_path设置为/dev/null

对于第一个问题,我在评论中回答。请尝试添加打开的最大文件。 对于我的建议,您可以尝试编写脚本将日志文件复制到logstash监视器路径并将其不断移出。您必须估计logstash处理日志文件的时间。

答案 1 :(得分:1)

注意这一点,同时打开-v--debug以获取logstash

{:timestamp=>"2016-05-06T18:47:35.896000+0530",
 :message=>"_discover_file: /datafiles/server.log: 
**skipping because it was last modified more than 86400.0 seconds ago**",
 :level=>:debug, :file=>"filewatch/watch.rb", :line=>"330",
 :method=>"_discover_file"}

解决方案是触摸文件或更改ignore_older设置