通过调整模型参数对异常告警调优
由于超参设置或是数据特征发生变化,导致预测的数据不够准确,出现误告警,可以通过调整模型参数,对生成的异常告警进行调优。本章节介绍不同类型异常告警及调优方法。
调优配置方法
算法类型 |
参数名称 |
参数含义 |
取值范围 |
参数说明 |
配置建议 |
---|---|---|---|---|---|
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,调优的参数立即生效。