PromQL 告警规则设计:从指标异常到可行动告警

设计有持续时间、上下文和业务含义的 PromQL 告警,减少瞬时噪声与重复通知。

文章目录 · 4 节

好的告警描述一个需要人采取行动的风险,而不是“某个指标超过阈值”。规则必须说明影响、持续时间和第一步排查入口。

从比例而不是计数开始

sum(rate(http_requests_total{status=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))

绝对错误数会随流量变化。比例规则还要设置最小流量条件,避免低流量时一个失败请求触发高错误率。

使用 for 抑制抖动

alert: HighErrorRate
expr: error_ratio > 0.02 and request_rate > 10
for: 10m

for 应匹配业务容忍时间,不能用来掩盖错误指标。容量耗尽类告警更适合预测趋势,而不是等利用率达到 100%。

补齐上下文

注解中加入影响范围、当前值、看板和 Runbook 链接。标签只保留路由需要的稳定维度,避免 Pod 名等短生命周期标签制造重复告警。

发布前测试

使用历史数据回放规则,检查正常波动、已知事故和无流量场景。规则上线后跟踪触发次数、确认率和实际行动,持续删除无效告警。