【发布时间】:2014-07-24 21:48:01
【问题描述】:
目前我正在使用文件输入插件来检查我的日志存档,但文件输入插件对我来说不是正确的解决方案,因为文件输入插件固有地期望该文件是事件流而不是静态文件。现在,这给我带来了很大的问题,因为我的日志存档有 100,000 多个日志文件,而我的 logstash 打开了所有这些永远不会更改的文件的句柄。
我面临以下问题
1) Logstash 因SO中提到的问题而失败
2) 由于有许多打开的文件句柄,日志存档存储变得非常缓慢。
有没有人知道让logstash知道静态处理文件或处理文件后不保留文件句柄的方法。
在logstash Jira bug 中,有人告诉我要编写自己的插件以及一些其他对我没有多大帮助的建议。
【问题讨论】:
-
我不认为logstash 真的拥有所有的文件描述符。我观察到的是logstash 只是不断地打开和关闭它们。至少在 1.4.2 版本中
-
我确信我看到 logatash 保持打开数千个文件句柄。现在,logstash 可能会让它们保持打开一段时间,但考虑到我拥有的文件数量,它会尝试一次打开所有文件并达到操作系统的最大文件描述符 llimit。
-
我的最大文件描述符限制是 5000。我使用 logstash 监控文件夹中的所有 15000 个文件。它没有问题,至少对于 1.4.2。我还使用
lsof来查看logstash 打开了多少文件,它只显示了一些logstash 文件。另外我用 strace 来监控,我可以看到logstash 快速打开和关闭文件。我不知道logstash 实现的真正内容。我也希望我观察到的是真的。也许您可以尝试将最大打开文件描述符限制设置为较高的值并运行。 -
我已经看到 logstash 1.4.2 在 ubuntu 上打开了大约 35k 个文件句柄。
-
由于我的情况是日志存档,我必须保留所有日志,我编写了一个快速插件来处理这种情况,它复制文件,读取它,然后删除原始文件的副本。它解决了我的问题
标签: logstash