在线业务会持续产生时序数据。服务正常时,这些时序数据通常会呈现某种稳定模式;当曲线偏离正常模式时,就可能意味着业务或系统出现异常。
判断时序数据是否异常,常见有三种方式:
- 值班人员实时盯盘,根据经验判断曲线是否异常。
- 使用监控产品配置静态阈值,超过阈值就触发告警。
- 使用机器学习或回归统计算法学习曲线规律,实时计算动态阈值,识别异常。
本文讨论第三种方式:如何为夜莺监控开启智能告警能力。
核心要点
- 静态阈值适合边界明确、波动较小的指标,但对业务量、访问量、订单量等周期性指标容易误报或漏报。
- 智能异常检测通过动态基线识别异常,适合有周期性、趋势性或业务增长特征的时序数据。
- 夜莺可以通过“夜莺 + 智能异常检测模块”落地智能告警,也可以让自研监控平台调用智能异常检测模块 API。
- 自建还是购买,核心看团队是否具备算法和研发落地能力,以及误报治理对值班体验的影响。
静态阈值可能遇到的问题
1. 静态阈值覆盖场景有限
业务类监控数据使用静态阈值时,很多情况下不能很好地标识异常。
例如下图中的曲线,常见业务数据的峰值和谷值差距很大。如果上限阈值配置为 600,下降阈值配置为 10,图中红圈标记的异常就可能漏报。

这类问题的本质是:同一个指标在不同时间段的“正常范围”并不一样。静态阈值只有一条固定边界,很难同时覆盖高峰、低谷和异常下降。
2. 特殊日和业务增长会改变阈值
业务监控指标经常会受到“特殊日”的影响,例如节假日、营销活动日,也会受到业务自然增长的影响。
传统静态阈值或同环比策略在这种场景下容易误报。如下图所示,紫色曲线当天的监控数据同比 1 天和 7 天都低很多,但这属于正常情况。如果直接按静态阈值或简单同环比判断,就可能产生误报。

3. 阈值维护依赖专家经验
静态阈值告警往往需要多轮调参。下图是静态阈值告警配置的常见流程:先配置阈值,再观察误报和漏报,再调整阈值,循环多次之后才可能比较稳定。

即便调好了,随着业务增长、访问模式变化和特殊活动增多,阈值仍然需要不定期调整。长期看,人力维护成本很高。
智能异常检测的优势
智能异常检测基于机器学习算法模型或回归统计算法,实时生成动态基线。它不是用一条固定线判断所有时间段,而是根据历史规律和当前曲线形态,判断某个点是否偏离正常范围。
这种方式可以带来三个直接收益:
- 减少静态阈值在周期性业务指标上的误报。
- 降低对专家经验和人工调参的依赖。
- 让值班人员少被无意义告警打扰,把注意力放在真正异常上。
下图是智能异常算法实时计算出的动态基线,会随着业务增长动态变化:

下图总结了静态阈值和智能算法的区别:

哪些场景适合智能异常检测
智能异常检测适合有周期性、趋势性、业务波动规律的时序数据。常见场景包括:
- 网页浏览量
- 活跃用户数
- 应用下载量
- 购物下单量
- 证券交易量
- 打车呼叫量
这些指标的共同特点是:绝对值会随时间段变化,白天和夜间不同,工作日和节假日不同,活动日和平时也不同。固定阈值很难覆盖所有正常波动。
相对地,如果某个指标本身就有明确边界,比如磁盘使用率超过某个比例、服务实例不可用、队列积压超过容量上限,静态阈值仍然是直接有效的方式。智能异常检测不是替代所有阈值告警,而是补足静态阈值在业务周期性指标上的短板。
夜莺的智能告警落地方案
方案一:夜莺 + 智能异常检测模块
如果你已经试用了夜莺,可以再部署一个智能异常检测模块。该模块可以和开源夜莺监控集成,整体架构如下:

智能异常检测模块完成安装后,夜莺告警规则配置页面会多出一个智能告警选项:

选择智能告警后,只需要填写要监控的指标,不需要手工填写静态阈值。保存之后,在告警规则列表页,智能告警规则右侧会出现“训练结果”按钮:

点击“训练结果”,可以进入训练结果详情页。点击曲线详情,可以看到曲线学习出的动态基线。如果曲线偏离到基线之外,夜莺告警引擎会发出告警通知。

方案二:自研监控平台 + 智能异常检测模块
如果公司已经有自己的监控平台,迁移到夜莺的成本很高,但又希望支持智能异常检测,可以采用第二种方案。
技术架构如下:

智能告警模块提供添加异常检测任务和查询异常检测结果的 API。自研监控平台可以通过调用 API 创建异常监控任务、查询检测结果,然后继续走自己的事件处理逻辑。
这种方式适合已有成熟监控平台、不想替换现有事件处理流程的团队。
自建还是购买
从成本角度看
如果团队已经有算法团队和研发团队,可以让两个团队基于业界已有方案落地智能异常检测。
如果没有算法或研发团队,招一个能把智能异常检测落地的工程师,成本至少是 20W。夜莺的智能告警企业版一年只有 1W+。在这种情况下,直接购买智能告警服务通常更划算。
从值班体验看
如果你在运维一线,经常被静态阈值误报打扰,建议推动团队尽快开启智能异常检测功能。
如果团队没有相关积累,可以购买夜莺的智能告警服务,减少日常值班中误报带来的干扰。
选型检查清单
在决定是否引入智能异常检测之前,可以先问 5 个问题:
- 告警对象是不是有明显周期性或趋势性?
- 现有静态阈值是否经常误报或漏报?
- 误报是否已经明显影响值班体验?
- 团队是否有算法和研发能力自建并长期维护?
- 现有监控平台是否必须保留,还是可以直接集成夜莺?
如果前 3 个问题答案都是“是”,智能异常检测就值得尝试。如果第 4 个问题答案是“否”,购买现成服务会更现实。如果第 5 个问题倾向保留现有平台,可以考虑通过 API 集成智能异常检测模块。
关于夜莺监控
夜莺监控是一款开源云原生监控分析系统,采用 All-In-One 的设计,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。已有众多企业选择将 Prometheus + AlertManager + Grafana 的组合方案升级为夜莺监控。
夜莺监控由滴滴开发和开源,并于 2022 年 5 月 11 日捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的第一个开源项目。
夜莺监控项目文档站点:n9e.github.io。欢迎加入,一起打造好用的云原生监控系统;也欢迎大家在 GitHub 上 star 夜莺项目:github.com/ccfos/nightingale,及时了解社区动态。
FAQ
Q1:智能异常检测是不是能替代所有静态阈值? A:不能。它更适合周期性、趋势性强的业务指标。对于有明确容量边界或状态边界的指标,静态阈值仍然简单有效。
Q2:夜莺智能告警是否必须迁移到夜莺平台? A:不一定。如果已经有自研监控平台,可以通过智能异常检测模块 API 创建检测任务和查询结果,再走现有事件处理逻辑。
Q3:为什么动态基线能减少误报? A:因为它不使用一条固定阈值判断所有时间段,而是学习指标在不同时间段的正常波动范围。对访问量、订单量、下载量这类周期性指标更适合。
