指标体系的应用场景 - 动态阈值

指标体系的应用场景 - 动态阈值

指标体系的应用场景 - 动态阈值

在指标体系的应用场景中,基于指标的告警也是指标数据的一个重要应用。

基于指标的告警一般有以下几种类型:

  • 静态阈值:大于/小于 某个具体的值则产生告警(对于明细数据,还可以用中位值/分位值进行阈值判断)
  • 同环比: 同比/环比 变化率/变化值 上升/下降超过多少产生告警
  • 动态阈值: 对比历史同时间段的基线值 产生告警
  • 异常检测:基于历史数据检测度量的异常行为。异常检测会检测指标的行为何时与过去不同,并考虑趋势和季节性
  • 离群点异常检测:离群点异常检测组内与其他成员相比异常的成员,主要用于判断指标的分组组合中哪些和其他组合差异过大
  • 预测告警:预测指标在未来的表现。通过在超出阈值之前发出警报

本篇主要介绍动态阈值的实现方案:

需求背景

例如目前指标库中已经有了一个交易量指标,除了可以对交易量指标做统计报表,客户还希望能够基于历史数据反映出该指标的动态变化幅度(能够基于变化幅度进行topN倒排展示),并且能够评估该变化幅度是否在正常范围内(产生告警)。

交易码交易量增幅展示的效果:

业务系统 交易码 交易量基线值 当前交易量 增幅
ICOP EA1000 100 300 200%
ICOP EA1001 200 100 -200%
ICOP EA1002 50 60 20%

在列表中,是按对比基线值的变化来排序,列出前5或前10的交易码数据。

需求可总结为俩方面:

  1. 基于历史数据反映出当前指标值的一个变化幅度
  2. 评判该变化幅度是否异常

需求一只需要拉取一段时间内的指标数据,进行平均值计算得到基线值,然后用当前指标值 减去 基线值 就可以得到 偏离值。偏离值也入指标体系,这样就可以对变化值做可视化统计和告警配置

需求二的实现有两种方式

  1. 基于基线值的偏离值判断(偏离多少、偏离百分比、偏离标准差多少倍)
  2. 引入异常检测算法

因为需要将计算的偏离值作为正常指标引入指标体系,所以更适合用动态阈值方案

动态基线配置

时间窗口值

时间窗口有俩种类型:

一种为动态时间窗口,最近N天;

一种为固定时间窗口,选取一个时间段

基线趋势类型:

  • 无趋势
  • 每日小时趋势
  • 每周小时趋势
  • 每月小时趋势

这里有个数据粒度的问题,目前这些趋势都是基于小时级别的数据进行基线值计算,如果数据基座性能给力,可以考虑更细粒度的基线值计算

image-20240103142447534

基线值计算

1)无趋势:当前小时往前推N天,平均小时的指标值;(比如当前为8点半,无趋势就是从8点之前往前推N天的平均小时的指标值,取指标体系中的小时粒度表,具体算法:sum(metric_value)/sum(count))

2)每日小时趋势:比如当前为8点半,那就是计算过去N天每天8点的指标值的平均值。

N天中的天数 小时点 指标值 指标次数
第一天 8点 10 5
第二天 8点 12 6
第三天 8点 13 7
第N天 8点 15 9
N天当前小时平均值 = (10+12+13+14+15) / (5+6+7+8+9)

同理其他趋势的计算

基线值的应用- 阈值检测

最后可以对偏离值做阈值检测,出发告警到下游的告警体系:

  1. 偏离基线值
    1. 偏离基线值 多少 产生告警
    2. 偏离基线值 n倍标准差 产生告警
    3. 偏离基线值 n% 产生告警
  2. 大于/小于基线值

image-20240103143436501


 
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×