智能监控在袋鼠云中的应用

简介

传统监控是通过对监控项设置一个固定值(阈值),当监控项指标超过这个阈值时就通知人们关注这个指标项。传统监控一般适用于一定范围波动的业务指标,比如磁盘的使用率,CPU的使用率等,当指标超过一定值时就意味着系统可能出现故障,但是遇到波动范围比较大的场景时,比如某银行的交易09:00~18:00之间交易量大,在其他时间交易量可能为0,工作日交易一般,非工作日交易剧增,又比如某网站的点击量在白天很大,在深夜点击量可能为0,如果使用传统监控对上面的场景进行指标监控,往往不能很好的反映系统和业务的状态,产生很多误报的情况,增加人工成本,而且甚至会让人们对告警产生麻木,不信任感。所以我们加入了机器学习算法,对过去的监控指标进行训练,对当前值的异常判断不再仅仅取决于一个固定的阈值,而是同期数据,历史周期性数据进行了参考,通过这是动态阈值的方法对异常数据进行检测。

技术架构

_
模型训练器:云日志以固定频率采集的业务指标形成时间序列,输送到模型训练器中,模型训练器有一系列的数学模型组成(可动态添加),每个模型都得到预测值,观察值与预测值之前存在的误差,对比误差我们将得到一个与业务最匹配的数学模型。利用这个训练出的最佳模型,输入未来时间点,得到预测值,绘制未来业务图。
异常检测器:训练的数学模型预测的值与实际的观察值存在一定的误差,这个残差系列输送到异常检测器中,异常检测器也是由一系列的数学模型组成(可动态添加),模型检查的误差点与业务的异常点最匹配的模型将作为异常检测模型,将后续检测出的异常点发送给预警系统。

时间序列建模

采集的时间序列数据并非是散乱,毫无规律的一组数据,它往往伴随业务的变化而变化,有的具有很强的周期性规则,有的具有相对平滑的趋势,我们需要利用对应的数学模型来拟合,一下是我们常用的几种数学模型。

模型 描述
OlympicModel 季节模型,其中下一个点是先前n个时期的平滑平均值
MovingAverageModel 移动平均模型,下一个点在给定时间段的平均值
MultipleLinearRegressionModel 多元线性回归模型,使用一个或者多个变量对x和y的关系进行建模
PolynomialRegressionModel 多项式回归模型,高纬度数据建模
exponentialSmoothingModel 指数平滑模型,分一次,二次,三次指数平滑,对周期,趋势,季节性特征数据
weightedMovingAverageModel 权重移动平均模型,下一个点是给定时间段的加权平均值

对不同特征的时间序列,不同的数学模型所计算出的误差也截然不同,我们从以下列表的指标来衡量这些数学模型的匹配度。

指标 描述
Bias 误差的算术平均值
MAD 平均绝对偏差,也称为MAE
MAPE 平均绝对百分比误差
MSE 误差的均方
SAE 绝对错误的总和
ME 平均误差
MASE 平均绝对比例误差
MPE 平均百分比误差

在经过以上指标衡量预测模型的优劣后,我得到最契合业务的拟合曲线,得到最佳的训练模型。然后输入未来时间点得到那个时间点的预测值,然后绘制出预测曲线

异常检测

在预测出未来时间点的数据后,如何检测这个业务数据是否异常,我们也有对应的异常检测模型,如下表所示

模型 描述
cpModel 基于内核的波动点检测
DBScanModel 基于密度的聚类算法检测
kSigmaModel 经典的k-sigma模型,概率检测
extremeLowDensityModel 基于密度的异常检测,范围检测

将残差指标用以上模型计算之后,与过去的业务异常点进行对比,选择最接近的异常检测模型,作为后续的异常检测,当模型检测数数据异常时,即时发送预警给巡检员,防患于未来。

猜你喜欢

转载自yq.aliyun.com/articles/669321