深夜被一条无意义的告警叫醒,是运维最怕的事。本文介绍炬鲸 OBSERVE 如何用分级告警、抑制、静默窗口和值班轮转,把告警从噪音变成可行动的信号。
告警系统最常见的失败,不是不响,而是响得太多。CPU 瞬时抖动、一条能自动恢复的网络超时,都可能触发告警,把人从睡梦中叫醒。久而久之,值班的人开始对告警麻木,先静音通知,再静音整个系统,真正的事故反而被淹没在海量通知里。
要解决告警疲劳,关键是让每一条告警都「可行动」:收到它,值班的人知道该做什么,而不是猜它是不是误报。
炬鲸 OBSERVE 内置三级告警:
阈值告警的配置示例:
alert:
name: order-service-error-rate
level: P0
metric: http_error_rate
condition: '> 0.05'
duration: 5m
notify: [phone, sms, wecom]
duration: 5m 很关键:指标要连续 5 分钟超标才触发,避免瞬时抖动误报。
举一个真实例子:某电商团队给下单接口配了 P0、阈值 5%、持续 5 分钟。凌晨两点一波支付回调重试让错误率瞬时冲到 6%,但 3 分钟后回落,duration: 5m 让这次波动没有触发告警;真正触发的是第二天上午错误率稳定在 8% 的那次,值班同事第一时间介入,避免了白天演变成客诉。
两个机制能挡掉大部分噪音:
一条合格的告警,不只是「响」,还要能带着人走到恢复。炬鲸 OBSERVE 把告警和上下文绑在一起:每条告警都带上触发时的指标曲线、关联的错误日志、以及同时间段的 trace 列表。值班人点开告警,不用再切三个页面找线索。
配合告警确认、转派、评论和解决状态,一次故障从发现到关闭全程留痕。复盘时可以直接按告警维度回看:这次事故总共触发了几条告警、每条多久被响应、最终根因是什么。
告警的目标不是「每条都响」,而是「响的每条都值得看」。