作者:大鹏

云日志团队

后端开发工程师

传统监控范围小

智能监控效率高

你说到底怎么用

大鹏给你来支招

传统监控是通过对监控项设置一个固定值(阈值),当监控项指标超过这个阈值时就通知人们关注这个指标项。传统监控一般适用于一定范围波动的业务指标:

比如磁盘的使用率,CPU的使用率等,当指标超过一定值时就意味着系统可能出现故障,但是遇到波动范围比较大的场景时;比如某银行的交易09:00~18:00之间交易量大,在其他时间交易量可能为0,工作日交易一般,非工作日交易剧增;比如某网站的点击量在白天很大,在深夜点击量可能为0,如果使用传统监控对上面的场景进行指标监控,往往不能很好的反映系统和业务的状态,产生很多误报的情况,增加人工成本,而且甚至会让人们对告警产生麻木,不信任感。

OMG,那咋办?!

所以我们加入了机器学习算法,对过去的监控指标进行训练,对当前值的异常判断不再仅仅取决于一个固定的阈值,而是同期数据,历史周期性数据进行了参考,通过动态阈值的方法对异常数据进行检测。

大鹏大讲堂

#认真记笔记#

技 术 架 构

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

异常检测器:训练的数学模型预测的值与实际的观察值存在一定的误差,这个残差系列输送到异常检测器中,异常检测器也是由一系列的数学模型组成(可动态添加),模型检查的误差点与业务的异常点最匹配的模型将作为异常检测模型,将后续检测出的异常点发送给预警系统。

时间序列建模

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

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

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

异 常 检 测

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

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

云日志里说乾坤

日志分析真有用

监控告警样样行

爆炒产品来祭天

大鹏讲堂,下次见~