通过调整模型参数对异常告警调优
由于超参设置或是数据特征发生变化,导致预测的数据不够准确,出现误告警,可以通过调整模型参数,对生成的异常告警进行调优。本章节介绍不同类型异常告警及调优方法。
调优配置方法
算法类型 | 参数名称 | 参数含义 | 取值范围 | 参数说明 | 配置建议 |
|---|---|---|---|---|---|
boxplot_ad动态阈值算法 | sensitivity | 敏感度 | 0-10 默认值5 | 敏感度参数越高,阈值线越紧;敏感度参数越低,阈值线越松。 | 敏感度参数最高不超过5.5,最低不低于3.5;一般配置4.5或者5。
|
low_count_threshold | 小请求量 | 0- 100000000 默认值0 | 请求量低于此参数值时毛刺告警、波动性不生效;其他类型的告警依然生效。 | 如果毛刺告警较多,可以配置该参数。 | |
count_threshold | 请求量保护 | 0-100000000 默认值100000000 | 请求量低于此参数值时,完全不告警。 | 一般情况下不建议配置,请谨慎配置,且对请求量类指标不生效。 | |
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 | 所有指标参数,通过该参数设置是否引入毛刺告警。 | - | |
small_sample_threshold | brand算法阈值 | 0-1000000 默认值100 | brand算法阈值,小于该阈值, 则使用brand算法,否则使用boxplot算法。 | - | |
fixed_threshold固定阈值算法 | filled_value | 补充值 | 0-100000000 默认值1 | 缺值时补值,补值不会产生告警,只用于前端展示。(必填值,与指标类型同等重要) | 成功率指标填1;失败率填0;时延填合适的值(比上阈值线小即可);速率填合适的值(比下阈值线大即可);请求量类型保持默认值即可。 |
threshold_upper | 阈值上限 | 0-100000000 默认值100000000 | 配置的固定阈值上限。 | - | |
threshold_lower | 阈值下限 | 0-100000000 默认值100000000 | 配置的固定阈值下限。 | - | |
annomaly_in_mins | 告警进入时间 | 0-30 默认10分钟 | 告警进入时间,单位分钟。 | - | |
annomaly_out_mins | 告警退出时间 | 0-30 默认10分钟 | 告警退出时间,单位分钟。 | - | |
count_threshold | 请求量保护参数 | 0-100000000 默认值0 | 请求量保护参数,低于这个值不告警;对请求量类型指标不生效。 | - |
调优策略
最常见告警
- 告警进入条件:一般8分钟内有7个点异常告警进入。
- 告警退出条件:20分钟内有18个点正常则告警退出。
- 调优方法:
- 调节sensitivity敏感度参数,可以使小幅度下降的异常不告警,针对阈值线过紧的情况,图1的异常通过敏感度调节不了,因为阈值线相对是合理的。
- 配置count_threshold参数,如果不关注请求量很少的异常,可以配置该参数,建议非必要情况下不要配置该参数,可能会出现遗漏告警的情况。
毛刺告警
- 告警进入条件:穿过阈值线的毛刺异常程度,最快在第2个毛刺点告警。
- 告警退出条件:20分钟内有18个点正常则告警退出。
- 调优方法:
- 如果对请求量很少的接口,毛刺异常不关注,可以配置low_count_threshold参数,如图2中告警的曲线请求量不超过30,可以配置该参数为30。
- 如果不管请求量多少,都不需要毛刺类告警,则可以配置alert_by_spikes参数。毛刺类告警最快可以将告警时间缩短为2分钟,如果屏蔽掉这类告警,则按照其他的告警类型会有一定的延迟(一般7分钟)。
突变告警
- 告警进入条件:局部看曲线发生突变(默认突变20%),或者长期看相比历史降低或升高。
- 告警退出条件:数据平稳后告警退出,一般会持续18分钟。
- 调优方法:
通过配置alert_by_chain参数可以控制是否加入突变检测。突变告警可以防止阈值线生成时参考宽松条件下指标突变的漏告警,但对于不关注阈值线之上数据突变的指标会产生一些不必要的告警。
波动性告警
- 告警进入条件:局部看曲线波动变大,或者长期看相比历史数据持续降低或升高。
- 告警退出条件:数据恢复到历史同期水平,持续18分钟则告警退出。
- 调优方法:
- 对于小幅度的波动和下降(上升)告警可以通过调节sensitivity敏感度来减少部分告警。
- 如果不关注这类异常,可以通过配置alert_by_std参数来实现。波动性告警可以防止阈值线生成时参考宽松条件下指标小幅波动的漏告警,但对于不关注阈值线之上数据波动的指标会产生一些不必要的告警。
长时间掉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,调优的参数立即生效。
动态告警优化后生效
- 进入AppStage运维中心。
- 在顶部导航栏选择服务。
- 单击
,选择“运维 > 监控服务(ServiceInsight)”。
- 选择左侧导航栏的,进入“异常检测”页面。
- 单击已修改告警的任务所在行“操作”列的“模型”,在任务训练模型配置中,单击“立即训练”,如图6所示,即可触发一次训练任务。
- 单击“算法配置”,在算法配置页面“当前模型”选择新生成的模型,单击“确定”。
- 单击“judge配置”,在judge配置页面单击“初始化Daemon”重启judge Daemon,调优的参数立即生效。
静态告警优化后生效
- 进入AppStage运维中心。
- 在顶部导航栏选择服务。
- 单击
,选择“运维 > 监控服务(ServiceInsight)”。
- 选择左侧导航栏的,进入“异常检测”页面。
- 单击已修改告警的任务所在行“操作”列的“模型”。
- 单击“judge配置”,在judge配置页面单击“初始化Daemon”重启judge Daemon,调优的参数立即生效。







