基于序列化自编码器的无监督KPI异常检测方法技术

技术编号:29526408 阅读:20 留言:0更新日期:2021-08-03 15:12
本发明专利技术公开了一种基于序列化自编码器的无监督KPI异常检测方法,目的是提高KPI异常检测的准确性和鲁棒性。技术方案是构建基于序列化自编码器的无监督KPI异常检测系统;输入模块提取KPI值向量;数据预处理模块对KPI值向量进行预处理;离线训练模块对标准化后的KPI值向量进行切分,构建异常检测模型并对模型进行训练;自动阈值选择模块计算阈值;有效检测窗口设置模块获取有效窗口值;输入模块、数据预处理模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块相互配合,对在线KPI序列进行检测,得到检测结果;显示模块显示检测结果。采用本发明专利技术可解决漏报率高、误报率高等问题,有效提高KPI异常检测的准确率。

【技术实现步骤摘要】
基于序列化自编码器的无监督KPI异常检测方法
本专利技术属于信息技术系统智能运维
,具体涉及一种基于序列化自编码器(自编码器是一种特殊结构的深度神经网络,包括编码器和解码器两个对称的结构)的无监督KPI(KeyPerformanceIndicator,关键性能指标)异常检测方法。
技术介绍
近年来随着云计算业务的广泛部署、数据中心规模的不断扩大、网络和通信系统的不断发展,互联网企业、运营商、金融机构等内部的IT架构在数量和规模上不断扩展,IT系统的服务器、存储设备、网络设备等数量越来越多,系统结构也愈加复杂多样,而保障IT系统的稳定性、可用性和高效性的运维工作必不可少,且运维人员任务愈加繁重,时常处于“救火”状态。当前IT系统的运维人员面临极大的工作压力,传统的依靠人力的运维模式已难以适应大规模IT系统发展的需求。同时,相比于传统运维的方式,大数据时代的运维面临着集群规模更大、业务组件更多、监控可视化与智能化更为复杂等诸多难题。综上所述,从机器规模到数据规模的扩大,传统的运维方式和方法已经不能满足现今互联网产品快速迭代的需求,为了保障良好的用户体验和业务效果,亟需更高效、更智能化的系统运维技术。人工智能是撬动IT系统智能化的支点。随着大数据时代的到来,在海量数据场景下,利用大数据和人工智能等技术赋能现代化IT运维管理是当前运维领域的研究热点。2016年Gartner正式提出了智能运维(ArtificialIntelligenceforITOperations,AIOps)的概念,即利用人工智能技术赋能IT运维,旨在利用AI算法分析海量运维数据,自动、准确地发现和定位问题,提高运维效率。当大数据、人工智能等技术赋能传统行业、驱动变革时,运维结合AI技术则把IT行业中原来完全依靠人工经验、重复枯燥的工作,推向了自动化、智能化的运维,引领运维的下一步发展方向,极大减轻了运维和研发人员的负担。运维的技术体系伴随着IT系统的快速发展而愈加完善,从最开始的纯人工运维到脚本和开源工具的使用,再到平台建设,运维也紧跟时代的步伐,逐渐向智能化方向发展。在海量数据场景下,AIOps开始成为下一代运维技术发展的热点。自动化、智能化的KPI(KeyPerformanceIndicator,关键性能指标)异常检测工作是智能运维的首要和关键环节。KPI可以直观地反应系统的实时状态,因此,为保证系统的可用性、可靠性和稳定性,及时发现故障、解决故障,为用户提供更好的服务体验,运维系统收集和监测各类KPI。KPI可分为两种:一种是业务级KPI(Business-relatedKPI),比如页面访问量、APP连接错误数量等,此类KPI可以反应系统规模、质量等;另一种是机器级KPI(Machine-levelKPI),包括CPU/内存使用率、网卡吞吐率等,此类KPI可以反应系统硬件(服务器、路由器等)的健康状态。IT系统中的KPI异常检测工作是当前智能运维领域的研究热点,已有方法取得了一定的效果,但依然还有很多工作值得深入。现有KPI异常检测工作面临以下挑战:1.大规模IT系统需要对海量KPI进行监控,运维人员亟需更加自动化、智能化的异常检测方法以迅速、准确地发现问题,进而进行故障的移除和定位;2.实际环境中产生的KPI比较复杂,除故障导致的异常点外,还有缺失点、噪声点等,增加了对KPI建模的难度;3.在KPI中,异常值的分布仅占整体数据的很小部分,这造成了KPI的正负样本不均衡。此外,对于海量KPI,人工标注成本过高。无监督方法可以很好地处理KPI缺乏标签且正负样本不均衡的问题。目前,针对KPI的无监督异常检测方法在工业界主要使用Liu等人提出的iForest(LiuFT,TingKM,ZhouZH.Isolationforest[C]//2008EighthIEEEInternationalConferenceonDataMining.IEEE,2008:413-422.译为:孤立森林算法)。该算法利用集成学习的方法构造“树”,通过计算各节点到根节点的距离进行异常点的判断,距离根节点越近,异常值越大,即是异常点的可能性也最大。iForest可以实现线性时间复杂度,但需要人工预先设置异常点比例。现有的无监督KPI异常检测的研究点主要集中在深度生成模型的研究与应用上,其中的典型代表包括Xu等人提出的基于变分自编码器(VariationalAutoencoder,VAE)的Donut算法(XuH,ChenW,ZhaoN,etal.UnsupervisedAnomalyDetectionviaVariationalAuto-encoderforSeasonalKPIsinWebApplications[C]//Proceedingsofthe2018WorldWideWebConference.2018:187-196.译为:基于变分自编码器适用于web应用的无监督异常检测)及其改进版Bagel算法(LiZ,ChenW,PeiD.RobustandUnsupervisedKPIAnomalyDetectionBasedonConditionalVariationalAutoencoder[C]//2018IEEE37thInternationalPerformanceComputingandCommunicationsConference(IPCCC).IEEE,2018:1-9.译为:基于条件变分自编码器的鲁棒性无监督异常检测算法)。Bagel算法在Donut算法的基础上利用条件变分自编码器(ConditionalVariationalAutoencoder,CVAE)将时间信息作为条件,对原始数据进行重构。二者取得了一定的成果,但以上两种方法仅在周期型KPI数据上表现良好。综上所述,现有无监督KPI异常检测方法主要存在以下问题:1.KPI本质上是时间序列数据,时间信息是其本质属性,但现有方法将KPI数据当作非序列数据(non-sequentialdata)进行处理,导致检测准确率不理想;2.需要人工设置异常检测的阈值,这与人工异常检测方法在本质上存在同样的问题:阈值设置过高则漏报率高,阈值设置过低则误报率高。
技术实现思路
本专利技术要解决的技术问题是提供一种基于序列化自编码器的无监督KPI异常检测方法。首先,该方法为KPI提供一种序列化的异常检测方法,通过对现有针对时间序列异常检测模型进行改进,将KPI作为序列数据进行训练和检测,可以实现较高的准确性和鲁棒性;其次,该方法在保证准确性的前提下,支持运维人员设置有效检测时间段,使运维人员可以更加灵活地按需设置有效检测时段,一定程度上减少系统告警数量,进而减缓告警风暴的发生;最后,该方法在数据预处理阶段利用线性插值(LinearInterpolation)方法对缺失点进行自动填充,在检测阶段之前利用极值理论(ExtremeValueTheory,EVT)实现自动阈值选择功能,避免人工设置阈值带来的误报率/漏报率权衡的问题。为解本文档来自技高网
...

【技术保护点】
1.一种基于序列化自编码器的无监督KPI异常检测方法,其特征在于包括以下步骤:/n第一步,构建基于序列化自编码器的无监督KPI异常检测系统,简称异常检测系统;异常检测系统由历史KPI序列数据库、在线KPI序列数据库、输入模块、数据预处理模块、离线训练模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块、输出模块和显示模块组成;/n历史KPI序列数据库与输入模块相连,该数据库存储历史KPI序列,用于训练模型;历史KPI序列的每一条由三元组(Time,Value,Label)表示,其中:Time=(t

【技术特征摘要】
1.一种基于序列化自编码器的无监督KPI异常检测方法,其特征在于包括以下步骤:
第一步,构建基于序列化自编码器的无监督KPI异常检测系统,简称异常检测系统;异常检测系统由历史KPI序列数据库、在线KPI序列数据库、输入模块、数据预处理模块、离线训练模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块、输出模块和显示模块组成;
历史KPI序列数据库与输入模块相连,该数据库存储历史KPI序列,用于训练模型;历史KPI序列的每一条由三元组(Time,Value,Label)表示,其中:Time=(t1,...,ti,...,tT)表示时间向量,按时间升序排列;Value=V=(v1,...,vi,...,vT)表示KPI值向量,vi表示第i个时刻历史KPI序列的值,若vi=NaN,即空值,则表示该点为缺失点,T为历史KPI序列长度;Label=(l1,...,li...,lT)表示标签向量;第i条记录(ti,vi,li)表示在ti时刻的KPI值为vi,对应的标签为li,li取值为0或者1,0表示正常,1表示异常;1≤i≤T;
在线KPI序列数据库与输入模块相连,该数据库用于存储在线KPI数据,由二元组(Time,Value)表示,其中Time向量和Value向量与历史KPI序列的含义相同;
输入模块与历史KPI序列数据库、在线KPI序列数据库和数据预处理模块相连,训练阶段输入模块从历史KPI序列数据库读取历史KPI序列,从中提取历史KPI值向量,将历史KPI值向量发送给数据预处理模块;检测阶段输入模块从在线KPI序列数据库读取在线KPI序列,从中提取在线KPI值向量,将在线KPI值向量发送给数据预处理模块;
数据预处理模块与输入模块、离线训练模块和在线检测模块相连,数据预处理模块从输入模块历史KPI值向量和在线KPI值向量,采用线性插值方法对KPI值向量中的缺失点进行填充,并对填充后的KPI值向量进行标准化处理,将标准化后的历史KPI值向量发送给离线训练模块,将标准化后的在线KPI值向量发送给在线检测模块;数据预处理模块包含缺失点线性插值填充模块和KPI值向量标准化模块;
缺失点线性插值填充模块从输入模块接收历史KPI值向量和在线KPI值向量,处理KPI值向量中的缺失点,采用线性插值方法对KPI值向量中的缺失点进行填充,形成完整的KPI值向量,即填充后的KPI值向量,将填充后的KPI值向量发送给KPI值向量标准化模块;
KPI值向量标准化模块从缺失点线性插值填充模块接收填充后的KPI值向量,对填充后的KPI值向量进行标准化计算,获得标准化后的历史KPI值向量和标准化后的在线KPI值向量,将标准化后的历史KPI值向量发送给离线训练模块,将标准化后的在线KPI值向量发送给在线检测模块;
离线训练模块即基于序列化自编码器的KPI异常检测模型训练模块与数据预处理模块、自动阈值选择模块和在线检测模块相连;离线训练模块从数据预处理模块接收标准化后的历史KPI值向量,将标准化后的历史KPI值向量作为输入对异常检测模型进行训练,得到异常分值和训练好的模型,将异常分值发送到自动阈值选择模块,同时将训练好的模型发送给在线检测模块;
自动阈值选择模块与离线训练模块和在线检测模块相连,采用极值理论进行计算并得到阈值,将阈值发送给在线检测模块;
有效检测窗口设置模块与在线检测模块相连,有效检测窗口设置模块接收运维人员设置的有效检测窗口值,将有效检测窗口值发送给在线检测模块;
在线检测模块与数据预处理模块、离线训练模块、自动阈值选择模块、有效检测窗口设置模块和输出模块相连;在线检测模块从数据预处理模块接收标准化后的在线KPI值向量,从离线训练模块接收训练好的模型,从自动阈值选择模块接收阈值,从有效检测窗口设置模块接收有效窗口值,根据这些输入对在线KPI序列进行异常检测并得到检测结果,将检测结果发送到输出模块;
输出模块与在线检测模块相连,从在线检测模块接收检测结果,将检测结果发送到显示模块;
显示模块与输出模块相连,动态显示检测结果,若有异常结果则发送告警信息,由运维人员进行处理;
第二步:输入模块访问历史KPI序列数据库,从读取到的历史KPI序列提取KPI值向量V,将V发送到数据预处理模块;
第三步:数据预处理模块采用缺失点线性插值填充和标准化处理方法对KPI值向量V进行预处理,方法是:
3.1缺失点线性插值填充模块采用线性插值方法对V中的缺失点进行填充,将填充后的KPI值向量V′发送给KPI值向量标准化模块;V′=(v′1,...,v′i,...,v′T),v′i是填充后的vi;
3.2KPI值向量标准化模块对V′进行标准化操作,得到标准化后的KPI值向量Vnorm;
3.3KPI值向量标准化模块将Vnorm发送给离线训练模块;
第四步:离线训练模块对Vnorm进行切分;然后构建基于序列化自编码器的KPI异常检测模型,并对模型进行训练;方法为:
4.1离线训练模块从KPI值向量标准化模块接收Vnorm;
4.2离线训练模块对Vnorm进行切分,得到切分后的KPI值向量Vpart:




为第p个切分向量,1≤p≤P,P为切分数,为正整数,表示中的第r个值,表示中的最后一个值,R为Vnorm切分后的中的值的个数;
4.3离线训练模块采用基于随机跨步连接的RNN方法构建由N个不同结构的序列化自编码器组成的无监督KPI异常检测模型;再对序列化自编码器组成的无监督KPI异常检测模型进行离线训练,其中N个序列化自编码器均接收Vpart作为输入,N为正整数;具体方法是:
4.3.1离线训练模块构建基于序列化自编码器的无监督KPI异常检测模型,得到基于序列化自编码器的KPI异常检测模型;
4.3.2对基于序列化自编码器的KPI异常检测模型进行离线训练,得到异常分值向量Score,和训练后的基于序列化自编码器的无监督KPI异常检测模型,简称异常检测模型;为最终异常分值:


表示取中的中位数;为N个序列化自编码器中第b个自编码器对第p个切分向量的重构误差;0≤b≤N-1;
4.4离线训练模块将Score发送给自动阈值选择模块,将异常检测模型发送给在线检测模块;
第五步:自动阈值选择模块根据Score计算阈值,方法是:
5.1自动阈值选择模块从离线训练模块接收Score;
5.2自动阈值选择模块采用EVT方法分析Score分布,得到阈值Threshold;
5.3自动阈值选择模块将阈值Threshold发送给在线检测模块;
第六步:有效检测窗口设置模块接收运维人员设置的模块检测有效窗口值w,w为正整数且1≤w≤10,将w发送给在线检测模块;
第七步:输入模块、数据预处理模块、自动阈值选择模块、有效检测窗口设置模块、在线检测模块相互配合,对在线KPI序列进行检测:
7.1输入模块读取在线KPI序列数据库,提取在线KPI值向量Vonline,用A表示Vonline长度,将Vonline发送到数据预处理模块;
7.2数据预处理模块采用第三步所述的缺失点线性插值填充和标准化处理方法对Vonline进行预处理,得到标准化后的在线KPI值向量Vonline_norm,记
7.3在线检测模块利用异常检测模型,利用第五步得到的阈值Threshold、第六步设置的有效窗口值w,对Vonline_norm进行检测,方法如下:
7.3.1在线检测模块将Vonline_norm输入至异常检测模型,得到N个重构的KPI值向量,第x个重构KPI值向量记为为中第a个值;
7.3.2在线检查模块分别计算N个序列化自编码器的重构误差,方法是:
7.3.2.1令x=1;
7.3.2.2计算并保存第x个自编码器的KPI值向量的重构误差向量方法是:



7.3.2.3令x=x+1,如果x≤N,转7.3.1.2,否则计算结束,输出N个自编码器的重构误差向量Errorrestore:



7.3.3根据Errorrestore计算异常检测模型的异常分值,方法是:
7.3.3.1令a=1;
7.3.3.2读取并保存N个重构误差,方法是:
7.3.3.2.1令u=1;
7.3.3.2.2从Errorrestore读取并保存;
7.3.3.2.3令u=u+1,如果u≤N,转7.3.3.2.2,否则输出转7.3.3.2.4;
7.3.3.2.4取的中位数作为第a个KPI值的异常分值,并保存,方法是:



median()为numpy的中位数计算函数;
7.3.3.3令a=a+1,如果a≤A,转7.3.2.2;否则输出异常检测模型的异常分值Scoreonline:



转7.3.4;
7.3.4将阈值Threshold与Scoreonline进行比较,方法是:
7.3.4.1令变量a=1;
7.3.4.2判断第a个KPI值是否异常,方法是:
如果令检测结果ya=0,表示正常,否则令ya=1,表示异常;保存ya,转7.3.4.3;
7.3.4.3令a=a+1,如果a≤A,转7.3.3.2;否则比较完毕,输出检测结果向量Y,Y=(y1,…,ya,…,yA);
7.3.5根据窗口值w,向在线检测模块输入检测结果向量Y,在线检测模块计算窗口内的异常值向量其中方法为:
7.3.5.1令d=1;
7.3.5.2计算表示在窗口范围内对向量值yd、yd+1、...、yd+w-1进行“或”计算,如果表示异常窗口,如果表示正常窗口;
7.3.5.3若d≤m,令d=d+1,...

【专利技术属性】
技术研发人员:苏金树赵娜韩彪蔡阳陈曙晖陶静赵宝康赵锋魏子令
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1