我在一台 UNIX 机器上有一个不断增长的日志文件。我只想在写入后几秒钟内在另一个机器上收集这些数据。
听起来很简单。但如果出现以下情况,我需要它不会引入问题:
- 要么重启盒子
- 网络故障
- 日志文件被轮换(无需在文件句柄打开的情况下丢失数据)
- 处理上述情况会导致无法检测到数据重复(由于文件名/inode/seekpoint/trunccount 可用,因此可以检测到重复)
- (可选)文件被截断(返回开始,向同行提及 - 潜在的不可避免的数据丢失的小窗口)。
我似乎找不到任何可以正确完成此操作的方法。系统日志工具和日志想要钱来避免问题 2。rsyslog当遇到问题 2 时,它会出现问题 1,并且在测试中消耗了我的 CPU。
似乎没有任何工具不会产生比它解决的问题更多的问题。