CN109921938A - 一种云计算环境下故障检测方法 - Google Patents
一种云计算环境下故障检测方法 Download PDFInfo
- Publication number
- CN109921938A CN109921938A CN201910197822.6A CN201910197822A CN109921938A CN 109921938 A CN109921938 A CN 109921938A CN 201910197822 A CN201910197822 A CN 201910197822A CN 109921938 A CN109921938 A CN 109921938A
- Authority
- CN
- China
- Prior art keywords
- data
- fault
- execute
- executes
- feature
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 33
- 238000012544 monitoring process Methods 0.000 claims abstract description 35
- 230000002159 abnormal effect Effects 0.000 claims abstract description 19
- 238000000034 method Methods 0.000 claims abstract description 18
- 238000012549 training Methods 0.000 claims abstract description 16
- 238000000605 extraction Methods 0.000 claims abstract description 13
- 238000013480 data collection Methods 0.000 claims description 30
- 108091081062 Repeated sequence (DNA) Proteins 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 7
- 239000011159 matrix material Substances 0.000 claims description 6
- 238000012417 linear regression Methods 0.000 claims description 3
- 235000013399 edible fruits Nutrition 0.000 claims description 2
- 238000005070 sampling Methods 0.000 claims description 2
- 238000011084 recovery Methods 0.000 abstract description 3
- 238000010276 construction Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000001310 location test Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种云计算环境下故障检测方法,本发明方法为:监测数据特征提取,通过计算云计算环境监测数据集中的任意两个特征之间的相关性系数值选取特征以得到故障特征集;根据故障特征集中对应的特征序号,提取故障数据的特征数据形成训练数据集,对训练数据集中的特征进行平均值、方差计算,并构建故障模型参数二维数组,将其放入故障库中;按照故障特征集提取监测异常数据,判断监测异常数据的故障类型是否与当前故障库已知故障相似,对与已知故障无法匹配的监测异常数据进行未知故障检测。本发明通过对故障模型的不断更新实现了故障检测的自适应性以及实现已知故障与未知故障的检测,为故障恢复做准备。
Description
技术领域
本发明涉及一种云计算环境下故障检测方法,属于云故障检测领域。
背景技术
近年来,云计算的应用技术越来越广泛,然而大量的恶意攻击和其自身的复杂性与大规模性使得系统及其上的各种软硬件经常发生故障,引起部分甚至所有服务的失效。云计算故障检测技术已经成为该领域的研究热点。云计算环境下的故障检测主要研究如何对云计算环境中出现的故障进行检测、分离和识别,即判断故障是否发生及故障发生的种类。饶翔等提出一种基于故障注入测试的故障特征提取方法,首先过滤噪声日志;然后构造故障识别器识别不同故障的早期特征;最后为每类故障构造限状态追踪器追踪该故障的后期传播状态,从而在故障被识别出来后持续跟踪故障传播状态。
目前,针对云计算故障数据检测的方法主要通过采集数据建立故障训练数据训练模型,然后对待检测云计算数据进行检测,并没有考虑到如何及时检测未知故障,且故障类型库的更新不够及时,将影响新故障的有效识别。
发明内容
本发明提供了一种云计算环境下故障检测方法,有助于判断云计算环境下发生的已知、未知故障及类型,同时还可以用于故障数据的更新。
本发明的技术方案是:一种云计算环境下故障检测方法,所述方法的具体步骤如下:所述方法的具体步骤如下:
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=[1 wq1 … 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 数据特征表
特征序号 | 数据特征 | 含义 |
F0 | CPU_Usage | 用户级别执行时CPU利用率 |
F1 | CPU_system | 系统执行时CPU利用率 |
F2 | CPU_idle | 系统空闲时间CPU时间百分比 |
F3 | MEM_Usage | 内存使用百分比 |
F4 | MEM_kbfree | 内存可用量 |
F5 | MEM_kbused | 内存已用量 |
F6 | MEM_cache | 内核高速缓存(cache)数据使用的内存数量 |
F7 | IO_rtps | 每秒发送给物理物理磁盘的读取请求总数 |
F8 | IO_wtps | 每秒接受给物理磁盘的读取请求 |
F9 | IO_tps | 每秒传输给物理磁盘的请求总量 |
F10 | NET_rxpck | 每秒钟接受到的包数 |
F11 | NET_txpck | 每秒钟传输的包数 |
表2 监测数据集MonitorData
Step1.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 故障数据FaultData
Step2.2、将与FaultFeatureSet中对应的特征序号[1,4,8,9,11,12]对故障数据FaultData进行特征数据提取(即特征序号1对应F0,其它同理)形成训练数据集TrainData,其中训练数据集TrainData如表4所示,执行Step2.3;
表4 训练数据集TrainData
Step2.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 监测异常数据MonitorAnomalyData
Step3.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;
表6 SystemRealTimeData部分数据
表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,结束。
上面结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (6)
1.一种云计算环境下故障检测方法,其特征在于:所述方法的具体步骤如下:
Step1、监测数据特征提取,通过计算云计算环境监测数据集中的任意两个特征之间的相关性系数值选取特征以得到故障特征集;
Step2、根据故障特征集中对应的特征序号,提取故障数据的特征数据形成训练数据集,对训练数据集中的特征进行平均值、方差计算,并构建故障模型参数二维数组,将其放入故障库中;
Step3、已知故障检测:按照故障特征集提取监测异常数据,判断监测异常数据的故障类型是否与当前故障库已知故障相似,对无法判断的故障类型,执行Step4;
Step4、未知故障检测,对与已知故障无法匹配的监测异常数据进行未知故障检测。
2.根据权利要求1所述的云计算环境下故障检测方法,其特征在于:所述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个特征对应的值,k=1,2,…,n,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。
3.根据权利要求2所述的云计算环境下故障检测方法,其特征在于:所述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。
4.根据权利要求3所述的云计算环境下故障检测方法,其特征在于:所述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、输出此时的故障类型,结束。
5.根据权利要求4所述的云计算环境下故障检测方法,其特征在于:所述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=[1 wq1 … 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。
6.根据权利要求5所述的云计算环境下故障检测方法,其特征在于:针对获取的未分类故障数据集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。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910197822.6A CN109921938B (zh) | 2019-03-15 | 2019-03-15 | 一种云计算环境下故障检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910197822.6A CN109921938B (zh) | 2019-03-15 | 2019-03-15 | 一种云计算环境下故障检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109921938A true CN109921938A (zh) | 2019-06-21 |
CN109921938B CN109921938B (zh) | 2021-10-12 |
Family
ID=66965146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910197822.6A Active CN109921938B (zh) | 2019-03-15 | 2019-03-15 | 一种云计算环境下故障检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109921938B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110505114A (zh) * | 2019-07-23 | 2019-11-26 | 昆明理工大学 | 一种云计算环境下节点异常判断方法 |
CN110929868A (zh) * | 2019-11-18 | 2020-03-27 | 中国银行股份有限公司 | 一种数据处理方法、装置、电子设备及可读存储介质 |
CN112882887A (zh) * | 2021-01-12 | 2021-06-01 | 昆明理工大学 | 一种云计算环境下服务故障模型动态建立方法 |
US11288291B2 (en) | 2020-03-15 | 2022-03-29 | International Business Machines Corporation | Method and system for relation discovery from operation data |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101008917A (zh) * | 2007-01-29 | 2007-08-01 | 中南大学 | 基于人工免疫系统的移动机器人软件故障诊断系统 |
US8249830B2 (en) * | 2009-06-19 | 2012-08-21 | Xerox Corporation | Method and system for automatically diagnosing faults in rendering devices |
CN103746829A (zh) * | 2013-12-20 | 2014-04-23 | 中国科学院计算技术研究所 | 一种基于集群的故障感知系统及其方法 |
CN107579846A (zh) * | 2017-08-23 | 2018-01-12 | 昆明理工大学 | 一种云计算故障数据检测方法及系统 |
-
2019
- 2019-03-15 CN CN201910197822.6A patent/CN109921938B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101008917A (zh) * | 2007-01-29 | 2007-08-01 | 中南大学 | 基于人工免疫系统的移动机器人软件故障诊断系统 |
US8249830B2 (en) * | 2009-06-19 | 2012-08-21 | Xerox Corporation | Method and system for automatically diagnosing faults in rendering devices |
CN103746829A (zh) * | 2013-12-20 | 2014-04-23 | 中国科学院计算技术研究所 | 一种基于集群的故障感知系统及其方法 |
CN107579846A (zh) * | 2017-08-23 | 2018-01-12 | 昆明理工大学 | 一种云计算故障数据检测方法及系统 |
Non-Patent Citations (2)
Title |
---|
柴森: "云计算系统故障注入平台的研究与设计", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
王焘等: "一种基于自适应监测的云计算系统故障检测方法", 《计算机学报》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110505114A (zh) * | 2019-07-23 | 2019-11-26 | 昆明理工大学 | 一种云计算环境下节点异常判断方法 |
CN110505114B (zh) * | 2019-07-23 | 2022-08-09 | 昆明理工大学 | 一种云计算环境下节点异常判断方法 |
CN110929868A (zh) * | 2019-11-18 | 2020-03-27 | 中国银行股份有限公司 | 一种数据处理方法、装置、电子设备及可读存储介质 |
CN110929868B (zh) * | 2019-11-18 | 2023-10-10 | 中国银行股份有限公司 | 一种数据处理方法、装置、电子设备及可读存储介质 |
US11288291B2 (en) | 2020-03-15 | 2022-03-29 | International Business Machines Corporation | Method and system for relation discovery from operation data |
CN112882887A (zh) * | 2021-01-12 | 2021-06-01 | 昆明理工大学 | 一种云计算环境下服务故障模型动态建立方法 |
CN112882887B (zh) * | 2021-01-12 | 2022-08-09 | 昆明理工大学 | 一种云计算环境下服务故障模型动态建立方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109921938B (zh) | 2021-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109921938A (zh) | 一种云计算环境下故障检测方法 | |
CN104317681B (zh) | 针对计算机系统的行为异常自动检测方法及检测系统 | |
Gambs et al. | De-anonymization attack on geolocated data | |
CN108777873A (zh) | 基于加权混合孤立森林的无线传感网络异常数据检测方法 | |
CN101902470B (zh) | 一种基于表单特征的Web安全漏洞动态检测方法 | |
CN106203679A (zh) | 一种用户流失预测方法及系统 | |
CN106529081A (zh) | 一种基于神经网络的pm2.5实时等级预测方法和系统 | |
CN103581186A (zh) | 一种网络安全态势感知方法及系统 | |
CN109615129A (zh) | 房地产客户成交概率预测方法、服务器及计算机存储介质 | |
CN108595655A (zh) | 一种基于会话特征相似性模糊聚类的异常用户检测方法 | |
CN103778262A (zh) | 基于叙词表的信息检索方法及装置 | |
CN105760649A (zh) | 一种面向大数据的可信度量方法 | |
CN106102163A (zh) | 基于rss线性相关与二次加权质心算法的wlan指纹定位方法 | |
Zhang et al. | Fuzzy analysis of community detection in complex networks | |
CN109800364A (zh) | 基于区块链的访问量统计方法、装置、设备和存储介质 | |
CN107563220A (zh) | 一种基于计算机的大数据分析控制系统及控制方法 | |
CN103617163A (zh) | 基于聚类分析的目标快速关联方法 | |
CN109150845A (zh) | 监测终端流量的方法以及系统 | |
CN111612531B (zh) | 一种点击欺诈的检测方法及系统 | |
CN109978138A (zh) | 基于深度强化学习的结构可靠度抽样方法 | |
CN107977727B (zh) | 一种基于社会发展和气候因素预测光缆网阻断概率的方法 | |
CN105631751A (zh) | 定向局部群体发现方法 | |
CN115878877A (zh) | 基于概念漂移的航空服务器访问爬虫的可视检测方法 | |
CN107067036A (zh) | 一种接地网腐蚀速率预测方法 | |
CN104008305B (zh) | 用于千万千瓦风电基地的可发电风资源分布估计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230524 Address after: 650000 main building of hi tech Information Center, No.398, 2nd Ring West Road, hi tech Development Zone, Kunming City, Yunnan Province Patentee after: SHANDONG HI-SPEED YUNNAN DEVELOPMENT Co.,Ltd. Address before: 650093 No. 253, Xuefu Road, Wuhua District, Yunnan, Kunming Patentee before: Kunming University of Science and Technology |
|
TR01 | Transfer of patent right |