【背景】
我做了 15 年算法,近两年主做 B 端 SaaS 的指标体系,核心看板 40+ 指标,底层 Kafka → Flink 实时聚合 → ClickHouse,值班 7×24。比率型指标(支付成功率、下单转化率、API 成功率)占了大头。
前阵子我把这套社区里被反复验证的「最小样本量 + Wilson 置信区间」方案(见 1502)落地,假告警确实从 ~60% 压到了 10% 以内,业务方不再骂「狼来了」。这套机制的核心动作是:分母(UV / 请求量 / 会话数)没到 min_sample 门槛,就只统计不告警。
【现象——这套机制的反面盲区】
压假告警的同时,它制造了一类结构性漏报,而且恰好落在最危险的一类事故上:
- 一次真实 P1:上游网关挂了 38 分钟,支付成功率分母(请求量)从 12 万/h 掉到 1.8 万/h。此时「支付成功率」因为分母跌破 min_sample(我设的 5000/窗口)被设计性地抑制,整整 38 分钟一条告警都没发。真正救场的是我另外手动加的「请求量绝对值环比骤降」规则,但那条规则是我拍脑袋补的、阈值也没校准。
- 换句话说:分母骤降 = 分母变小 = 触发 min_sample 门槛被抑制。我们用「等样本攒够」去治「小样本抖动」,结果在最该响的场景里,样本永远攒不够。
- 更隐蔽的:分子(成功数)在分母骤降时通常同步下降,所以分子绝对量规则能兜住,但「分子/分母同时按比例下降、比率其实没变」的场景(比如流量被限流、只限了某一路正常流量)分子绝对量也会误报,我还没有干净的判定式区分「流量正常收缩」vs「真实事故」。
【已尝试的排查与结果】
- 直接调低 min_sample 门槛:假告警立刻反弹,我把门槛从 5000 降到 2000,某个长尾指标(日均分母 3000)一周假告警 28%,不可接受。
- 给每个比率指标并行加一条「分子绝对量」基线规则:能兜住网关挂,但长尾指标分子本来就小,叠加后告警量翻倍,值班又开始疲劳;而且分不清「分子掉是因为流量掉」还是「分子掉是因为成功率掉」。
- 加一条「分母健康度」元告警(分母环比/同比骤降):方向对,但阈值我不会定——凌晨 02:00–06:00 流量本来就是白天的 1/20(见 1428 的类似描述),固定百分比必误报;用双基线(昨天+上周同时段)能压住一部分,但我没有一套「合法低流量 vs 异常骤降」的可复现判定式,尤其没处理「分子分母同步下降」时的归因方向。
【期望得到的答案形态】
请结合你们线上真实配置来答,越具体越好:
- 你们怎么给分母本身(而非比率)设监控?环比、同比、双基线,具体阈值/窗口取多少,怎么区分「合法低流量」和「异常骤降」,贴一段真实规则或 SQL。
- 比率型指标的告警是不是应该拆成两层独立规则(分子绝对量 + 分母健康度),而比率值只用于归因、不直接参与告警触发?你们这么拆之后告警量、漏报率各是多少?
- 「分子分母同步下降」时,你们用什么判定式区分「流量收缩(不告警)」vs「真实事故(告警)」?有没有可复现的公式(比如分母 < 双基线×(1−δ) 且 分子降幅 ≥ 分母降幅×θ 才算异常)。
- 量化取舍:你们能接受的告警延迟上界是多少(分钟级),为了把假告警压到可接受范围,你们愿意多付多少延迟/多少规则维护成本?有没有一条「延迟 vs 误报」的量化曲线或经验值。
(我引用 1502 的最小样本+Wilson 方案与 1428 的实时比率告警描述作为问题前提。)