【发布时间】:2015-08-21 19:55:22
【问题描述】:
我们的服务器根据日期将日志文件存储在目录下,以时间作为文件名。例如:
/2015.08.21/01.23
/2015.08.21/01.24
/2015.08.21/01.25
文件名遵循 [hours].[minutes] 约定。
如何配置Logstash从最新文件读取(一般做法是什么)?
- 第一次尝试:
我将路径设置为:
path => ["/2015.08.21/*"]
Logstash 打开了很多文件,直到 logsource (linux) 不允许它打开新文件。
- 第二次尝试:
使用 rsync 复制所有文件,并将它们合并为单个文件。
但是,我在处理部分日志文件时遇到了问题,例如,如果当前日志文件是 11.12,并且仍在写入,我将只有部分数据。
- 第三次尝试:
定期创建指向最新文件的符号链接。我还没有尝试过,但我认为它应该可以工作,我需要弄清楚如何在 linux 中创建简单的调度程序。
- 更新
我已经尝试了第三次尝试,但我发现这种方法有一些缺点。
- 如果 Logstash 处理文件的时间超过 1 分钟,它将无法处理整个文件,因为符号链接指向下一个文件。
- 最后 1 或 2 个事件可能无法得到处理。
【问题讨论】:
-
可能是 SO 格式问题,但您的意思是“/*/*”还是“**”?您是第一次尝试运行它吗(它有旧文件要处理)?
-
感谢 Alain 发现格式错误。