日志规范与成本治理:日志平台的第二课

搭好 ELK 只是第一课。第二课是:日志量失控了怎么办。我见过团队每天产生 5TB 日志、月度存储成本 20 万——其中 80% 是没人看的。日志治理 = 规范(写什么)+ 成本(存多少)+ 可用(找得到)。

一、先看成本是怎么爆的

1 2 3 4 5 . . . . . E S × 1 × 1 2 8 0 0 d e 5 1 b 0 u K g B 5

二、日志规范(写什么)

级别规范

级别 用在哪 示例
DEBUG 本地调试 参数细节
INFO 关键业务事件 下单成功、用户注册
WARN 可恢复异常 重试、限流触发
ERROR 需要人工关注 调用失败、数据不一致

规范

E R R " O E R r I r N " o F r O o D c E " c B u U r G r e d "

字段规范(结构化)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "ts": "2026-05-10T10:00:00",
  "level": "ERROR",
  "service": "delivery-service",
  "trace_id": "abc123",
  "user_id": "u-123",
  "code": "ORDER_PAY_TIMEOUT",
  "msg": "订单支付超时",
  "duration_ms": 2300
}

统一字段:时间/级别/服务/trace_id/业务 ID/错误码/消息——没有统一字段,检索靠猜

三、成本治理(存多少)

分层存储

7 3 - 0 7 3 - 0 1 7 8 0 0 % S + S D / 2 5 % + 5 %

采样与裁剪

/ 1 s / t T a o t k N u e 1 s n 0 % + s i z e 1 b + o d c y o u n t

预算制

/ + " " E G R B R / O R

四、日志平台的高阶能力

E R t R r O / a R c e _ i d / T o p N =

五、踩坑记录

  1. 循环打日志for i := range 10000 { log.Debug(i) } → 日志爆炸 → 循环里只打"最终结果",或限频(每 100 次一条)
  2. 打印敏感数据:日志里出现用户手机号 → 合规事故 → 统一脱敏过滤器
  3. ERROR 不带上下文:只报"调用失败",不知道哪个订单哪个用户 → 规范字段 + 必填校验
  4. 保留期一刀切:全量 180 天 → 存储爆 → 分层:ERROR 全保留,INFO 降采样

六、日志治理的投入产出

5 1 T . B 2 / T B / 2 0 - 3 7 0 / 6 % t - r 7 a 0 c 5 % e _ i d

总结

日志治理的核心认知:

  1. 规范先行:级别、字段、内容三个规范,让日志"可检索可行动"
  2. 成本分层:热/温/冷三层存储 + 采样裁剪 + 预算制
  3. 日志是给排查用的,不是给"安心"用的:没人看的日志 = 浪费
  4. 治理指标:检索效率 + 存储成本 + 告警准确率

日志的第一课是"怎么收",第二课是"怎么少收"。 会写日志是本能,会治理日志才是工程能力。