更新时间:2024-05-23 GMT+08:00
分享

异常检测告警调优

由于超参设置或是数据特征发生变化,会导致预测的数据不够准确,导致误告警发生。本章节介绍不同类型异常告警及调优方法。

配置方法

在“异常检测”页面,单击异常检测任务所在行“操作”列的“模型”,默认显示“算法配置”页签,参考表1配置参数。
表1 算法配置参数说明

参数名称

参数含义

取值范围

参数说明

配置建议

metric_type

指标类型

  • success_rate(成功率)
  • fail_rate(失败率)
  • count(请求量,做上下限告警)
  • speed(速率)
  • delay(时延)
  • count_lowerlimit(请求量,做下限告警)
  • count_upperlimit(请求量,做上限告警)

按照实际的指标类型选择该参数,对于请求量类指标,做下限告警的选择count_lowerlimit,不要选择count。

-

sensitivity

敏感度

0-10

默认值5

敏感度参数越高,阈值线越紧;敏感度参数越低,阈值线越松。

敏感度参数最高不超过5.5,最低不低于3.5;一般配置4.5或者5。

  • 请求量指标因为使用了新的算法,敏感度可以在0.5—5之间调节。
  • 时延、请求量、速率类指标敏感度每降低0.5,阈值线相对浮动3%,绝对浮动3。
  • 成功率、失败率指标敏感度每降低0.5,阈值线相对浮动0.3%,绝对浮动0.3%。

low_count_threshold

小请求量

0- 100000000

默认值0

请求量低于此参数值时毛刺告警、波动性不生效;其他类型的告警依然生效。

如果毛刺告警较多,可以配置该参数。

count_threshold

请求量保护

0-100000000

默认值0

请求量低于此参数值时,完全不告警。

一般情况下不建议配置,请谨慎配置,且对请求量类指标不生效。

no_model_threshold_upper

无模型阈值上限

0-100000000

默认值100000000

无模型时配置的阈值上限(固定阈值线)。

对于新增的接口,因为没有历史数据,无法训练出该接口的模型,此时可以配置合适的值用来监控此类接口。

no_model_threshold_lower

无模型阈值下限

0-100000000

默认值0

无模型时配置的阈值下限(固定阈值线)。

对于新增的接口,因为没有历史数据,无法训练出该接口的模型,此时可以配置合适的值用来监控此类接口。

alert_by_std

波动性告警

True/False

默认为True

非请求量类指标参数,通过该参数设置是否引入波动性告警。

-

alert_by_chain

突变告警

True/False

默认为True

请求量类指标参数,通过该参数设置是否引入突变告警。

-

alert_by_drop_to_0

长时间掉0告警

True/False

默认为True

请求量类指标参数,通过该参数设置是否引入长时间掉0告警。

-

alert_by_spikes

毛刺告警

True/False

默认为True

所有指标参数,通过该参数设置是否引入毛刺告警。

-

调优策略

最常见告警

长时间低(高)于阈值线告警,如图1所示。
图1 常见告警
  • 告警进入条件:一般8分钟内有7个点异常告警进入。
  • 告警退出条件:20分钟内有18个点正常则告警退出。
  • 调优方法:
    • 调节sensitivity敏感度参数,可以使小幅度下降的异常不告警,针对阈值线过紧的情况,图1的异常通过敏感度调节不了,因为阈值线相对是合理的
    • 配置count_threshold参数,如果不关注请求量很少的异常,可以配置该参数,建议非必要情况下不要配置该参数,可能会出现遗漏告警的情况。

毛刺告警

两三个显著的毛刺点异常,如图2所示。
图2 毛刺告警
  • 告警进入条件:穿过阈值线的毛刺异常程度,最快在第2个毛刺点告警。
  • 告警退出条件:20分钟内有18个点正常则告警退出。
  • 调优方法:
    • 如果对请求量很少的接口,毛刺异常不关注,可以配置low_count_threshold参数,如图2中告警的曲线请求量不超过30,可以配置改参数为30。
    • 如果不管请求量多少,都不需要毛刺类告警,则可以配置alert_by_spikes参数。毛刺类告警最快可以将告警时间缩短为2分钟,如果屏蔽掉这类告警,则按照其他的告警类型会有一定的延迟(一般7分钟)。

突变告警

突变告警只针对请求量类指标,特点是请求量曲线发生突变(突增或者突降)同时指标曲线没有触及阈值线,如图3所示。
图3 突变告警
  • 告警进入条件:局部看曲线发生突变(默认突变20%),或者长期看相比历史降低或升高。
  • 告警退出条件:数据平稳后告警退出,一般会持续18分钟。
  • 调优方法:

    通过配置alert_by_chain参数可以控制是否加入突变检测。突变告警可以防止阈值线学习宽松条件下指标突变的漏告警,但对于不关注阈值线之上数据突变的指标会产生一些不必要的告警。

波动性告警

波动性告警只针对非请求量类指标,这类告警的特点是指标曲线没有触及阈值线,如图4所示。
图4 波动性告警
  • 告警进入条件:局部看曲线波动变大,或者长期看相比历史数据持续降低或升高。
  • 告警退出条件:数据恢复到历史同期水平,持续18分钟则告警退出。
  • 调优方法:
    • 对于小幅度的波动和下降(上升)告警可以通过调节sensitivity敏感度来减少部分告警。
    • 如果不关注这类异常,可以通过配置alert_by_std参数来实现。波动性告警可以防止阈值线学习宽松条件下指标小幅波动的漏告警,但对于不关注阈值线之上数据波动的指标会产生一些不必要的告警。

长时间掉0告警

长时间掉0告警只针对请求量类指标,特点是阈值线为0,测量值长时间掉0,如图5所示。
图5 长时间掉0告警
  • 告警进入条件:历史同时期没有掉0,或者掉0时间持续28分钟。
  • 告警退出条件:数据恢复到正常水平则告警退出。
  • 调优方法:

    如果这类告警频繁出现,可以通过配置alert_by_drop_to_0参数屏蔽。长时间掉0告警可以防止阈值线为零的情况下指标长时间掉零的漏告警。

优化后生效

根据使用的算法版本区分动态告警还是静态告警,比如正常使用的boxplot_ad算法就是动态告警,fixed_threshold算法就是静态告警。

  • 动态告警:告警调优涉及修改参数包括metric_type、sensitivity、low_count_threshold、count_threshold、no_model_threshold_upper、no_model_threshold_lower、alert_by_std、alert_by_chain、alert_by_drop_to_0、alert_by_spikes,并且需要模型训练后才能生效。
  • 静态告警:告警调优中修改涉及参数包括metric_type、filled_value、threshold_upper、threshold_lower、annomaly_in_mins、annomaly_out_mins、count_threshold,修改保存后只需要重启judge Daemon,调优的参数立即生效。

动态告警优化后生效

  1. 进入运维中心工作台。
  2. 在顶部导航栏选择自有服务。
  1. 单击,选择“运维 > 监控服务(ServiceInsight)”。
  1. 选择左侧导航栏的AI辅助诊断 > 异常检测,进入“异常检测”页面。
  2. 单击已修改告警的任务所在行“操作”列的“模型”,在任务训练模型配置中,单击“立即训练”,如图6所示,即可触发一次训练任务。

    在训练历史会生成一条状态为submit的数据,根据维度值数量训练所需要的时间不一样,直到状态变成finish表示训练完成。
    图6 设置任务模型训练

  3. 单击“算法配置”,在算法配置页面“当前模型”选择新生成的模型,单击“确定”。
  4. 单击“judge配置”,在judge配置页面单击“初始化Daemon”重启judge Daemon,调优的参数立即生效。

静态告警优化后生效

  1. 进入运维中心工作台。
  2. 在顶部导航栏选择自有服务。
  1. 单击,选择“运维 > 监控服务(ServiceInsight)”。
  1. 选择左侧导航栏的AI辅助诊断 > 异常检测,进入“异常检测”页面。
  2. 单击已修改告警的任务所在行“操作”列的“模型”。
  3. 单击“judge配置”,在judge配置页面单击“初始化Daemon”重启judge Daemon,调优的参数立即生效。
分享:

    相关文档

    相关产品