日志轮转的两种模式对采集器有不同的挑战:
Create 模式:将当前日志文件重命名(inode 不变),创建同名新文件(新 inode)。写日志的线程感知变化后重新打开新文件继续写入。采集器需要能识别文件 inode 的变化,跟踪被重命名的旧文件读完剩余内容,同时开始采集新文件。
Copytruncate 模式:先复制当前日志文件内容到新文件,再清空原文件(inode 不变)。这种模式无需通知写日志进程,但采集器需要检测到文件被截断(大小突然变小),并从头开始读取。
测试结果显示,在 create 模式下各采集器表现基本一致。但在快速轮转场景(每秒生成一个文件并触发覆盖删除)下,iLogtail 出现轻微数据丢失,其他采集器则无此问题。各采集器通过 inode+dev 组合以及文件前几行的 hash 值作为文件指纹来唯一标识文件,确保轮转时不会混淆文件。