采集可靠性

不可能绝对不丢

日志采集不可能追求绝对不丢,但要明确丢失边界。

常见机制包括:

采集可靠性的五个机制

应用写本地日志

本地缓冲

下游不可用时先写本地队列1动作

批量发送

按条数或时间窗口聚合2动作

失败重试

指数退避,避免打爆下游3动作

背压限流

队列过大时优先保留错误日志4判断

offset 持久化

重启后不重复不跳过5结果
可靠性、延迟、资源占用之间的取舍

每个机制解决什么问题

机制解决的问题
本地缓冲下游不可用时日志不丢
批量发送提高吞吐,减少网络开销
失败重试网络失败后自愈
背压限流队列过大时保关键日志
offset 持久化重启后不重发、不跳过

背压的优先级

本地队列过大时,不能所有日志一视同仁:

  1. 优先保留 ERROR 和关键审计日志。
  2. 其次保留 WARN。
  3. 最后丢弃或采样 INFO 低价值日志。

这些策略本质上是在**「可靠性、延迟、资源占用」之间做取舍**。

一句话

采集可靠性 = 缓冲 + 批量 + 重试 + 背压 + offset。不可能绝对不丢,但要把丢失边界明确出来,并让关键日志优先保留。

发现内容有问题?

告诉我们哪里需要改进。