我们的服务器根据日期将日志文件存储在目录下,文件名是时间。例如:
/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 个事件可能无法得到处理。