tencent cloud

文档反馈

告警动态阈值最佳实践

最后更新时间:2024-01-27 17:51:36
    腾讯云可观测平台提供的动态阈值功能够在不需要用户设定指标阈值的情况下,智能检测指标异常并发送告警。本文将为您详细介绍动态阈值,以及了解动态阈值为用户带来的价值以及实际应用。

    实践背景

    全国第七次人口普查(七人普)作为一个国家重点项目, 需要多种云产品配合使用,包括 云服务器 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%,这样的告警才有意义。该场景可以考虑结合动态阈值和静态阈值一起使用。

    网络流量指标

    指标通常随着时间变化而变化,指标范围不确定,一般指标波动幅度较大。该场景适合动态阈值。
    场景1: 如果当前的检测指标,您作为运维专家也需要观察很久之前的数据才知道多大的阈值为合理时;或者您观察后仍无法判断最佳阈值为多少。该情况下使用动态阈值即可免除您的烦恼。 场景2: 您明确知道流量大于/小于多少值时为异常,该情况可以考虑动态阈值结合静态阈值来使用。

    延时指标

    指标波动幅度通常较小,指标范围不确定。该场景适合动态阈值。
    由于延时场景指标毛刺点较多,建议使用中等灵敏度,以及使用较大的持续周期,从而过滤毛刺,提升告警质量。
    
    

    其他指标

    针对异常统计等一类指标

    在业务的初始阶段,难以配置出一个合理的阈值。需要您每天根据业务变化情况去手动更改,不断去调整阈值。针对这类情况,可以使用动态阈值。 动态阈值可以自适应指标变化趋势,通过历史变化趋势智能分析阈值。
    
    动态阈值,您只需要选择“大于或小于”的上下阈值,系统会帮您自适应的识别出突增和突降,从而发送告警。

    针对统计执行任务数等一类指标

    通过观察可以发现,大部分指标值都处于350左右。当指标值突然上升,或者突然下降,可能都会造成异常。在静态阈值场景下,则需要设置两个合理的上下阈值。
    经过一段时间运行,可能指标值已上升到550,而这指标值恰好符合当前业务情况。
    若使用静态阈值,将会一直收到告警,需要重新设置当前这一阶段更合适的阈值。
    若使用动态阈值,无需您手动操作, 动态阈值只会在从350突增到550后,一定时间内给您发送告警。在指标数据稳定到550后,算法会智能识别当前值为正常值,此时将停止告警。
    
    
    说明:
    如需了解更多动态阈值配置,请参见 使用动态阈值
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持