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
,您是否看到描述符随着时间的推移而稳步增加\