质量误报治理
误报治理决定质量体系能长久运行。误报率高,团队会训练出“看到告警先忽略”的习惯,真正的故障也被淹没。治理路径是先复盘阈值依据(基线区间、业务日历、季节性),再决定调阈值、加白名单,或者把绝对阈值改成相对波动判断;长期收敛不了的规则要明确下线并记录原因,保持规则集整体可信。
基本信息
| 衡量口径 | 误报率 = 未确认告警数 ÷ 总告警数 |
|---|---|
| 常见来源 | 阈值一刀切、忽略业务日历、未考虑季节性 |
| 治理手段 | 调阈值、加白名单、改相对波动判断、下线 |
| 评估周期 | 近 30 天告警记录与确认情况 |
| 配套要求 | 下线要写明原因,避免同一条规则被反复重建 |
典型使用场景
- 月度质量例会:按规则统计误报率,排定治理优先级
- 大促前:提前放宽促销期的量级阈值,避免集中告警
- 规则上线一周后复核:按真实确认情况调整阈值
- 季节性波动期:把绝对阈值改为同比或环比的相对判断
- 长期无法收敛的规则:明确下线并记录原因与替代方案
误报分析(近 30 天)
误报分析(近 30 天)
SELECT rule_id,
COUNT(*) AS alerts, -- 告警总数
SUM(CASE WHEN confirmed = 0 THEN 1 ELSE 0 END) AS false_alerts -- 未确认即误报
FROM dq_alert_log
WHERE alert_time >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY rule_id
HAVING SUM(CASE WHEN confirmed = 0 THEN 1 ELSE 0 END) / COUNT(*) > 0.5;相对波动替代绝对阈值
相对波动替代绝对阈值
-- 与近 7 天均值比较,波动超过 30% 才告警
WITH base AS (
SELECT AVG(rows_cnt) AS avg_cnt
FROM (SELECT dt, COUNT(*) AS rows_cnt FROM dwd_orders_di
WHERE dt BETWEEN '2026-10-04' AND '2026-10-10' GROUP BY dt) t
),
today AS (
SELECT COUNT(*) AS today_cnt FROM dwd_orders_di WHERE dt = '2026-10-11'
)
SELECT today.today_cnt, base.avg_cnt
FROM today, base
WHERE ABS(today.today_cnt - base.avg_cnt) > 0.3 * base.avg_cnt;误报治理动作对照
| 误报特征 | 根因 | 治理动作 |
|---|---|---|
| 固定阈值频繁触发 | 数据量随业务自然增长 | 改为相对波动判断 |
| 节假日集中告警 | 未考虑业务日历 | 按日历调整阈值或加白名单 |
| 同一批数据反复告警 | 规则无去重与静默期 | 加静默期与去重键 |
| 长期无人确认 | 规则无 owner 或已失效 | 明确下线并记录原因 |
误报率高的规则会训练团队忽略告警:与其挂着,不如调整或明确下线并记录原因。
白名单要定期复核:临时加的例外很容易变成永久豁免,把真实问题一直遮住。