五款采集器在进程被 kill -9 异常终止后的数据可靠性表现差异明显:
- Fluent-bit:表现最好,多次测试数据均一致。它使用 SQLite 实现 checkpoint,默认采用预写式日志模式(WAL)和 NORMAL 同步方法,确保 checkpoint 及时同步,支持崩溃后状态恢复
- Filebeat:能够保证数据一致性,其 registry 文件机制在异常退出后能正确恢复采集点位
- Vector:同样能够保证数据一致性,支持 At-least-Once 语义
- iLogtail(社区版):默认的 checkpoint 机制在进程异常退出时来不及保留 offset,部分数据处于内存队列中,会出现重复消费上一轮数据的情况。不过商业版结合 SLS 后端去重可实现 ExactlyOnce 语义
- Rsyslog:默认只在进程正常退出时保存采集状态,异常退出会丢失上一轮采集点位导致重复消费。可通过 PersistStateInterval 参数缓解,但仍有少量重复