背景


固定阈值监控的“尴尬瞬间”
在日常运维和监控工作中,你是否也经历过这样的“时刻”:
-
凌晨 3 点,手机疯狂震动:“入服人数低于阈值1000”;
-
明明业务平稳,监控却“焦虑型人格”发作;
-
放宽阈值后,“真异常”又悄然溜走,业务受损无人察觉。
传统监控系统普遍采用固定阈值来判定告警,但实际业务指标往往具有明显的时间节律性(昼夜波动)、周期性(周末波动)、趋势性(用户增长/下滑)。
一个统一的“阈值”,难以胜任全天候、全业务场景的精确判断:
|
|
|
|
|
|
|
|
|
|
|
|
问题本质是?
我们不是缺少“阈值”,而是缺少一个聪明的阈值系统,能理解业务的节律,随着时间、场景动态调整。
解法启示


用时间序列预测代替固定阈值
动态阈值的理想形态是:“预测当前时刻的正常值范围”,只在超出这个范围时发出告警。
我们需要:
✅ 自动建模业务节奏(比如昼夜波动);
✅ 输出上下限(置信区间);
✅ 易于落地,低维护成本;
✅ 支持异常点、缺失值、节假日等因素建模。
这正是 Facebook 开源工具 —— Prophet的强项。
认识 Prophet


监控智能化的利器
Facebook Prophet 是一个面向业务用户设计的时间序列建模工具,广泛应用于流量预测、营收预测、电商转化、客服负载等场景。
核心优势:
|
|
|
|
|
|
|
|
|
|
|
|
示例场景
某业务系统每天采集 24 个数据点,分别覆盖早晨、白天和夜晚等典型时段。我们以 6 月 1 日至 6 月 3 日为时间范围,构造了符合业务节奏的历史数据:
-
早上时段(6–10 点):采样值稳定在约 30 左右;
-
白天时段(10–18 点):值集中在 40 左右;
-
晚上及凌晨时段:数据通常回落至 20 左右。
接下来,我们使用 Facebook Prophet 模型对 6 月 4 日的 前3 个小时进行趋势预测,模型自动学习了历史中的周期性波动,并给出了每个时间点的预测值及置信区间。(yhat_lower:置信区间下限;yhat_upper:置信区间上限)
我们人为地将其中一个采样点设置为异常值 100,用于模拟业务告警场景。预测结果显示:
-
Prophet 给出的该时段置信区间约为 [20.2 ~ 45.11];
-
实际值 100 明显超出置信范围;
-
因此该数据点被识别为异常波动。
实战构建


动态阈值监控系统架构
总体设计
核心模块说明
1. 数据采集器:从时序数据库中提取目标指标(如过去72小时入服人数,每分钟充值趋势等)。
2. 模型引擎(Prophet):
-
告警触发建模并生成 yhat/yhat_lower/yhat_upper;
-
多业务、多维度并行建模;
3. 判断器:
-
实时数据落入置信区间为正常;
-
否则触发告警并附上上下限范围。
实战成效


从“准静默”到“精准打击”
项目上线后,我们在某游戏业务上对比了 Prophet 动态阈值的告警表现:降噪率在24%左右,而且时间大部分集中在晚上,效果明显
成效总结
-
显著降低误报:尤其夜间,减少“扰人”告警;
-
识别实际波动:能判断出“当前异常是否真异常”;
-
支持多业务建模:不同服务、场景、节奏分别建模;
-
增强自动化水平:大幅减少人工设置和维护阈值成本。
结语


让监控系统“理解时间”
从传统“静态阈值”迈向“动态智能判断”,不只是算法升级,更是监控系统智能化的一次跃迁。
借助 Prophet,我们可以让告警系统理解时间、趋势、节律、周期,摆脱“人肉阈值”的时代。
适用场景
-
业务波动明显(昼夜节奏/促销高峰)
-
高误报困扰严重
-
指标波动但希望捕捉“异常趋势”
-
想自动学习阈值、降低人力配置成本
END
三七互娱技术团队
扫码关注 了解更多