elasticsearch 日志存储关闭文件描述符?,elasticsearch,logstash,logstash-grok,logstash-file,elasticsearch,Logstash,Logstash Grok,Logstash File" /> elasticsearch 日志存储关闭文件描述符?,elasticsearch,logstash,logstash-grok,logstash-file,elasticsearch,Logstash,Logstash Grok,Logstash File" />

elasticsearch 日志存储关闭文件描述符?

elasticsearch 日志存储关闭文件描述符?,elasticsearch,logstash,logstash-grok,logstash-file,elasticsearch,Logstash,Logstash Grok,Logstash File,背景: 我们有rsyslog创建日志文件目录,如:/var/log/rsyslog/SERVER-NAME/log-DATE/log-FILE-NAME 因此,多个服务器将其不同日期的日志溢出到一个中心位置 现在要读取这些日志并将其存储在elasticsearch中进行分析,我有一个类似以下内容的日志存储配置文件: file{ path => /var/log/rsyslog/**/*.log } 问题: 现在,随着目录中日志文件数量的增加,logstash会为新文件打开文件描述符

背景:

我们有
rsyslog
创建日志文件目录,如:
/var/log/rsyslog/SERVER-NAME/log-DATE/log-FILE-NAME
因此,多个服务器将其不同日期的日志溢出到一个中心位置

现在要读取这些日志并将其存储在elasticsearch中进行分析,我有一个类似以下内容的日志存储配置文件:

file{
   path => /var/log/rsyslog/**/*.log
}
问题:

现在,随着目录中日志文件数量的增加,logstash会为新文件打开文件描述符(FD),而不会为已经读取的日志文件释放FDs。 由于日志文件是按日期生成的,因此一旦读取该日志文件,之后就没有任何用处,因为该日志文件在该日期后不会更新

我在
/etc/security/limits.conf


我们是否可以让logstash在一段时间后关闭句柄,以便打开的文件句柄数量不会增加太多???

我认为您可能遇到了此错误:。你有相同的症状吗?一段时间后日志中出现异常?如果运行
sudolsof | grepjava | wc-l
,您是否看到描述符随着时间的推移而稳步增加?(其中一些可能关闭,但一些将保持开放状态,其数量将增加)

我跟踪此问题已经有一段时间了,我不知道它是否得到了妥善解决

我们在一条类似的船上,也许更大:Logstash无法打开一个盒子上数十万个日志文件的句柄,尽管其中很少有主动写入的。捕获了此问题,并尝试修补Logstash,包括

似乎有一个补丁已经进入了Logstash1.5,但我从未亲自测试过。我们最终将底层库Logstash用于实现文件输入(称为FileWatch)的分叉,这增加了一个

这种方法背后的基本思想是只在编写文件时保持文件处于打开状态。通常,Logstash会打开文件上的句柄并将其永久打开,但如果文件最近没有更改(
execution\u interval
),则FFileWatch会添加一个选项来关闭句柄。然后,我使用forkedgem创建了Logstash的定制构建


显然,这不太理想,但对我们来说是有效的。最终,我们完全放弃了用于拾取日志文件的Logstash,尽管我们仍然在日志处理管道中进一步使用它。我们实现了自己的轻量级日志托运人(),它不会受到这个问题的影响。

这是什么日志存储版本?另外,您可以发布完整的配置文件吗?因为以下原因询问:。你有相同的症状吗?一段时间后日志中出现异常?如果运行
sudolsof | grepjava | wc-l
,您是否看到描述符随着时间的推移而稳步增加\