区间检测

如果您需要检测的指标在正常状态下起伏不定(例如RTQPS),不同的时间段需要适配的告警阈值不同,那么您可以使用区间检测功能,通过动态阈值对指标数据进行异常检测。当数据点的异常突变超出预设的上下边界时,系统将生成区间异常检测事件,这种检测主要用于监控趋势稳定的数据或指标。

应用场景

  • 应用性能监控:网站管理员可以使用此功能来监测站点的响应时间、请求速度等黄金指标。当某个服务的响应时间突然超出正常范围,系统会立即发出异常警告,从而使管理员能够快速定位和解决问题。

  • 服务器资源优化:可以监测服务器的CPU和内存使用情况。如果某台服务器的资源使用率持续超过预设阈值,那么系统会自动生成异常事件。有助于团队及时调整资源分配,避免潜在的系统崩溃。

  • 应用连接池分析:可以利用此功能来监控查询速度、并发连接数等关键指标。当线程的某些指标超出正常范围,系统会自动触发异常事件,及时优化程序性能。

  • 微服务架构监测:在微服务架构中,各个服务之间的交互和依赖关系复杂。通过此功能,团队可以监测每个服务的资源使用和响应性能。当某个服务出现异常,可以迅速定位问题,确保整个系统的稳定运行。

示例:

某工作网站的访问量在白天(例如10:00~18:00)访问量低于1000是异常的,但在夜间(例如22:00~06:00)访问量超过1000可能是被攻击了。在这种场景下,指标的正常水位会随着时间变化而不断变化。 如果配置一个固定阈值,例如低于1000就告警,那白天访问异常时可以正常收到告警通知,但夜间如果被攻击则无法及时收到告警通知;如果使用区间检测功能,就可以智能识别正常水位,自动更新阈值区间。

前提条件

已将应用数据上报至可观测链路 OpenTelemetry 版,具体操作,请参见接入指南

配置区间检测

  1. 登录ARMS控制台
  2. 在左侧导航栏中选择应用监控 > 应用监控告警规则

  3. 应用监控告警规则页面,选择创建告警规则 > 创建可观测链路 OpenTelemetry 版告警规则

  4. 在创建告警规则页面自定义告警名称,并选择告警检测类型区间检测

  5. 告警对象区域根据需求选择对应的告警应用、指标类型和筛选条件。

    参数

    说明

    告警应用

    选择需要检测的应用。目前区间检测只支持对单个应用配置告警。

    指标类型

    选择需要检测的指标类型。更多信息,请参见告警规则指标说明

    选择完成后,系统将自动计算上下边界并进行实时渲染,您可以在告警条件区域预览指标走势。

    说明
    • 不同的指标类型告警规则的条件字段和筛选条件不同。

    • 初次渲染耗时较久,大约需要2~4秒。

    • 上下线边界的计算原理,请参见阈值区间计算原理

    筛选条件

    针对指标进行进一步的筛选过滤以缩短监控范围。

    告警指标的维度:

    • 遍历:会在告警内容中透出实际触发告警的维度内容。

    • 无:告警内容中透出这个维度所有数值的和。

    • = :告警中只透出当前设置维度的内容。

    • !=:告警中只透出不等于设置维度的内容。

    • 包含:告警中只透出包含设置维度的内容。

    • 不包含:告警中只透出不包含设置维度的内容。

    • 正则匹配:告警中只透出正则匹配设置维度的内容。

    image.png

  6. 告警规则区域设置告警条件

    参数

    说明

    告警触发模式

    区间检测只支持单条件的触发,不支持多个触发模式的组合。

    告警条件

    配置具体的告警条件,包含以下几个因素:

    • 最近X分钟:选定监控的时间范围,最多可选择60分钟。

    • 指标度量:指代的是指标可以被量化的数据或值,此处根据不同指标类型有不同的度量方式,例如调用次数,调用响应时间等。

    • 聚合方式:对指标数据的计算,包括平均值、最大值、最小值等,同样会取决于指标和度量。

    • 比对方式:对计算后的数据进行比对以查找出异常的点,在区间检测中包括三种比对方式:

      • 动态阈值上下界之外:系统会自动计算当前时间的上下界,如果发现有数据点位于上界或者下界之外,则为异常数据,触发告警。

      • 动态阈值上界之外:系统会自动计算当前时间的上下界,如果发现有数据点位于上界之外,则为异常数据,触发告警。

      • 动态阈值下界之外:系统会自动计算当前时间的上下界,如果发现有数据点位于下界之外,则为异常数据,触发告警。

    • 告警等级:从P1~P4 的告警等级设置,代表不同的严重程度。

    在数据预览区域,蓝色线条代表实际的数据点,绿色区域即上下边界范围。

    容忍度

    基于系统自动计算的上下界为基础进行边界拉伸或者收缩,如果容忍度越高(向右滑动),则上下边界越宽,那么数据被诊断为异常数据阈值越高,越不容易触发告警;如果容忍度越低(向左滑动),则上下边界越窄,那么数据被诊断为异常数据阈值越低,越容易触发告警。

    告警数预测

    查看选定时间段内指标预计超出阈值的次数,单击具体的告警数值,可以查询历史时间点触发告警的指标数值。

    每一次新建或修改告警规则时,都推荐您使用告警数预测功能,该功能通过算法对历史数据进行分析,对选定时间段内进行告警数预测,方便您调整阈值。更多信息,请参见告警数预测功能说明

  7. 设置告警通知高级告警设置

    参数

    说明

    告警通知

    极简模式

    • 通知对象:创建通知对象的操作,请参见告警通知对象

    • 通知时段:选择告警通知时间段。

    • 重复策略:

      • 不需要升级策略,告警未恢复状态下只发送一次。

      • 设置重复频率。当告警未恢复时,告警会以设置的重复频率循环发送告警信息直至告警恢复。

    普通模式

    通知策略:

    • 不指定通知规则:告警被触发时不会发送告警,仅当通知策略的匹配规则被触发时才会发送告警。

    • 指定通知规则发送告警:告警被触发时,ARMS通过指定通知策略的通知方式发送告警信息。您可以选择已有的通知策略,也可以新建一个通知策略。更多信息,请参见通知策略

    高级告警设置

    无数据情况

    用于无数据、复合指标和环比同比等异常数据的修复。当告警指标没有达到设置的条件时,告警数据修复为0、1或不触发告警。

    更多详细信息,请参见告警管理名词解释

  8. 设置完成后单击保存

阈值区间计算原理

ARMS的区间检测功能主要基于Prophet算法。配置区间检测任务之后,ARMS会在后台以每24h一次的频率,学习指标历史7天数据的特征,提取指标趋势性、季节性等特征,得到指标未来24h的预测曲线。再根据指标自身的波动情况,也就是误差方差的大小,为未来一天指标的数据做出一个估计区间。在配置区间检测告警时,可以预览算法计算出来的上下边界。下图中,蓝线是指标的实际值,绿色的阴影是上下边界。image.png

与静态阈值推荐功能不同的地方在于,当业务变化导致指标正常水位发生变化后,无需通过手动编辑告警规则的方式更新阈值。这是因为ARMS持续地在以每天一次的频率学习指标的特征,并只预测未来一天的上下边界,因此,您无需多次手动调整阈值。

告警数预测功能说明

告警数预测功能通过算法对历史数据进行分析,从而实现在选定时间段内对告警数进行预测,并展示历史告警发生的时刻。帮助您设置告警静态阈值或调整区间检测的告警灵敏度。

告警数预测原理

ARMS会根据指标历史24h数据,计算指标会超出每个阈值的次数来预测在该设定下告警的数量。并且,ARMS提供了指标详细信息,您可以看到指标实际值超出阈值的具体时间。您可以根据这些信息调整阈值,以适配实际业务需求。