操作指南

API 文档

云产品监控指标

文档中心 > 云监控 > 最佳实践 > 告警动态阈值最佳实践

告警动态阈值最佳实践

最近更新时间:2022-04-28 21:38:23

云监控提供的动态阈值功能能够在不需要用户设定指标阈值的情况下,智能检测指标异常并发送告警。本文将为您详细介绍动态阈值,以及了解动态阈值为用户带来的价值以及实际应用。

实践背景

全国第七次人口普查(七人普)作为一个国家重点项目, 需要多种云产品配合使用,包括 云服务器 CVM日志服务 CLS云数据库 MySQL内容分发网络 CDN 等云产品。同时为保证监控云产品的使用稳定,项目方不仅使用了云产品指标还自定义上报了大量业务指标,例如服务的请求时间、错误统计、在线人数等指标。针对众多指标、用户群体庞大且日间夜间访问量波动大的场景,使用静态阈值监控为指标设定的阈值,难以保证检测效果和告警的准确性与可用性。本文以七人普项目实践为例,解析具体哪些场景可以发挥动态阈值的价值。

实践分析

从运维人员关注的指标来看,需要监控的核心告警指标如下:

  • 云产品指标:CPU 使用率、内存使用率、流量带宽、接口成功率。
  • 自定义指标:请求时间耗时、错误统计量、在线人数。

为保证能够及时的发现上述核心指标是否存在异常,需要对核心指标进行检测监控。传统的方案是静态阈值告警,运维人员依托自己运维的经验,配置一定的指标阈值。但是在配置指标阈值过程中,存在以下痛点:

痛点1:如何配置合理的阈值?

展开&收起

每一类指标的阈值,首先运维专家需要根据对应的业务情况去配置自认为合理的阈值。不同运维人员配置的阈值存在着差别。

案例:当业务经验丰富的张三和经验一般的李四同时进行静态阈值配置,阈值存在着差异。例如 CPU 使用率指标,张三可能知道某机器的使用率达到85%才需要告警,因此配置的阈值效果比较符合业务的需求。但李四由于经验不足,可能配置为“CPU 使用率大于50%”发送告警,该情况可能会产生较多且可能不合理的告警,造成一定的骚扰。因此不同运维人员配置出的阈值策略可能会存在较大差异。

痛点2:如何保证阈值一直合理?

展开&收起

随着业务的不断变化,预先配置的阈值可能已经不符合指标现状,还需每天去检查配置的阈值是否合理。假设不进行阈值调整,则会导致告警不准,告警不足等各种各样的问题。

案例:某个业务的流量, 在上线之初人数较少,因此流量的整体值较低,假设在100MB左右波动,这时张三根据指标值的范围,配置了“大于120MB”则告警的阈值策略。但随着业务的不断迭代,流量指标值也在逐步提升,提升到整体值在150MB左右波动。此时预先配置的“大于120MB”的告警则毫无作用,需要张三手动去调整阈值,根据流量波动情况调整为“大于170MB”更加合适。

痛点3:指标的方向性如何表征?

展开&收起

对于关注上下变化的指标阈值, 则需要设置多条阈值去保证告警的准确性。

案例:对于不同的指标,关注的变化方向也有一定的区别,例如:

  • 对于接口成功率等一类指标,期待的值是100%。针对该情况,只有指标值下降时才认为是异常,因此只关注指标值下降情况。
  • 对于失败率/错误统计量/请求耗时等一类指标,期待的指标值是比较低的状态。针对该情况,只有指标值上涨时才认为是异常,因此只关注指标值上涨情况。
  • 对于像流量,在线人数等指标,没有明显的方向倾向,则无论上涨还是下降,都认为异常。
    而动态阈值则会根据一段历史的指标曲线走势,自适应的提取曲线的趋势、周期、波动等特征,自适应计算合理的上限阈值。 动态阈值极大的解决了配置合理阈值困难,维护阈值困难等痛点。

动态阈值使用场景

以下介绍适用于动态阈值的使用场景,以及各场景特点、详细的指标和推荐的配置等:

场景 指标 特点 推荐配置
饱和度 成功率、失败率、丢包率、流量命中率、出流使用率、查询拒绝率、带宽使用率 指标范围确定,通常位于0 - 100%之间。值具有特殊的场景意义,用户往往只关注阈值。例如磁盘使用率往往超过95%,用户才会真正的关心。该场景适合静态阈值或静态阈值结合动态阈值 如果有明确的阈值限制,推荐动态阈值结合静态阈值使用;推荐使用中--低灵敏度,持续周期设置为持续2 - 4个周期。
网络流量 网络入带宽、网络出带宽、网络入包量、网络出包量 指标通常随着时间变化而变化,指标范围不确定,一般指标波动幅度较大。该场景适合动态阈值 推荐使用高--中灵敏度,持续周期设置为持续2 - 4个周期。
延时 延时次数、延时距离、延时时长 指标波动幅度通常较小,指标范围不确定。该场景适合动态阈值 推荐使用中--低灵敏度,持续周期设置为持续3 - 10个周期。
其它 慢查询数、云数据库的线程数、Redis 连接数、TCP 连接数、QPS 硬盘、IO 等待时间、临时表数量、全表扫描数、Kafka 未消费信息数 该场景适合动态阈值 推荐使用高--中灵敏度,持续周期设置为持续1 - 5个周期。

针对上述各场景为您分别演示指标配置动态阈值的正确配置。

对于饱和度类型的指标,一般值的范围可以确定,在0 - 100%之间。 这类指标具有特殊的场景意义,用户往往只关注阈值。例如磁盘使用率往往超过95%,用户才会真正的关心。该场景适合静态阈值或静态阈值结合动态阈值。不过在实际应用中,建议考虑使用中灵敏度。

场景1: 如果当前的指标,您明确知晓在什么情况下才可能发生严重的问题,例如 CPU 使用率,常见设置到达90%才触发告警。该场景可以考虑使用静态阈值。

场景2: 如果您觉得饱和度类型指标到达90%后才发送告警,不能帮助您提前发现一些问题,可以考虑使用动态阈值,如下图所示。该场景出现一定幅度的突增,则会向您发送告警,更容易在问题初期收到告警,及时解决。

场景3: 如果您觉得必须到达某个阈值才发送告警。例如,希望出现一定的幅度突增,同时值必须大于60%,这样的告警才有意义。该场景可以考虑结合动态阈值和静态阈值一起使用。

>?如需了解更多动态阈值配置,请参见 [使用动态阈值](https://cloud.tencent.com/document/product/248/50694)。
目录