可左右滑动选省市

一种基于运维监控的单指标异常检测方法发明专利

更新时间:2024-07-11
一种基于运维监控的单指标异常检测方法发明专利 专利申请类型:发明专利;
源自:北京高价值专利检索信息库;

专利名称:一种基于运维监控的单指标异常检测方法

专利类型:发明专利

专利申请号:CN202010395406.X

专利申请(专利权)人:北京必示科技有限公司
权利人地址:北京市海淀区中关村东路8号东升大厦A座502室

专利发明(设计)人:张文池,刘大鹏,王耀,沈运,朱晶,隋楷心,程博

专利摘要:本发明公开了一种基于运维监控的单指标异常检测方法,该异常检测系统对运维监控采集并存储的时序数据进行KPI异常检测,所述时序数据包括运维监控通过技术工具采集的时间和指标值,该异常检测系统包括特征描述器、检测器和分类器。本发明科学合理,使用安全方便,通过针对不同的场景选择合适的算法进行异常检测,可以有效的提高异常检测的效率和精确度,避免出现误报漏报的情况导致错过真正有价值的问题,使得算法具有足够快的速度来处理在线实时数据,使得算法可以不依赖标注自动检测异常。

主权利要求:
1.一种基于运维监控的单指标异常检测方法,其特征在于:该异常检测方法对运维监控采集并存储的时序数据进行KPI异常检测;
所述时序数据包括运维监控通过技术工具采集的时间和指标值;
该异常检测方法包括特征描述器、检测器和分类器;
该异常检测方法还包括以下步骤:
S1、对于一条时间序列,对其特征进行表述;
S2、根据时间序列的特征,选用不同的模型组合来训练并生成对应的模型;
S3、针对不同的场景选择适合的算法来进行异常检测;
S4、在实际环境中进行在线检测;
S5、根据预期异常检测效果的不同,进行反馈;
所述步骤S1中,还包括以下步骤:A1、通过算法自动找到时间序列的周期:A2、判断时间序列的周期是否具有向上或向下的趋势性;
A3、判断时间序列的周期偏移情况;
A4、判断时间序列的数据抖动程度;
A5、判断时间序列的上下界极限值;
A6、判断是否可以使用阈值的方法进行判定;
所述步骤S4中,在线检测还包括以下步骤:B1、使用已经训练好的模型生成新的时间点的特征;
B2、使用已经训练好的模型对新的时间点的异常程度打分;
B3、根据异常检测的默认阈值,给出一个时间点是否异常的结果;
所述步骤S5中,还包括以下步骤:C1、进行敏感度的调节,达到预期效果;
C2、进行标注反馈,将异常漏报和正常误报标出;
C3、算法进行自动调整,达到预期的效果;
所述步骤S3中,针对不同的场景选择适合的算法进行异常检测;
所述算法包括变分自编码器、渐进梯度回归树、差值指数滑动平均和极值理论;
所述变分自编码器是深度学习生成模型的一种,结构分为编码层、隐变量层和解码层;
所述变分自编码器描述了两个随机变量间的关系:隐变值z和观察值x,对符合多元正太分布 的隐变值z先验,所述观察值x符合一个有参数θ的神经网络的拟合另一个神经网络作为近似后验 该后验属于2
其中:μφ(x)和σ φ(x)由神经网络得到;
通过最大化证据下界近似后验和生成模型联合训练,具体公式如下:采用蒙特卡洛积分来近似所示期望值,其中z(l)和 属于整体基于重建误差来进行异常检测;
所述渐进梯度回归树对于给定的训练数据损失函数 可以得到回归树
首先初始化决策树,估计一个使损失函数极小化的常数值:对于每棵树计算损失函数的负梯度在当前模型的值,并将它作为残差的估计值,具体公式如下:对于每棵树的每个叶子节点,计算:利用线性搜索估计叶节点区域的值,使损失函数最小化,然后更新:最终得到的fm(x)就是我们最终的模型:对于每一个时间序列中的点,针对它前面的不同大小窗口,提取不同的特征,用于训练和测试,在线测试的过程中,对于每个时间点算法会预测出它应该的取值,根据一些动态阈值的选择方法给出合理的取值范围,超出则报异常;
差分指数滑动平均用于异常对应的数值并未超过合理的范围,只是在局部产生了突增或突降;
所述差分指数滑动平均引入平滑因子α,α越小拟合的曲线越平滑,对于原始数值Y[i]和平滑后数值S[i],具体计算公式如下:SY[0]=Y[0];
SY[i]=α*Y[i]+(1‑α)*SY[i‑1];
不使用原始数据进行差分指数滑动平均,采用一阶差分后的值进行指数滑动平均,一阶差分值D(i)和残差项s[i]的具体公式如下:D(i)=Y[i]‑Y[i‑1];
s[i]=D(i)‑SD[i];
在训练数据中得到具体的残差项s[i]后,可以拟合残差项的拟合分布,算法采用正态分布,若残差值处于正态分布的1%(3‑sigma)极值以内的位置则认为是异常;
所述极值理论用于时间序列没有一个可见的周期性的情况;
首先采用机器学习的方法判断数据是否适合使用固定阈值的算法以及阈值应该在数据中的位置,如果判断可以采用固定阈值,那么就应用极值理论得到动态阈值,极值理论是处理与概率分布的中值相离较大的情况的理论,极值分布符合如下形式:普通标准分布的所有极端都遵循这样的分布,极值指数γ取决于这个原始定律,即当x增大,P(X>x)→0,函数 表示了分布的长尾,Gγ是对其的拟合;
累计分布函数 当且仅当存在一个函数σ,对于所有的 约束于1+γx>
0:
这个公式等价于:
可以估计 和 百分位可以通过如下公式计算:对于两个参数的优化,采用Grimshaw技巧将其转化为一个参数的优化问题去找到 的可行解,其中logL(γ ,σ)是寻找最优解的常用手段——对数最大似然,其公式如下:对于每一条特定的时间序列在线检测的流式传输过程,可以对分布进行动态的更新以得到更合理的阈值取值。
2.根据权利要求1所述的一种基于运维监控的单指标异常检测方法,其特征在于:所述特征描述器通过分析历史数据,获取KPI关键特征;
所述检测器通过分析KPI历史数据提取各项关键特征;
所述分类器根据提取的各项关键特征进行异常判断。 说明书 : 一种基于运维监控的单指标异常检测方法技术领域[0001] 本发明涉及运维监控技术领域,具体是一种基于运维监控的单指标异常检测方法。背景技术[0002] 运维监控通过各种技术工具,如Tivoli、Zabbix、APM、网络抓包、应用埋点监控等采集各种监控指标,这些指标通常被存储为时序数据(包含采集时间和指标值),KPI异常检测对监控指标的时序曲线进行检测,自动发现其反常行为,以便及早发现风险,防止其发展为故障,或及时发现故障,进行止损、诊断和修复。[0003] 传统的流行的KPI异常检测的算法有如下几种:[0004] 1、基于有监督的机器学习/深度学习,如随机森林,多层感知机等,缺点是需要大量的人工标注,且相当一部分的被算法检测出的异常具有不可解释性;[0005] 2、基于无监督的机器学习,代表方法有孤立森林,应用于离散点的基于密度的聚类方法等,缺点是效果在相当一部分时间序列上的表现不够好,而且同样有结果不可解释的问题;[0006] 3、基于预测误差的方式,如线性回归及其变种,滑动平均及其变种等,缺点是KPI的形态各异,很难用一种固定的回归解决所有的问题,而且方法大都对异常点很敏感,效果也不够好;[0007] 智能异常检测面临如下挑战:[0008] 1、面对海量数据的KPI,需要算法有足够快的速度来处理在线实时的数据;[0009] 2、实际环境中缺少异常标注,需要算法能够不依赖标注自动检测异常;[0010] 3、检测的异常要符合专业运维人员的感知,而不仅是单纯大量规则的匹配;[0011] 4、算法要足够准确,不然大量的误报漏报会错过真正有价值的问题;[0012] 5、面对形态各异的KPI,要有适应KPI的能力,不调参也能得到好的结果;[0013] 6、对于实际在线环境的情况(如缺点、乱序等)要有足够的处理能力;[0014] 所以,人们急需一种基于运维监控的单指标异常检测方法来解决上述问题。发明内容[0015] 本发明的目的在于提供一种基于运维监控的单指标异常检测方法,以解决现有技术中提出的问题。[0016] 为实现上述目的,本发明提供如下技术方案:一种基于运维监控的单指标异常检测方法,该异常检测系统对运维监控采集并存储的时序数据进行KPI异常检测;[0017] 所述时序数据包括运维监控通过技术工具采集的时间和指标值;[0018] 该异常检测系统包括特征描述器、检测器和分类器。[0019] 根据上述技术方案,所述特征描述器通过分析历史数据,获取KPI关键特征;[0020] 所述检测器通过分析KPI历史数据提取各项关键特征;[0021] 所述分类器根据提取的各项关键特征进行异常判断。[0022] 根据上述技术方案,该异常检测系统还包括以下步骤:[0023] S1、对于一条时间序列,对其特征进行表述;[0024] S2、根据时间序列的特征,选用不同的模型组合来训练并生成对应的模型;[0025] S3、针对不同的场景选择适合的算法来进行异常检测;[0026] S4、在实际环境中进行在线检测;[0027] S5、根据预期异常检测效果的不同,进行反馈。[0028] 根据上述技术方案,所述步骤S1中,还包括以下步骤:[0029] A1、通过算法自动找到时间序列的周期:[0030] A2、判断时间序列的周期是否具有向上或向下的趋势性;[0031] A3、判断时间序列的周期偏移情况;[0032] A4、判断时间序列的数据抖动程度;[0033] A5、判断时间序列的上下界极限值;[0034] A6、判断是否可以使用阈值的方法进行判定。[0035] 根据上述技术方案,所述步骤S4中,在线检测还包括以下步骤:[0036] B1、使用已经训练好的模型生成新的时间点的特征;[0037] B2、使用已经训练好的模型对新的时间点的异常程度打分;[0038] B3、根据异常检测的默认阈值,给出一个时间点是否异常的结果。[0039] 根据上述技术方案,所述步骤S5中,还包括以下步骤:[0040] C1、进行敏感度的调节,达到预期效果;[0041] C2、进行标注反馈,将异常漏报和正常误报标出;[0042] C3、算法进行自动调整,达到预期的效果。[0043] 根据上述技术方案,所述步骤S3中,针对不同的场景选择适合的算法进行异常检测;[0044] 所述算法包括变分自编码器、渐进梯度回归树、差值指数滑动平均和极值理论。[0045] 根据上述技术方案,所述变分自编码器是深度学习生成模型的一种,结构分为编码层、隐变量层和解码层,所述变分自编码器在拥有足够的计算机资源,并且积累较多的历史数据的情况下使用;[0046] 所述变分自编码器描述了两个随机变量间的关系:隐变值z和观察值x,对符合多元正太分布 的隐变值z先验,所述观察值x符合一个有参数θ的神经网络的拟合另一个神经网络作为近似后验 该后验 属于[0047] 其中:μφ(x)和σ2φ(x)由神经网络得到;[0048] 通过最大化证据下界近似后验和生成模型联合训练,具体公式如下:[0049](l)[0050] 采用蒙特卡洛积分来近似所示期望值,其中Z 和 属于[0051][0052] 整体基于重建误差来进行异常检测,对于有充分历史数据的时间序列的异常检测能达到很好的效果,效果在我们的测试数据集上以及公开数据集上效果远好于目前主流的有监督学习方法和神经网络算法;[0053] 所述渐进梯度回归树用于训练数据足够,允许较长时间的重新训练,存储资源丰富,并且不要求算法具有太高的解释度的情况下使用,该算法的最终结果由多颗决策树累加组成,泛化能力强大,每一棵树都是从之前所有树的残差中学习,逐渐接近最好的效果;[0054] 所 述 渐 进 梯 度 回 归 树 对 于 给 定 的 训 练 数 据损失函数 可以得到回归树f(x)。[0055] 首先初始化决策树,估计一个使损失函数极小化的常数值:[0056][0057] 对于每棵树计算损失函数的负梯度在当前模型的值,并将它作为残差的估计值,具体公式如下:[0058][0059] 对于每棵树的每个叶子节点,计算:[0060][0061] 利用线性搜索估计叶节点区域的值,使损失函数最小化,然后更新:[0062][0063] 最终得到的fm(x)就是我们最终的模型:[0064][0065] 对于每一个时间序列中的点,针对它前面的不同大小窗口,提取不同的特征,用于训练和测试,在线测试的过程中,对于每个时间点算法会预测出它应该的取值,根据一些动态阈值的选择方法给出合理的取值范围,超出则报异常;[0066] 所述差分指数滑动平均用于异常对应的数值并未超过合理的范围,只是在局部产生了突增或突降;[0067] 所述差分指数滑动平均引入平滑因子α,α越小拟合的曲线越平滑,对于原始数值Y[i]和平滑后数值S[i],具体计算公式如下:[0068] SY[0]=Y[0];[0069] SY[i]=α*Y[i]+(1‑α)*SY[i‑1];[0070] 不使用原始数据进行差分指数滑动平均,采用一阶差分后的值进行指数滑动平均,更好的描述了局部突增突降的异常变化,一阶差分值D(i)和残差项s[i]的具体公式如下:[0071] D(i)=Y[i]‑Y[i‑1];[0072] s[i]=D(i)‑SD[i]:[0073] 在训练数据中得到具体的残差项s[i]后,可以拟合残差项的拟合分布,算法采用正态分布,若残差值处于正态分布的1%(3‑sigma)极值以内的位置则认为是异常;[0074] 所述极值理论用于时间序列没有一个可见的周期性的情况;[0075] 首先采用机器学习的方法判断数据是否适合使用固定阈值的算法以及阈值应该在数据中的位置,如果判断可以采用固定阈值,那么就应用极值理论得到动态阈值,极值理论是处理与概率分布的中值相离较大的情况的理论,极值分布符合如下形式:[0076][0077] 普通标准分布的所有极端都遵循这样的分布,极值指数γ取决于这个原始定律,即当x增大, 函数 表示了分布的长尾,Gγ是对其的拟合;下图包含尾部的三种可能形状和对应的γ的取值:[0078][0079] 累计分布函数 当且仅当存在一个函数σ,对于所有的 约束于1+γx>0:[0080][0081] 这个公式等价于:[0082][0083] 可以估计 和 百分位可以通过如下公式计算:[0084][0085] 对于两个参数的优化,采用Grimshaw技巧将其转化为一个参数的优化问题去找到 的可行解,其中 是寻找最优解的常用手段——对数最大似然,其公式如下:[0086][0087] 对于每一条特定的时间序列在线检测的流式传输过程,可以对分布进行动态的更新以得到更合理的阈值取值。[0088] 与现有技术相比,本发明的有益效果是:通过指标异常检测,可以自动发现反常行为,以便及早发现风险,防止其发展成为故障,进行止损、诊断和修复,通过针对不同的场景选择合适的算法进行异常检测,可以有效的提高异常检测的效率和精确度,避免出现误报漏报的情况导致错过真正有价值的问题,使得算法具有足够快的速度来处理在线实时数据,使得算法可以不依赖标注自动检测异常,可以根据异常检测的默认阈值给出是否异常的结果,用户可以根据实际情况对敏感度进行调节,并且,配有标注反馈,有助于用户将其觉得检测异常的情况进行标注反馈,有利于对整个系统的一个改善和改进。附图说明[0089] 图1为本发明一种基于运维监控的单指标异常检测方法的整体架构设计图;[0090] 图2为本发明一种基于运维监控的单指标异常检测方法变分自编码器的结构示意图;[0091] 图3为本发明一种基于运维监控的单指标异常检测方法的步骤示意图;[0092] 图4为本发明一种基于运维监控的单指标异常检测方法步骤S1的步骤示意图;[0093] 图5为本发明一种基于运维监控的单指标异常检测方法步骤S4的步骤示意图;[0094] 图6为本发明一种基于运维监控的单指标异常检测方法步骤S5的步骤示意图;[0095] 图7为本发明一种基于运维监控的单指标异常检测方法基于VAE的DONUT算法结构Variationalnet[0096] 图8为本发明一种基于运维监控的单指标异常检测方法基于VAE的DONUT算法结构Generativenet具体实施方式[0097] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0098] 实施例:如图1‑3所示,一种基于运维监控的单指标异常检测方法,该异常检测系统对运维监控采集并存储的时序数据进行KPI异常检测;[0099] 时序数据包括运维监控通过技术工具采集的时间和指标值;[0100] 该异常检测系统包括特征描述器、检测器和分类器。[0101] 根据上述技术方案,特征描述器通过分析历史数据,获取KPI关键特征;[0102] 检测器通过分析KPI历史数据提取各项关键特征;[0103] 分类器根据提取的各项关键特征进行异常判断。[0104] 根据上述技术方案,该异常检测系统还包括以下步骤:[0105] S1、对于一条时间序列,对其特征进行表述;[0106] S2、根据时间序列的特征,选用不同的模型组合来训练并生成对应的模型;[0107] S3、针对不同的场景选择适合的算法来进行异常检测;[0108] S4、在实际环境中进行在线检测;[0109] S5、根据预期异常检测效果的不同,进行反馈。[0110] 步骤S1中,特征描述器对一条时间序列进行特征的描述,检测器对一条时间序列进行关键特征的提取,步骤S3中,分类器对时间序列的异常特征进行分类,并针对不同的场景选择合适的算法来进行异常检测。[0111] 如图4所示,步骤S1中,还包括以下步骤:[0112] A1、通过算法自动找到时间序列的周期:[0113] A2、判断时间序列的周期是否具有向上或向下的趋势性;[0114] A3、判断时间序列的周期偏移情况;[0115] A4、判断时间序列的数据抖动程度;[0116] A5、判断时间序列的上下界极限值;[0117] A6、判断是否可以使用阈值的方法进行判定。[0118] 如图5所示,步骤S4中,在线检测还包括以下步骤:[0119] B1、使用已经训练好的模型生成新的时间点的特征;[0120] B2、使用已经训练好的模型对新的时间点的异常程度打分;[0121] B3、根据异常检测的默认阈值,给出一个时间点是否异常的结果。[0122] 如图6‑8所示,步骤S5中,还包括以下步骤:[0123] C1、进行敏感度的调节,达到预期效果;[0124] C2、进行标注反馈,将异常漏报和正常误报标出;[0125] C3、算法进行自动调整,达到预期的效果。[0126] 根据上述技术方案,步骤S2中,针对不同的场景选择适合的算法进行异常检测;[0127] 算法包括变分自编码器、渐进梯度回归树、差值指数滑动平均和极值理论。[0128] 根据上述技术方案,变分自编码器是深度学习生成模型的一种,结构分为编码层、隐变量层和解码层,变分自编码器在拥有足够的计算机资源,并且积累较多的历史数据的情况下使用;[0129] 变分自编码器描述了两个随机变量间的关系:隐变值z和观察值x,对符合多元正太分布 的隐变值z先验,观察值x符合一个有参数θ的神经网络的 拟合另一个神经网络作为近似后验 该后验 属于[0130] 其中:μφ(x)和σ2φ(x)由神经网络得到;[0131] 通过最大化证据下界近似后验和生成模型联合训练,具体公式如下:[0132](l)[0133] 采用蒙特卡洛积分来近似所示期望值,其中z 和 属于[0134][0135] 整体基于重建误差来进行异常检测,对于有充分历史数据的时间序列的异常检测能达到很好的效果,效果在我们的测试数据集上以及公开数据集上效果远好于目前主流的有监督学习方法和神经网络算法;[0136] 渐进梯度回归树用于训练数据足够,允许较长时间的重新训练,存储资源丰富,并且不要求算法具有太高的解释度的情况下使用,该算法的最终结果由多颗决策树累加组成,泛化能力强大,每一棵树都是从之前所有树的残差中学习,逐渐接近最好的效果;[0137] 渐进梯度回归树对于给定的训练数据 损失函数 可以得到回归树f(x)。[0138] 首先初始化决策树,估计一个使损失函数极小化的常数值:[0139][0140] 对于每棵树计算损失函数的负梯度在当前模型的值,并将它作为残差的估计值,具体公式如下:[0141][0142] 对于每棵树的每个叶子节点,计算:[0143][0144] 利用线性搜索估计叶节点区域的值,使损失函数最小化,然后更新:[0145][0146] 最终得到的fm(x)就是我们最终的模型:[0147][0148] 对于每一个时间序列中的点,针对它前面的不同大小窗口,提取不同的特征,用于训练和测试,在线测试的过程中,对于每个时间点算法会预测出它应该的取值,根据一些动态阈值的选择方法给出合理的取值范围,超出则报异常;[0149] 差分指数滑动平均用于异常对应的数值并未超过合理的范围,只是在局部产生了突增或突降;[0150] 差分指数滑动平均引入平滑因子α,α越小拟合的曲线越平滑,对于原始数值Y[i]和平滑后数值S[i],具体计算公式如下:[0151] SY[0]=Y[0];[0152] SY[i]=α*Y[i]+(1‑α)*SY[i‑1];[0153] 不使用原始数据进行差分指数滑动平均,采用一阶差分后的值进行指数滑动平均,更好的描述了局部突增突降的异常变化,一阶差分值D(i)和残差项s[i]的具体公式如下:[0154] D(i)=Y[i]‑Y[i‑1];[0155] s[i]=D(i)‑SD[i];[0156] 在训练数据中得到具体的残差项s[i]后,可以拟合残差项的拟合分布,算法采用正态分布,若残差值处于正态分布的1%(3‑sigma)极值以内的位置则认为是异常;[0157] 极值理论用于时间序列没有一个可见的周期性的情况;[0158] 首先采用机器学习的方法判断数据是否适合使用固定阈值的算法以及阈值应该在数据中的位置,如果判断可以采用固定阈值,那么就应用极值理论得到动态阈值,极值理论是处理与概率分布的中值相离较大的情况的理论,极值分布符合如下形式:[0159][0160] 普通标准分布的所有极端都遵循这样的分布,极值指数γ取决于这个原始定律,即当x增大, 函数 表示了分布的长尾,Gγ是对其的拟合;下图包含尾部的三种可能形状和对应的γ的取值:[0161][0162] 累计分布函数 当且仅当存在一个函数σ,对于所有的 约束于1+γx>0:[0163][0164] 这个公式等价于:[0165][0166] 可以估计 和 百分位可以通过如下公式计算:[0167][0168] 对于两个参数的优化,采用Grimshaw技巧将其转化为一个参数的优化问题去找到 的可行解,其中 是寻找最优解的常用手段——对数最大似然,其公式如下:[0169][0170] 对于每一条特定的时间序列在线检测的流式传输过程,可以对分布进行动态的更新以得到更合理的阈值取值。[0171] 对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

专利地区:北京

专利申请日期:2020-05-11

专利公开日期:2024-07-26

专利公告号:CN111858231B


以上信息来自国家知识产权局,如信息有误请联系我方更正!
电话咨询
读内容
搜本页
回顶部