一种云计算环境下故障检测方法与流程

文档序号:17984915发布日期:2019-06-22 00:20阅读:230来源:国知局
一种云计算环境下故障检测方法与流程
本发明涉及一种云计算环境下故障检测方法,属于云故障检测领域。
背景技术
:近年来,云计算的应用技术越来越广泛,然而大量的恶意攻击和其自身的复杂性与大规模性使得系统及其上的各种软硬件经常发生故障,引起部分甚至所有服务的失效。云计算故障检测技术已经成为该领域的研究热点。云计算环境下的故障检测主要研究如何对云计算环境中出现的故障进行检测、分离和识别,即判断故障是否发生及故障发生的种类。饶翔等提出一种基于故障注入测试的故障特征提取方法,首先过滤噪声日志;然后构造故障识别器识别不同故障的早期特征;最后为每类故障构造限状态追踪器追踪该故障的后期传播状态,从而在故障被识别出来后持续跟踪故障传播状态。目前,针对云计算故障数据检测的方法主要通过采集数据建立故障训练数据训练模型,然后对待检测云计算数据进行检测,并没有考虑到如何及时检测未知故障,且故障类型库的更新不够及时,将影响新故障的有效识别。技术实现要素:本发明提供了一种云计算环境下故障检测方法,有助于判断云计算环境下发生的已知、未知故障及类型,同时还可以用于故障数据的更新。本发明的技术方案是:一种云计算环境下故障检测方法,所述方法的具体步骤如下:所述方法的具体步骤如下:step1、监测数据特征提取,通过计算云计算环境监测数据集中的任意两个特征之间的相关性系数值选取特征以得到故障特征集;step2、根据故障特征集中对应的特征序号,提取故障数据的特征数据形成训练数据集,对训练数据集中的特征进行平均值、方差计算,并构建故障模型参数二维数组,将其放入故障库中;step3、已知故障检测:按照故障特征集提取监测异常数据,判断监测异常数据的故障类型是否与当前故障库已知故障相似,对无法判断的故障类型,执行step4;step4、未知故障检测,对与已知故障无法匹配的监测异常数据进行未知故障检测。所述step1具体如下:step1.1、初始化相关性系数矩阵relationmatrix为空,故障特征集faultfeatureset置空,判断栈estimatestack值为空,i=1,j=1,输入包含m个特征的云计算监测数据集monitordata,其中monitordata={d1,d2,d3,…,dn},dτ=(x1,x2,…xm),τ=1,2,…n,dτ表示第τ条数据,xm表示第m个特征对应的值,执行step1.2;step1.2、根据公式(1)计算monitordata中前一个特征与后续其余特征相关性系数,并将结果存入到矩阵relationmatrix中,执行step1.3;其中,rij表示第i个特征与第j个特征的的相关性系数,xik表示monitordata中第k条数据的第i个特征对应的值,yjk表示monitordata中第k条数据的第j个特征对应的值,n为monitordata中的数据个数;step1.3、判断i≤m:如果是,则执行step1.4;否则,执行step1.11;step1.4、判断relationmatrix的第i列是否为null:如果是,执行step1.5;否则,执行step1.6;step1.5、i++,执行step1.3;step1.6、将i存储到faultfeatureset中,并查找relationmatrix中第i列中值在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,执行step1.7;step1.7、判断estimatestack是否等于null:如果是,则执行step1.5;否则,执行step1.8;step1.8、取出estimatestack栈顶元素并赋值给j,执行step1.9;step1.9、查找relationmatrix中第j列中在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,并去掉重复元素,执行step1.10;step1.10、将relationmatrix中第j列中所有元素置空,执行step1.7;step1.11、输出故障特征集faultfeatureset,执行step2。所述step2具体如下:step2.1、初始化故障模型参数二维数组faultmodelarray,平均值参数mean=0,方差值参数variance=0,随机参数ran_k=1,len=0,输入故障数据faultdata,故障数据faultdata为采集包含m个特征的云计算监测数据集monitordata所代表的对象产生的历史故障数据,执行step2.2;step2.2、将与faultfeatureset中对应的特征序号对故障数据faultdata进行特征数据提取形成训练数据集traindata,执行step2.3;step2.3、len=traindata中包含的特征个数,执行step2.4;step2.4、判断ran_k≤len:如果是,执行step2.5;否则,执行step2.9;step2.5、获取traindata中第ran_k个特征的数据,执行step2.6;step2.6、计算第ran_k个特征的平均值与方差并赋值给mean,variance,执行step2.7;step2.7、将mean,variance存入faultmodelarray的第ran_k行,执行step2.8;step2.8、ran_k++,执行step2.4;step2.9、为faultmodelarray添加标签,执行step2.10;其中标签包括故障类型、故障描述;step2.10、将带有标签的faultmodelarray放入到故障库中,执行step3。所述step3具体如下:step3.1、初始化故障概率initp=1,概率数组probabilityarray,临时变量ti=1,tj=0,next=1,p=0,数组temp,阈值t=0.0000008,输入监测异常数据monitoranomalydata,monitoranomalydata是对监测数据经过判断之后确定为异常的数据,monitoranomalydata={t1,t2,t3,…,tn},tτ=(z1,z2,…zm),τ=1,2,..,n,tτ表示第τ条数据,zm表示第m个特征对应的值,执行step3.2;step3.2、根据faultfeatureset中包含的特征序号提取monitoranomalydata中对应的特征,形成待检测故障数据集u,执行step3.3;step3.3、将故障库中的故障种类数量赋值给tj,执行step3.4;step3.4、提取待检测故障数据集u中的特征数据赋值给数组temp,执行step3.5;step3.5、判断ti≤tj:如果是,则执行step3.6;否则,执行step3.12;step3.6、判断next≤temp的长度:如果是,则执行step3.7;否则,执行step3.10;step3.7、根据公式(2)将temp[next]与故障库中第ti类对应的特征参数进行计算,获得ati_next故障类别下第next个值取值为bnext的条件概率p(bnext|ati_next),并将计算结果赋值给p,执行step3.8;其中,bnext为temp[next]具体数据值,temp[next]为数组temp的第next个值,ati_next表示故障库中第ti类故障,为故障库中第ti类对应的具体特征参数,即step2中的平均值mean,方差variance;step3.8、initp=p*initp,执行step3.9;step3.9、next++,执行step3.6;step3.10、将initp赋值给probabilityarray中第ti个变量,令initp=1,执行step3.11;step3.11、ti++,执行step3.5;step3.12、选择probabilityarray中最大值赋值给initp,并将probabilityarray最大值对应的索引号赋值给ti,执行step3.13;step3.13、判断initp<t:如果是,则执行step3.14;否则,执行step3.15;step3.14、待检测故障数据u赋值给未知故障待检测数据un,执行step4;step3.15、获取此时ti对应故障库中的故障类型,执行step3.16;step3.16、输出此时的故障类型,结束。所述step4具体如下:step4.1、初始化二维参数数组parameterarray,阈值数组thresholdarray,临时变量数组temp,临时变量tm=0,tn=1,tp=0,输入未知故障待检测数据un,获取系统运行时数据systemrealtimedata,执行step4.2;其中systemrealtimedata为采集的多个时间采样点下处于同一时刻物理节点与该物理节点上虚拟节点的系统运行数据;step4.2、提取systemrealtimedata中cpu、内存、io、网络使用情况数据中的一种或者多种特征形成q个特征构成的数据集dataset,执行step4.3;step4.3、根据公式(3)依次计算dataset中每个特征的多元线性回归系数b,并将计算结果按行依次存储到parameterarray中,同时计算systemrealtimedata中对应dataset的q个特征在不同时间采样点下物理节点上的平均值并存储到thresholdarray中,执行step4.4;b=(β0,β1,…,βv)t=(wtw)-1wtz公式(3)其中,βv代表第v+1个系数值,w=[1wq1…wqv],wqv代表第v个虚拟节点上第q个特征的使用情况;z=[z],z代表物理节点上第q个特征的使用情况;step4.4、将thresholdarray数组行数赋值给tm,执行step4.5;step4.5、判断tn≤tm:如果是,则执行step4.6;否则,执行step4.8;step4.6、thresholdarray[tn]=0.25*thresholdarray[tn],0.25为阈值,执行step4.7;step4.7、tn++,执行step4.5;step4.8、抽取未知故障待检测数据un与同时刻下虚拟节点运行数据中对应dataset的q个特征数据存入到temp中,以特征数作为行数,物理节点+虚拟节点个数作为列数,执行step4.9;step4.9、tn=1,将temp数组行数赋值给tm,执行step4.10;step4.10、判断tn≤tm:如果是,执行step4.11;否则,执行step4.14;step4.11、将parameterarray与temp的第tn行数据根据公式(4)进行计算,并将计算结果赋值给tp,执行step4.12;tp=ue公式(4)其中,е=(eq0…eqv)t,eqv表示parameterarray中第q行第v+1列所代表的数据值,u=(1,uq1,…,uqv),uqv为temp中第q行第v+1列所代表的数据值;step4.12、根据公式(5)计算资源使用差值,并将结果赋值给temp[tn][1],执行step4.13;temp[tn][1]=|temp[tn][1]-tp|公式(5)step4.13、tn++,执行step4.10;step4.14、将tn置1,执行step4.15;step4.15、判断tn≤tm:如果是,则执行step4.16;否则,结束;step4.16、判断thresholdarray[tn]<temp[tn][1]:如果是,执行step4.17;否则,执行step4.18;step4.17、输出tn对应的资源名称,根据未知故障待检测数据un所确定的资源名称将其加入到未分类故障数据集unknownfaultset,执行step2或者结束;step4.18、tn++,执行step4.15。针对获取的未分类故障数据集unknownfaultset还可以进行如下步骤,参与故障数据faultdata的更新:step5.1、初始化临时变量,ri=1,rj=1,rl=1,dist置为0,访问标识符isvisit=0,最大聚类半径ε=9.25,最小聚类密度minp=4,输入根据faultfeatureset对应特征提取后的包含rn条未分类故障数据的未分类故障数据集unknownfaultset,执行step5.2;step5.2、选取特征提取后的未分类故障数据集unknownfaultset第ri条数据,执行step5.3;step5.3、判断ri≤rn:如若是,执行step5.4;否则,结束;step5.4、判断第ri条数据的isvisit是否=1:如果是,执行step5.5;否则,执行step5.6;step5.5、ri++,执行step5.3;step5.6、设置第ri条数据的isvisit=1,执行step5.7;step5.7、新建类集c,并将第ri条数据放入到c中,执行step5.8;step5.8、判断rj≤rn:如果是,执行step5.9;否则,执行step5.14;step5.9、判断第rj条数据的isvisit是否=1:如果是,则执行step5.10;否则,执行step5.11;step5.10、rj++,执行step5.8;step5.11、根据公式(6)计算第ri条数据与第rj条数据的欧式距离dist,执行step5.12;其中,ari,ψ,arj,ψ表示第ri条数据与第rj条数据的第ψ个特征取值,b表示unknownfaultset中特征个数;step5.12、判断dist<ε:如果是,执行step5.13;否则,执行step5.10;step5.13、将第rj条数据加入到c中,执行step5.10;step5.14、判断c中包含的数据条数>minp:如果是,执行step5.15;否则,执行step5.3;step5.15、判断rl≤c中包含的数据条数:如果是,则执行step5.16;否则,执行step5.20;step5.16、选择c中第rl条数据,执行step5.17;step5.17、判断第rl条数据的isvisit是否=1:如果是,执行step5.18;否则,执行step5.19;step5.18、rl++,执行step5.15;step5.19、将第rl条数据的isvisit设置为1,执行step5.18;step5.20、将c保存到故障数据faultdata中,执行step5.5。本发明的有益效果是:(1):通过该过程实现了对已知故障与未知故障的检测,有助于判断云计算环境发生了何种故障,为故障恢复做准备;(2):通过基于密度聚类算法,能够聚合出新的故障数据集,为故障模型训练提供了新的故障数据保证了故障模型的不断更新,实现了云计算环境下故障检测的自适应。综上,本方法通过对故障模型的不断更新实现了故障检测的自适应性以及实现已知故障与未知故障的检测,为故障恢复做准备。附图说明图1是本发明的总体流程图;图2为步骤step1的具体流程;图3为步骤step2的具体流程;图4为步骤step3的具体流程;图5为步骤step4的具体流程;图6为步骤step5的具体流程。具体实施方式实施例1:如图1-6所示,一种云计算环境下故障检测方法,所述方法的具体步骤如下:step1、监测数据特征提取,通过计算云计算环境监测数据集中的任意两个特征之间的相关性系数值选取特征以得到故障特征集;step2、根据故障特征集中对应的特征序号,提取故障数据的特征数据形成训练数据集,对训练数据集中的特征进行平均值、方差计算,并构建故障模型参数二维数组,将其放入故障库中;step3、已知故障检测:按照故障特征集提取监测异常数据,判断监测异常数据的故障类型是否与当前故障库已知故障相似,对无法判断的故障类型,执行step4;step4、未知故障检测,对与已知故障无法匹配的监测异常数据进行未知故障检测。进一步地,可以设置所述方法具体步骤如下:step1、监测数据特征提取;step1.1、初始化相关性系数矩阵relationmatrix为空,故障特征集faultfeatureset置空,判断栈estimatestack值为空,i=1,j=1,输入包含m=12个特征的云计算监测数据集monitordata,具体如表2监测数据集monitordata所示,表1数据特征表主要描述monitordata中数据特征的含义与对应的特征序号,其中f0、f1、f2为cpu的监测数据特征,f3~f6为内存的监测数据特征,f7、f8、f9为io的监测数据特征,f10、f11为网络的监测数据特征,执行step1.2;表1数据特征表特征序号数据特征含义f0cpu_usage用户级别执行时cpu利用率f1cpu_system系统执行时cpu利用率f2cpu_idle系统空闲时间cpu时间百分比f3mem_usage内存使用百分比f4mem_kbfree内存可用量f5mem_kbused内存已用量f6mem_cache内核高速缓存(cache)数据使用的内存数量f7io_rtps每秒发送给物理物理磁盘的读取请求总数f8io_wtps每秒接受给物理磁盘的读取请求f9io_tps每秒传输给物理磁盘的请求总量f10net_rxpck每秒钟接受到的包数f11net_txpck每秒钟传输的包数表2监测数据集monitordatastep1.2、根据公式(1)计算monitordata中前一个特征与后续其余特征相关性系数,并将计算结果存入到矩阵relationmatrix中,执行step1.3;经过计算得到的relationmatrix如下所示:step1.3、判断i≤m:1<12,则执行step1.4;step1.4、判断relationmatrix第i=1列==null:非空,执行step1.6;step1.6、将i=1存储到faultfeatureset中,并查找relationmatrix中第i=1列中值在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,执行step1.7;此时的estimatestack中数据如下:{2,3};此时faultfeatureset中的数据为:[1];step1.7、判断estimatestack==null:非空,执行step1.8;step1.8、取出estimatestack栈顶元素并赋值给j,此时j=2执行step1.9;此时estimatestack中数据如下:{3}step1.9、查找relationmatrix中第j=2列中在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,并去掉重复元素,执行step1.10;此时estimatestack中数据如下:{3}step1.10、将relationmatrix中第j=2列中所有元素置空,执行step1.7;此时relationmatrix如下:step1.7、判断estimatestack是否为空:非空,执行step1.8;step1.8、取出estimatestack栈顶元素并赋值给j,此时j=3,执行step1.9;此时estimatestack为空;step1.9、查找relationmatrix中第j=3列中在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,并去掉重复元素,执行step1.10;此时estimatestack为空;step1.10、将relationmatrix中第j=3列中所有元素置空,执行step1.7;此时relationmatrix如下:step1.7、判断estimatestack==null:为空,则执行step1.5;step1.5、i++,此时i=2,执行,step1.3;step1.3、判断i≤m:2<12,则执行step1.4;step1.4、判断relationmatrix第i=2列==null:为空,执行step1.5;step1.5、i++,此时i=3执行,step1.3;step1.3、判断i≤m:3<12,则执行step1.4;step1.4、判断relationmatrix第i=3列==null:为空,执行step1.5;step1.5、i++,此时i=4执行,step1.3;step1.3、判断i≤m:4<12,则执行step1.4;step1.4、判断relationmatrix第i=4列==null:非空,执行step1.6;step1.6、将i=4存储到faultfeatureset中,并查找relationmatrix中第i=4列中值在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,执行step1.7;此时faultfeatureset中数据为[1,4];estimatestack中数据为:{5,6,7};step1.7、判断estimatestack==null:非空,执行step1.8;step1.8、取出estimatestack栈顶元素并赋值给j,此时j=5,执行step1.9;此时estimatestack中数据为:{6,7}step1.9、查找relationmatrix中第j=5列中值在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,并去掉重复元素,执行step1.10;此时estimatestack中数据为:{6,7};step1.10、将relationmatrix中第j=5列中所有元素置空,执行step1.7;此时relationmatrix如下:step1.7、判断estimatestack==null:非空,执行step1.8;step1.8、取出estimatestack栈顶元素并赋值给j,此时j=6,执行step1.9;此时estimatestack中数据为:{7}step1.9、查找relationmatrix中第j=6列中值在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,并去掉重复元素,执行step1.10;此时estimatestack中数据为:{7}step1.10、将relationmatrix中第j=6列中所有元素置空,执行step1.7;此时relationmatrix如下:step1.7、判断estimatestack==null:非空,执行step1.8;step1.8、取出estimatestack栈顶元素并赋值给j,此时j=7,执行step1.9;此时estimatestack中数据为空;step1.9、查找relationmatrix中第j=7列中值在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,并去掉重复元素,执行step1.10;此时estimatestack中数据为空;step1.10、将relationmatrix中第j=7列中所有元素置空,执行step1.7;此时relationmatrix如下:step1.7、判断estimatestack==null:为空,则执行step1.5;step1.5、i++,此时i=5,执行,step1.3;step1.3、判断i≤m:5<12,则执行step1.4;step1.4、判断relationmatrix第i=5列==null:为空,执行step1.5;step1.5、i++,此时i=6,执行,step1.3;step1.3、判断i≤m:6<12,则执行step1.4;step1.4、判断relationmatrix第i=6列==null:为空,执行step1.5;step1.5、i++,此时i=7,执行,step1.3;step1.3、判断i≤m:7<12,则执行step1.4;step1.4、判断relationmatrix第i=7列==null:为空,执行step1.5;step1.5、i++,此时i=8,执行,step1.3;step1.3、判断i≤m:8<12,则执行step1.4;step1.4、判断relationmatrix第i=8列==null:非空,执行step1.6;step1.6、将i=8存储到faultfeatureset中,并查找relationmatrix中第i=7列中值在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,执行step1.7;此时faultfeatureset中的数字为[1,4,8];此时estimatestack中数据为:{10};step1.7、判断estimatestack==null:非空,执行step1.8;step1.8、取出estimatestack栈顶元素并赋值给j,此时j=10,执行step1.9;此时estimatestack中数据为空;step1.9、查找relationmatrix中第j=10列中值在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,并去掉重复元素,执行step1.10;此时estimatestack中数据为空;step1.10、将relationmatrix中第j=10列中所有元素置空,执行step1.7;此时relationmatrix如下:step1.7、判断estimatestack==null:为空,则执行step1.5;step1.5、i++,此时i=9,执行,step1.3;step1.3、判断i≤m:9<12,则执行step1.4;step1.4、判断relationmatrix第i=9列==null:非空,执行step1.6;step1.6、将i=9存储到faultfeatureset中,并查找relationmatrix的第i=9列中在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,执行step1.7;此时faultfeatureset中的数字为[1,4,8,9];此时estimatestack中数据为空;step1.7、判断estimatestack==null:为空,则执行step1.5;step1.5、i++,此时i=10执行,step1.3;step1.3、判断i≤m:10<12,则执行step1.4;step1.4、判断relationmatrix第i=10列==null:为空,执行step1.5;step1.5、i++,此时i=11,执行,step1.3;step1.3、判断i≤m:11<12,则执行step1.4;step1.4、判断relationmatrix第i=11列==null:非空,执行step1.6;step1.6、将i=11存储到faultfeatureset中,并查找relationmatrix中第i=10列中值在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,执行step1.7;此时faultfeatureset中的数字为[1,4,8,9,11];此时estimatestack中数据为空;step1.7、判断estimatestack==null:为空,则执行step1.5;step1.5、i++,此时i=12,执行,step1.3;step1.3、判断i≤m:12=12,则执行step1.4;step1.4、判断relationmatrix第i=12列==null:非空,执行step1.6;step1.6、将i=12存储到faultfeatureset中,并查找relationmatrix中第i=12列中值在[-1,-0.8]∪[0.8,1]范围内的所有数值,并将这些数值所对应的行号存放到estimatestack中,执行step1.7;此时faultfeatureset中的数字为[1,4,8,9,11,12];此时estimatestack中数据为空;step1.7、判断estimatestack==null:为空,则执行step1.5;step1.5、i++,此时i=13,执行,step1.3;step1.3、判断i≤m:13>12,执行step1.11;step1.11、输出故障特征集faultfeatureset。采用步骤step1构建故障特征集即可进行如下step2-step4的循环过程,通过step2-step4的循环过程获得的未分类故障数据集unknownfaultset,配合step5的执行过程构建步骤step2中的故障数据faultdata后可以用于更新step2的故障库。step2、故障模型训练:step2.1、初始化故障模型参数二维数组faultmodelarray,平均值参数mean=0,方差值参数variance=0,随机参数ran_k=1,len=0,输入故障数据faultdata,其中故障数据faultdata如表3所示,执行step2.2;表3故障数据faultdatastep2.2、将与faultfeatureset中对应的特征序号[1,4,8,9,11,12]对故障数据faultdata进行特征数据提取(即特征序号1对应f0,其它同理)形成训练数据集traindata,其中训练数据集traindata如表4所示,执行step2.3;表4训练数据集traindatastep2.3、len=traindata中包含的特征个数,此时len=6,执行step2.4;step2.4、判断ran_k≤len:1<6,执行step2.5;step2.5、获取traindata中第ran_k=1个特征的数据,执行step2.6;step2.6、计算第ran_k=1个特征的平均值与方差并赋给mean,variance,执行step2.7;此时mean=83.42,variance=17.4959;step2.7、将mean=83.42,variance=17.4959存入到faultmodelarray的第ran_k=1行,执行step2.8;此时faultmodelarray为:[83.42,17.4959]step2.8、ran_k++,此时ran_k=2,执行step2.4;step2.4、判断ran_k≤len:2<6,执行step2.5;step2.5、获取traindata中第ran_k=2个特征的数据,执行step2.6;step2.6、计算第ran_k=2个特征的平均值与方差并赋值给mean,variance,执行step2.7;此时mean=59.40,variance=0.4099;step2.7、将mean=59.40,variance=0.4099存入到faultmodelarray的第ran_k=2行,执行step2.8;此时faultmodelarray为:step2.8、ran_k++,此时ran_k=3,执行step2.4;step2.4、判断ran_k≤len:3<6,执行step2.5;step2.5、获取traindata中第ran_k=3个特征的数据,执行step2.6;step2.6、计算第ran_k=3个特征的平均值与方差并赋值给mean,variance,执行step2.7;此时mean=0.07,variance=0.013;step2.7、将mean=0.07,variance=0.013存入到faultmodelarray的第ran_k=3行,执行step2.8;此时faultmodelarray为:step2.8、ran_k++,此时ran_k=4,执行step2.4;step2.4、判断ran_k≤len:4<6,执行step2.5;step2.5、获取traindata中第ran_k=4个特征的数据,执行step2.6;step2.6、计算第ran_k=4个特征的平均值与方差并赋值给mean,variance,执行step2.7;此时mean=7.86,variance=50.6456;step2.7、将mean=7.86,variance=8.4409存入到faultmodelarray的第ran_k=4行,执行step2.8;此时faultmodelarray为:step2.8、ran_k++,此时ran_k=5,执行step2.4;step2.4、判断ran_k≤len:5<6,执行step2.5;step2.5、获取traindata中第ran_k=5个特征的数据,执行step2.6;step2.6、计算第ran_k=5个特征的平均值与方差并赋值给mean,variance,执行step2.7;此时mean=46.29,variance=2.4525;step2.7、将mean=46.29,variance=2.4525存入到faultmodelarray的第ran_k=5行,执行step2.8;此时faultmodelarray为:step2.8、ran_k++,此时ran_k=6,执行step2.4;step2.4、判断ran_k≤len:6=6,执行step2.5;step2.5、获取traindata中第ran_k=6个特征的数据,执行step2.6;step2.6、计算第ran_k=6个特征的平均值与方差并赋值给mean,variance,执行step2.7;此时mean=35.21,variance=15.3149;step2.7、将mean=35.21,variance=15.3149存入到faultmodelarray的第ran_k=6行,执行step2.8;此时faultmodelarray为:step2.8、ran_k++,此时ran_k=7,执行step2.4;step2.4、判断ran_k≤len:7>6,执行step2.9;step2.9、为faultmodelarray添加故障类型、故障描述等标签,执行step2.10;step2.10、并将带有标签的faultmodelarray放入到故障库中;step3、已知故障检测:step3.1、初始化故障概率initp=1,概率数组probabilityarray,临时变量ti=1,tj=0,next=1,p=0,数组temp,阈值t=0.0000008,输入监测异常数据monitoranomalydata(监测异常数据monitoranomalydata为采集包含m个特征的云计算监测数据集monitordata所代表的对象产生的未知故障的异常数据),具体数据如表5所示,执行step3.2;表5监测异常数据monitoranomalydatastep3.2、根据faultfeatureset中包含的特征序号提取monitoranomalydata中对应的特征,形成待检测故障数据集u,执行step3.3;待检测故障数据集u如下:step3.3、将故障库中的故障种类数量赋值给tj,此时tj=1执行step3.4;step3.4、提取u中的特征数据值赋值给数组temp,执行step3.5;此时temp如下:[88.90,59.81,0.06,5.12,50.12,31.11]step3.5、判断ti≤tj:1=1,则执行step3.6;step3.6、判断next≤temp的长度:1<6,则执行step3.7;step3.7、根据公式(2)将temp[next=1]与故障库中第ti=1类对应的特征参数进行计算,并将计算结果赋值给p,执行step3.8;step3.8、initp=p*initp,initp=0.0404023,执行step3.9;step3.9、next++,next=2执行step3.6;step3.6、判断next≤temp的长度:2<6,则执行step3.7;step3.7、根据公式(2)将temp[next=2]与故障库中第ti=1类对应的特征参数进行计算,并将计算结果赋值给p,执行step3.8;step3.8、initp=p*initp,initp=0.0205084,执行step3.9;step3.9、next++,next=3执行step3.6;step3.6、判断next≤temp的长度:3<6,则执行step3.7;step3.7、根据公式(2)将temp[next=3]与故障库中第ti=1类对应的特征参数进行计算,并将计算结果赋值给p,执行step3.8;step3.8、initp=p*initp,initp=0.7148344,执行step3.9;step3.9、next++,next=4执行step3.6;step3.6、判断next≤temp的长度:4<6,则执行step3.7;step3.7、根据公式(2)将temp[next=4]与故障库中第ti=1类对应的特征参数进行计算,并将计算结果赋值给p,执行step3.8;step3.8、initp=p*initp,initp=0.0062920,执行step3.9;step3.9、next++,next=5执行step3.6;step3.6、判断next≤temp的长度:5<6,则执行step3.7;step3.7、根据公式(2)将temp[next=5]与故障库中第ti=1类对应的特征参数进行计算,并将计算结果赋值给p,执行step3.8;step3.8、initp=p*initp,initp=0.0000806,执行step3.9;step3.9、next++,next=6执行step3.6;step3.6、判断next≤temp的长度:6=6,则执行step3.7;step3.7、根据公式(2)将temp[next=6]与故障库中第ti=1类对应的特征参数进行计算,并将计算结果赋值给p,执行step3.8;step3.8、initp=p*initp,initp=0.0000047,执行step3.9;step3.9、next++,next=7执行step3.6;step3.6、判断next≤temp的长度:7>6,则执行step3.10;step3.10、将initp赋值给probabilityarray中第ti=1个变量,令initp=1,执行step3.11;此时probabilityarray=[0.0000047];step3.11、ti++,ti=2,执行step3.5;step3.5、判断ti≤tj:2>1,执行step3.12;step3.12、选择probabilityarray中最大值赋值给initp,initp=0.0000047,并将probabilityarray最大值对应的索引号赋值给ti,ti=1,执行step3.13;step3.13、判断initp<t:0.0000047>0.0000008执行step3.15;step3.15、获取此时ti=1对应故障库中的故障类型,执行step3.16;step3.16、输出此时的故障类型;假设经过步骤step3获取的结果为未知故障待检测数据,则进行如下步骤:step4、未知故障检测:step4.1、初始化二维参数数组parameterarray,阈值数组thresholdarray,临时变量数组temp,临时变量tm=0,tn=1,tp=0,输入未知故障待检测数据un,获取系统运行时数据systemrealtimedata(系统运行时数据systemrealtimedata为采集包含m个特征的云计算监测数据集monitordata所代表的对象运行时产生的实时数据),表6为systemrealtimedata部分数据(该表中的数据为采集的某一时刻点的数据),表7为未知故障待检测数据un,执行step4.2;表6systemrealtimedata部分数据表6中序号1为物理节点,序号2、3、4为该物理节点上的三个虚拟节点,相同数据特征上的数据为同一时刻上数据。表7未知故障待检测数据un与同时刻下虚拟节点运行数据表7中序号1为未知故障待检测数据un,序号2、3、4为同时刻下虚拟节点运行数据,相同数据特征上的数据为同一时刻上数据。step4.2、提取systemrealtimedata中cpu(指f0)、内存(指f3)、io(指f9)、网络使用情况数据(指f10、f11)中的一种或者多种特征形成q=5个特征构成的数据集dataset,部分dataset如下所示,执行step4.3;step4.3、根据公式(3)依次计算dataset中每个特征的多元线性回归系数b,b=(β0,β1,…,βv)t=(wtw)-1wtz公式(3)并将计算结果按行依次存储到parameterarray中,同时计算systemrealtimedata中对应dataset的q=5个特征在不同时间节点下物理节点上的平均值并存储到thresholdarray中(如将表6中序号为1的情况下,对应dataset的f0特征值0.25与没有展现完整的其它时间采样点下序号为1的情况下,对应dataset的f0特征值进行累加求平均取值为0.261,其它同理),执行step4.4;经过计算,此时parameterarray中数据为:此时thresholdarray中数据为[0.261,59.88,12.11,17.45,9.38]step4.4、将thresholdarray数组行数赋值给tm,tm=5执行step4.5;step4.5、判断tn≤tm:1<5,则执行step4.6;step4.6、thresholdarray[tn]=0.25*thresholdarray[tn],此时thresholdarray[1]=0.25*0.261=0.065,执行step4.7;step4.7、tn++,tn=2执行step4.5;step4.5、判断tn≤tm:2<5,则执行step4.6;step4.6、thresholdarray[tn]=0.25*thresholdarray[tn],此时thresholdarray[2]=0.25*59.88=14.97,执行step4.7;step4.7、tn++,tn=3执行step4.5;step4.5、判断tn≤tm:3<5,则执行step4.6;step4.6、thresholdarray[tn]=0.25*thresholdarray[tn],此时thresholdarray[3]=0.25*12.11=3.028,执行step4.7;step4.7、tn++,tn=4执行step4.5;step4.5、判断tn≤tm:4<5,则执行step4.6;step4.6、thresholdarray[tn]=0.25*thresholdarray[tn],此时thresholdarray[4]=0.25*17.45=4.363,执行step4.7;step4.7、tn++,tn=5执行step4.5;step4.5、判断tn≤tm:5=5,则执行step4.6;step4.6、thresholdarray[tn]=0.25*thresholdarray[tn],此时thresholdarray[5]=0.25*9.38=2.345,执行step4.7;step4.7、tn++,tn=6执行step4.5;step4.5、判断tn≤tm:6>5,则执行step4.8;step4.8、抽取未知故障待检测数据un与同时刻下虚拟节点运行数据中对应dataset的q=5个特征数据存入到temp中,以特征数作为行数,物理节点+虚拟节点个数作为列数,执行step4.9;此时temp中数据为:step4.9、tn=1,将temp数组长度赋值给tm,tm=5执行,step4.10;step4.10、判断tn≤tm:1<5,执行step4.11;step4.11、将parameterarray与temp的第tn=1行数据根据公式(4)进行计算,并将计算结果赋值给tp,执行step4.12;tp=uе,此时tp=0.268;step4.12、根据公式(5)计算资源使用差值,并将结果赋值给temp[tn=1][1],执行step4.13;temp[tn][1]=|temp[tn][1]-tp|,此时temp[1][1]=|temp[1][1]-tp|=0.048;step4.13、tn++,tn=2执行step4.10;step4.10、判断tn≤tm:2<5,执行step4.11;;step4.11、将parameterarray与temp的第tn=2行数据根据公式(4)进行计算,并将计算结果赋值给tp,执行step4.12;tp=uе,此时tp=44.202;step4.12、根据公式(5)计算资源使用差值,并将结果赋值给temp[tn=2][1],执行step4.13;temp[tn][1]=|temp[tn][1]-tp|,此时temp[2][1]=|temp[2][1]-tp|=47.668;step4.13、tn++,tn=3执行step4.10;step4.10、判断tn≤tm:3<5,执行step4.11;step4.11、将parameterarray与temp的第tn=3行数据根据公式(4)进行计算,并将计算结果赋值给tp,执行step4.12;tp=uе,此时tp=9.27;step4.12、根据公式(5)计算资源使用差值,并将结果赋值给temp[tn=3][1],执行step4.13;temp[tn][1]=|temp[tn][1]-tp|,此时temp[3][1]=|temp[3][1]-tp|=0.01;step4.13、tn++,tn=4执行step4.10;step4.10、判断tn≤tm:4<5,执行step4.11;step4.11、将parameterarray与temp的第tn=4行数据根据公式(4)进行计算,并将计算结果赋值给tp,执行step4.12;tp=uе,此时tp=18.27;step4.12、根据公式(5)计算资源使用差值,并将结果赋值给temp[tn=4][1],执行step4.13;temp[tn][1]=|temp[tn][1]-tp|,此时temp[4][1]=|temp[4][1]-tp|=0.05;step4.13、tn++,tn=5执行step4.10;step4.10、判断tn≤tm:5=5,执行step4.11;step4.11、将parameterarray与temp的第tn=5行数据根据公式(4)进行计算,并将计算结果赋值给tp,执行step4.12;tp=uе,此时tp=10.34;step4.12、根据公式(5)计算资源使用差值,并将结果赋值给temp[tn=5][1],执行step4.13;temp[tn][1]=|temp[tn][1]-tp|,此时temp[5][1]=|temp[5][1]-tp|=0.23;step4.13、tn++,tn=6执行step4.10;step4.10、判断tn≤tm:6>5,执行step4.14;step4.14、将tn置1,执行step4.15;step4.15、判断tn≤tm:1<5,则执行step4.16;step4.16、判断thresholdarray[tn=1]<temp[tn=1][1]:0.065>0.048,执行step4.18;step4.18、tn++,tn=2,执行step4.15;step4.15、判断tn≤tm:2<5,则执行step4.16;step4.16、判断thresholdarray[tn=2]<temp[tn=2][1]:14.97<47.668,执行step4.17;step4.17、输出tn=2对应的资源名称(即第2行所代表的特征对应的资源名称),此时资源名称为内存资源,根据未知故障待检测数据un所确定的资源名称将其加入到未分类故障数据集unknownfaultset(该数据集未分类是指未对所属何种内存资源故障进行分类),结束;step5、故障库更新:step5.1、初始化临时变量,ri=1,rj=1,rl=1,dist置为0,访问标识符isvisit=0,最大聚类半径ε=9.25,最小聚类密度minp=4,输入根据faultfeatureset对应特征提取后的包含rn条未分类故障数据的未分类故障数据集unknownfaultset,此时rn=5,特征提取后的未分类故障数据unknownfaultset如表8所示,执行step5.2;表8特征提取后的未分类故障数据集unknownfaultset表8中的数据初始状态下isvisit均为0,表示未访问过,1表示已经访问过;step5.2、选取特征提取后的未分类故障数据集unknownfaultset第ri条数据,执行step5.3;step5.3、判断ri≤rn:1<5,执行step5.4;step5.4、判断第ri=1条数据的isvisit是否=1:0!=1,执行step5.6;step5.6、设置第ri=1条数据的isvisit=1,执行step5.7;step5.7、新建类集c,并将第ri=1条数据放入到c中,执行step5.8;step5.8、判断rj≤rn:1<5,执行step5.9;step5.9、判断第rj=1条数据的isvisit是否=1:1==1,则执行step5.10;step5.10、rj++,rj=2执行step5.8;step5.8、判断rj≤rn:2<5,执行step5.9;step5.9、判断第rj=2条数据的isvisit是否=1:0!=1,执行step5.11;step5.11、根据公式(6)计算第ri=1条数据与第rj=2条数据的距离dist,执行step5.12;step5.12、判断dist<ε:1.5688<9.25,执行step5.13;step5.13、将第rj=2条数据加入到c中,执行step5.10;step5.10、rj++,j=3执行step5.8;step5.8、判断rj≤rn:3<5,执行step5.9;step5.9、判断第rj=3条数据的isvisit是否=1:0!=1,执行step5.11;step5.11、根据公式(6)计算第ri=1条数据与第rj=3条数据的距离dist,执行step5.12;step5.12、判断dist<ε:0.9522<9.25,执行step5.13;step5.13、将第rj=3条数据加入到c中,执行step5.10;step5.10、rj++,rj=4执行step5.8;step5.8、判断rj≤rn:4<5,执行step5.9;step5.9、判断第rj=4条数据的isvisit是否=1:0!=1,执行step5.11;step5.11、根据公式(6)计算第ri=1条数据与第rj=4条数据的距离dist,执行step5.12;step5.12、判断dist<ε:0.3369<9.25,执行step5.13;step5.13、将第rj=4条数据加入到c中,执行step5.10;step5.10、rj++,rj=5执行step5.8;step5.8、判断rj≤rn:5=5,执行step5.9;step5.9、判断第rj=5条数据的isvisit是否=1:0!=1,执行step5.11;step5.11、根据公式(6)计算第ri=1条数据与第rj=5条数据的距离dist,执行step5.12;step5.12、判断dist<ε:2.3794<9.25,执行step5.13;step5.13、将第rj=5条数据加入到c中,执行step5.10;step5.10、rj++,rj=6执行step5.8;step5.8、判断rj≤rn:6>5,执行step5.14;step5.14、判断c中包含的数据条数>minp:5>4,执行step5.15;step5.15、判断rl≤c中包含的数据条数,1<5,则执行step5.16;step5.16、选择c中第rl=1条数据,执行step5.17;step5.17、判断第rl=1条数据的isvisit是否=1:1=1,执行step5.18;step5.18、rl++,rl=2执行step5.15;step5.15、判断rl≤c中包含的数据条数,2<5,则执行step5.16;step5.16、选择c中第rl=2条数据,执行step5.17;step5.17、判断第rl=2条数据的isvisit是否=1:0!=1,执行执行step5.19;step5.19、将第rl=2条数据的isvisit设置为1,执行step5.18;step5.18、rl++,rl=3执行step5.15;step5.15、判断rl≤c中包含的数据条数,3<5,则执行step5.16;step5.16、选择c中第rl=3条数据,执行step5.17;step5.17、判断第rl=3条数据的isvisit是否=1:0!=1,执行执行step5.19;step5.19、将第rl=3条数据的isvisit设置为1,执行step5.18;step5.18、rl++,rl=4执行step5.15;step5.15、判断rl≤c中包含的数据条数,4<5,则执行step5.16;step5.16、选择c中第rl=4条数据,执行step5.17;step5.17、判断第rl=4条数据的isvisit是否=1:0!=1,执行执行step5.19;step5.19、将第rl=4条数据的isvisit设置为1,执行step5.18;step5.18、rl++,rl=5执行step5.15;step5.15、判断rl≤c中包含的数据条数,5=5,则执行step5.16;step5.16、选择c中第rl=5条数据,执行step5.17;step5.17、判断第rl=5条数据的isvisit是否=1:0!=1,执行执行step5.19;step5.19、将第rl=5条数据的isvisit设置为1,执行step5.18;step5.18、rl++,rl=6执行step5.15;step5.15、判断rl≤c中包含的数据条数,6>5,执行step5.20;step5.20、将c保存到故障数据faultdata中,执行step5.5;step5.5、ri++,ri=2执行step5.3;step5.3、判断ri≤rn:2<5,执行step5.4;step5.4、判断第ri=2条数据的isvisit是否=1:1=1,执行step5.5;step5.5、ri++,ri=3执行step5.3;step5.3、判断ri≤rn:3<5,执行step5.4;step5.4、判断第ri=3条数据的isvisit是否=1:1=1,执行step5.5;step5.5、ri++,ri=4执行step5.3;step5.3、判断ri≤rn:4<5,执行step5.4;step5.4、判断第ri=4条数据的isvisit是否=1:1=1,执行step5.5;step5.5、ri++,ri=5执行step5.3;step5.3、判断ri≤rn:5=5,执行step5.4;step5.4、判断第ri=5条数据的isvisit是否=1:1=1,执行step5.5;step5.5、ri++,ri=6执行step5.3;step5.3、判断ri≤rn:6>5,结束。上面结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1