这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
采集可靠性
不可能绝对不丢
日志采集不可能追求绝对不丢,但要明确丢失边界。
常见机制包括:
采集可靠性的五个机制
应用写本地日志
本地缓冲
下游不可用时先写本地队列1动作批量发送
按条数或时间窗口聚合2动作失败重试
指数退避,避免打爆下游3动作背压限流
队列过大时优先保留错误日志4判断offset 持久化
重启后不重复不跳过5结果可靠性、延迟、资源占用之间的取舍
每个机制解决什么问题
| 机制 | 解决的问题 |
|---|---|
| 本地缓冲 | 下游不可用时日志不丢 |
| 批量发送 | 提高吞吐,减少网络开销 |
| 失败重试 | 网络失败后自愈 |
| 背压限流 | 队列过大时保关键日志 |
| offset 持久化 | 重启后不重发、不跳过 |
背压的优先级
本地队列过大时,不能所有日志一视同仁:
- 优先保留
ERROR和关键审计日志。 - 其次保留
WARN。 - 最后丢弃或采样
INFO低价值日志。
这些策略本质上是在**「可靠性、延迟、资源占用」之间做取舍**。
一句话
采集可靠性 = 缓冲 + 批量 + 重试 + 背压 + offset。不可能绝对不丢,但要把丢失边界明确出来,并让关键日志优先保留。
发现内容有问题?
告诉我们哪里需要改进。
