讲清 OBSERVE 告警引擎的规则模型(多条件、持续时长、相对基线)、告警降噪三件套(分组/抑制/静默)与通知升级链路,并给出可落地的告警规范建议。
静态阈值是最常见的告警来源,也是误报最多的来源。CPU 到 90% 就叫,凌晨备份任务一跑就响,值了三个月班的人最后把这些告警都静音了——告警一旦失去可信度,整个监控体系就废了。
OBSERVE 告警引擎要解决的核心问题是:把一个异常信号翻译成“在正确的时间、用正确的方式、通知正确的人”,并且不要淹没对方。这中间有几层:规则怎么表达、重复怎么压掉、通知怎么升级。
一条规则远不止“指标 > 阈值”。完整表达式支持四类能力:
error_rate > 0.02 AND qps < 100,AND/OR 任意嵌套;for: 3m,指标连续 3 分钟越界才触发,过滤瞬时毛刺;一个典型规则长这样:
rules:
- name: order-api-degraded
expr: error_rate{service="order"} > 0.02 AND p99{api="/order/create"} > 800ms
for: 3m
labels: { severity: P1, team: order, runbook: "runbook/order-degraded" }
for 是误报的第一道闸门。生产环境建议 P0 用 1-2 分钟、P1 用 3-5 分钟,太短容易被毛刺触发,太长又延误响应。
告警风暴是压垮值班的第一杀手。一个上游服务挂了,几十个下游一起报警,手机瞬间被打爆。引擎内置三种手段:
三者叠加后,一次真实故障通常只产生一条 P0 通知加一条汇总,而不是几十条。
通知渠道支持短信、电话、企业微信、钉钉、邮件。核心是升级链路:P0 通知值班人后若 5 分钟未确认,自动升级到二线负责人,再未确认升级到团队负责人,逐级上溯。值班表按周轮转,引擎自动找当前值班人,不用手工改联系人。
通知内容里直接带上告警图、关联的 trace 链接和 runbook 地址——值班人收到通知就能下钻,不用再问“现场在哪、怎么处理”。