基线告警是什么
固定阈值只能应付稳定的业务,真实数据的行数与金额会随星期、节假日、促销起伏。基线告警改用历史分布判据:把当前值与近 7 天或近 4 周同星期均值、中位数比较,用分位数(如 P5 到 P95)划出正常区间,再叠加业务日历修正(大促、节假日单独建模或加白名单)。比固定阈值更抗业务波动,但需要连续越界确认机制,否则单点抖动会频繁打扰值班。
基本信息
| 基线来源 | 近 7 日或近 4 周同期均值与中位数 |
|---|---|
| 正常区间 | 按分位数设定,如 P5 到 P95 |
| 业务修正 | 节假日与大促单独建模或加白名单 |
| 触发策略 | 连续两次越界才升级,减少抖动误报 |
| 输出 | 基线与实际值同时落库,便于复盘 |
典型使用场景
- 日报行数监控:与上周同星期比较,识别异常下降或翻倍
- 金额类指标监控:支付金额、退款金额偏离历史区间时告警
- 任务产出时间监控:调度延迟是否超出同类任务的历史分布
- 上游源表波动:源端抽取量突降时提前发现接口问题
- 大促期间改用单独基线,避免与平峰数据混算
同星期基线对比
同星期基线对比
-- 与上周同星期对比,计算波动率
SELECT cur.dt, cur.cnt AS cur_cnt, pre.cnt AS last_week_cnt,
ROUND((cur.cnt - pre.cnt) / NULLIF(pre.cnt, 0), 4) AS wow_rate
FROM (SELECT dt, COUNT(1) AS cnt FROM dwd_trade_order_detail_di
WHERE dt = '2026-10-11' GROUP BY dt) cur
LEFT JOIN (SELECT dt, COUNT(1) AS cnt FROM dwd_trade_order_detail_di
WHERE dt = '2026-10-04' GROUP BY dt) pre
ON 1 = 1;
-- 最近 4 周同星期的分位数区间
SELECT approx_percentile(cnt, 0.05) AS p05,
approx_percentile(cnt, 0.95) AS p95
FROM (SELECT dt, COUNT(1) AS cnt FROM dwd_trade_order_detail_di
WHERE dt BETWEEN '2026-09-14' AND '2026-10-11'
AND dayofweek(dt) = dayofweek('2026-10-11')
GROUP BY dt) t;基线方法对照
| 方法 | 判据 | 优点 | 缺点 |
|---|---|---|---|
| 固定阈值 | 绝对上下限 | 实现简单 | 业务增长后阈值失效 |
| 同比同星期 | 与上周同星期比较 | 抗周内节律 | 节假日全面误报 |
| 滑动分位数 | 近 4 周 P5 到 P95 | 自适应波动 | 大促期间区间被拉长 |
| 模型预测 | 时序或回归预测 | 节假日可拟合 | 维护成本高 |
基线模型要有业务日历输入,否则每逢节假日与促销都会产生批量误报,久而久之告警被视为噪音。
没有连续越界确认机制时,单点抖动会频繁打扰值班;但连续确认也会让真实故障晚一个周期被发现,这个取舍要在规则里写明并定期回顾。
基线与实际值要一起落库:只有告警记录时,事后复盘无法判断当时偏离了多少、是缓慢漂移还是突然跌落。