劉誠(chéng)誠(chéng),姜 瑛
1(云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,昆明 650500)
2(昆明理工大學(xué) 信息工程與自動(dòng)化學(xué)院,昆明 650500)
故障檢測(cè)主要研究如何對(duì)系統(tǒng)中出現(xiàn)的故障進(jìn)行檢測(cè)、分離和識(shí)別,即判斷故障是否發(fā)生,定位故障發(fā)生的位置和種類,以確定故障的大小和發(fā)生的時(shí)間等[1],避免或減少系統(tǒng)失效所帶來的損失,保障了系統(tǒng)性能和可靠性[2].
隨著云計(jì)算的應(yīng)用越來越廣泛,大規(guī)模高動(dòng)態(tài)性的云平臺(tái)以及大量的惡意攻擊和管理人員的不規(guī)范操作,引起部分甚至所有服務(wù)的失效,已經(jīng)成為一種常態(tài)而非罕見事件[3].一旦云計(jì)算發(fā)生異常,產(chǎn)生故障,將會(huì)給社會(huì)、企業(yè)、個(gè)人造成難以估量的損失.例如2014年1月Gmail出現(xiàn)大范圍的宕機(jī),來自歐洲、美國(guó)、加拿大、印度和其他國(guó)家的報(bào)道顯示,谷歌的電子郵件服務(wù)已經(jīng)關(guān)閉1;2011年4月Amazon EC2的彈性塊儲(chǔ)存(EBS)出現(xiàn)故障,受影響的EBS影響了EBS API,并導(dǎo)致在整個(gè)美國(guó)東部地區(qū)EBS對(duì)API的調(diào)用出現(xiàn)高的錯(cuò)誤率和延遲率2.目前,保證云計(jì)算系統(tǒng)可用性是云計(jì)算面臨的一個(gè)重要的挑戰(zhàn)[4].因此,有效的云計(jì)算故障檢測(cè)成為保障云計(jì)算可用性的關(guān)鍵.
故障數(shù)據(jù)檢測(cè)實(shí)質(zhì)上是一種模式識(shí)別問題,通過已有的故障數(shù)據(jù)建立故障檢測(cè)模型,并以此對(duì)未知的故障數(shù)據(jù)進(jìn)行識(shí)別[5].將機(jī)器學(xué)習(xí)方法應(yīng)用于云計(jì)算故障檢測(cè),能使系統(tǒng)具有更強(qiáng)的適應(yīng)性、自學(xué)習(xí)性和魯棒性,是目前云計(jì)算故障檢測(cè)的一個(gè)重要方向,國(guó)內(nèi)外相續(xù)有眾多學(xué)者提出一系列用于云計(jì)算故障檢測(cè)的方法.為了提升故障檢測(cè)的準(zhǔn)確性,Song Fu等[6]提出了一種云環(huán)境下基于貝葉斯與決策樹的主動(dòng)云計(jì)算故障管理方法,首先利用貝葉斯模型預(yù)測(cè)出故障行為,系統(tǒng)管理員對(duì)其進(jìn)行標(biāo)記,然后利用標(biāo)記的故障樣本點(diǎn)作為訓(xùn)練樣本構(gòu)建決策樹,最后對(duì)未標(biāo)記的樣本點(diǎn)進(jìn)行故障預(yù)測(cè).Chirag N.Modil等[7]將貝葉斯和Snort檢測(cè)系統(tǒng)用于云計(jì)算故障檢測(cè),貝葉斯分類器通過觀察先前存儲(chǔ)的網(wǎng)絡(luò)事件預(yù)測(cè)給定事件是否攻擊,而Snort用于檢測(cè)已知攻擊.實(shí)驗(yàn)結(jié)果表明,此方法降低了誤檢率,降低了計(jì)算成本.Stehle E等[8]利用計(jì)算幾何學(xué)方法來檢測(cè)系統(tǒng)故障,分為訓(xùn)練和檢測(cè)兩個(gè)階段,在訓(xùn)練階段,搜集系統(tǒng)正常運(yùn)行時(shí)多維度監(jiān)測(cè)數(shù)據(jù),建立幾何閉包以表示系統(tǒng)的運(yùn)行狀態(tài)空間,在檢測(cè)階段,將不能包含在計(jì)算幾何閉包內(nèi)的監(jiān)測(cè)數(shù)據(jù)判斷為異常狀態(tài).
但是,上述基于監(jiān)督學(xué)習(xí)的云計(jì)算故障檢測(cè)方法存在兩個(gè)主要問題:首先,未對(duì)訓(xùn)練樣本做處理,忽略了訓(xùn)練樣本中噪聲數(shù)據(jù)對(duì)檢測(cè)準(zhǔn)確性的影響,由于云計(jì)算故障數(shù)據(jù)通常是監(jiān)測(cè)系統(tǒng)采集或者人工標(biāo)注,這種狀況下,不可避免的會(huì)出現(xiàn)噪聲數(shù)據(jù),如果不對(duì)噪聲數(shù)據(jù)進(jìn)行處理,將會(huì)影響檢測(cè)準(zhǔn)確性;其次,訓(xùn)練樣本得不到更新,沒有識(shí)別未知類型故障的能力,由于云計(jì)算系統(tǒng)是動(dòng)態(tài)多變的,訓(xùn)練集并不能完全的體現(xiàn)每個(gè)云計(jì)算故障類型的特點(diǎn),這就需要不斷的完善每個(gè)類別的訓(xùn)練樣本,否則也會(huì)影響檢測(cè)的準(zhǔn)確性.
為了解決上述問題并提高故障檢測(cè)速度,本文定義了云計(jì)算故障模型并提出一種改進(jìn)模糊kNN的云計(jì)算故障檢測(cè)方法.首先,該方法為了區(qū)別出初始云計(jì)算故障數(shù)據(jù)訓(xùn)練集中噪聲數(shù)據(jù),利用基于密度聚類的方法對(duì)訓(xùn)練集進(jìn)行預(yù)處理,計(jì)算每條數(shù)據(jù)屬于對(duì)應(yīng)類別的模糊度量并給噪聲數(shù)據(jù)更小的隸屬度;其次,為了區(qū)分故障特征的重要程度,采用模糊熵與互信息相結(jié)合方法進(jìn)行故障特征加權(quán);然后,為了讓模糊kNN更適用云計(jì)算故障檢測(cè)且提高檢測(cè)準(zhǔn)確性和速度,采用云計(jì)算故障特征加權(quán)以及分層檢測(cè)的方法改進(jìn)模糊kNN,確定待檢測(cè)云計(jì)算數(shù)據(jù)的近鄰訓(xùn)練樣本;最后利用基于最大隸屬度的自學(xué)習(xí)確定待檢測(cè)云計(jì)算數(shù)據(jù)檢測(cè)結(jié)果,檢測(cè)結(jié)果包括待檢測(cè)云計(jì)算數(shù)據(jù)故障類型、未知類型故障數(shù)據(jù)、訓(xùn)練集的更新樣本.
分層模型的基本思想是根據(jù)所述類別的不同對(duì)已知樣本進(jìn)行分層,并根據(jù)模型對(duì)未知樣本進(jìn)行分類.云計(jì)算系統(tǒng)內(nèi)部可以看作是一組服務(wù)的集合,這些服務(wù)主要分為三層[9,10]:基礎(chǔ)設(shè)施即服務(wù)層(Infrastructure as a Service,IaaS)、平臺(tái)即服務(wù)層(Platform as a Service,PaaS)、軟件即服務(wù)層(Software as a Service,IaaS),其中每層涉及的內(nèi)容、包含的功能各不相同.本文根據(jù)分層模型的基本思想并結(jié)合云計(jì)算系統(tǒng)內(nèi)部結(jié)構(gòu),按照云計(jì)算故障所屬的層次,將云計(jì)算故障分為IaaS 層云計(jì)算故障、PaaS層云計(jì)算故障、SaaS層云計(jì)算故障,并根據(jù)各層的架構(gòu)、組件對(duì)各層云計(jì)算故障次進(jìn)一步劃分.圖1按照云計(jì)算故障所屬層次對(duì)云計(jì)算故障進(jìn)行分層,圖中共分為三層.
圖1 云計(jì)算故障模型Fig.1 Cloud computing fault model
云計(jì)算故障模型的分層檢測(cè)將從圖1第一層開始判斷,如果待檢測(cè)云計(jì)算數(shù)據(jù)屬于其中的一種或幾種云計(jì)算故障,則只需沿著對(duì)應(yīng)云計(jì)算故障類型的分支進(jìn)行檢測(cè).而傳統(tǒng)的方法需要對(duì)所有云計(jì)算故障類型進(jìn)行比較,可以看出使用本文提出的云計(jì)算故障模型可以提升檢測(cè)速度,并能對(duì)云計(jì)算故障進(jìn)行定位.
由圖1可以看出云計(jì)算故障數(shù)據(jù)存在數(shù)據(jù)量大、數(shù)據(jù)源多樣的特點(diǎn),且實(shí)際的云計(jì)算故障數(shù)據(jù)還具有數(shù)據(jù)更新速度快、類域交叉或重疊、數(shù)據(jù)存在噪聲等特點(diǎn)[11,12].
本節(jié)針對(duì)云計(jì)算故障數(shù)據(jù)的特點(diǎn)并結(jié)合基于監(jiān)督學(xué)習(xí)的云計(jì)算故障檢測(cè)方法的不足,提出一種改進(jìn)模糊kNN的云計(jì)算故障檢測(cè)方法,該方法分為云計(jì)算故障數(shù)據(jù)預(yù)處理、云計(jì)算故障特征加權(quán)、云計(jì)算故障檢測(cè)三個(gè)部分,其中云計(jì)算故障檢測(cè)包括確定待檢測(cè)云計(jì)算數(shù)據(jù)的近鄰訓(xùn)練樣本和確定待檢測(cè)云計(jì)算檢測(cè)結(jié)果.檢測(cè)的流程圖如圖2所示.
圖2 云計(jì)算故障檢測(cè)流程圖
云計(jì)算故障檢測(cè)中,如何提高檢測(cè)準(zhǔn)確性是普遍關(guān)注的問題,而云計(jì)算故障數(shù)據(jù)訓(xùn)練集的質(zhì)量是影響檢測(cè)準(zhǔn)確性的一個(gè)重要因素,云計(jì)算故障數(shù)據(jù)訓(xùn)練集類別越準(zhǔn)確,內(nèi)容越全面,檢測(cè)的準(zhǔn)確性就越高.噪聲數(shù)據(jù)常常位于類邊緣附近,影響了檢測(cè)的準(zhǔn)確性.
本節(jié)將針對(duì)云計(jì)算故障數(shù)據(jù)存在噪聲數(shù)據(jù)問題進(jìn)行預(yù)處理.通過基于密度聚類的方法,區(qū)別出噪聲數(shù)據(jù),并給每個(gè)訓(xùn)練樣本屬于對(duì)應(yīng)云計(jì)算故障類型的隸屬度,且對(duì)噪聲數(shù)據(jù)賦予較小的隸屬度.假設(shè)T={(xi,ci)|i=1,…,N}為包含一個(gè)云計(jì)算故障類型的初始云計(jì)算故障數(shù)據(jù)訓(xùn)練集,其中N為樣本的個(gè)數(shù),ci為xi對(duì)應(yīng)的故障類型,每個(gè)訓(xùn)練樣本xi都是一個(gè)p維的向量.首先,計(jì)算T每個(gè)樣本的密度,得到一個(gè)密度為標(biāo)準(zhǔn)的集合G;然后,在G的基礎(chǔ)上進(jìn)行類中心的選取,并根據(jù)樣本間的最大密度差確定噪聲數(shù)據(jù);最后,根據(jù)訓(xùn)練樣本到類中心的距離計(jì)算每個(gè)訓(xùn)練樣本的隸屬度.具體的方法如下:
1)根據(jù)距離公式(1)計(jì)算T中訓(xùn)練樣本xi的K個(gè)最近鄰樣本;
(1)
其中xil表示訓(xùn)練樣本xi的第l個(gè)云計(jì)算故障特征,xj為T中的樣本,j≠i,j=1,…,N.
2)根據(jù)(1)獲得的xi的K個(gè)最近鄰樣本并結(jié)合公式(2)計(jì)算T中每個(gè)訓(xùn)練樣本的分布密度,并對(duì)密度進(jìn)行點(diǎn)排序,從而得到密度點(diǎn)的集合G;
(2)
其中,α為密度參數(shù)(α>1),pij為連接樣本點(diǎn)xi和xj之間的所有路徑,l為連接樣本點(diǎn)xi和xj路徑中訓(xùn)練樣本的個(gè)數(shù),d(xk,xk+1)為xk與xk+1之間的歐式距離公式.
3)選取密度最大的一個(gè)樣本點(diǎn)xmax并通過歐式距離公式計(jì)算出與其最近的樣本點(diǎn)xb;通過這兩個(gè)點(diǎn)構(gòu)造類中心a:
a=0.6×xmax+0.4×xb
(3)
4)根據(jù)公式(4)中確定的R值區(qū)別出噪聲數(shù)據(jù),當(dāng)T中訓(xùn)練樣本xi到類中心的距離d(a,xi)大于R,則該樣本為噪聲數(shù)據(jù).
R=xj-a,xj滿足max(density(xj)-density(xj+1))≤ε
(4)
其中,j≤N-1,density(xj)∈G,ε為調(diào)節(jié)閾值.
5)根據(jù)公式(5)計(jì)算T中訓(xùn)練樣本的隸屬度,并給噪聲數(shù)據(jù)較小的隸屬度.
(5)
通過對(duì)T的預(yù)處理得到云計(jì)算故障數(shù)據(jù)訓(xùn)練集D=(xi,ci,μ(xi))i=1,…,N,本節(jié)對(duì)噪聲數(shù)據(jù)賦予較小的隸屬度,能夠有效地將噪聲數(shù)據(jù)與有效訓(xùn)練樣本區(qū)分開能,減少噪聲數(shù)據(jù)對(duì)故障檢測(cè)準(zhǔn)確性的影響.
得到云計(jì)算故障數(shù)據(jù)訓(xùn)練集D后,將對(duì)云計(jì)算故障數(shù)據(jù)特征進(jìn)行加權(quán).文獻(xiàn)[13]根據(jù)模糊熵值越大不確定性越大的原則進(jìn)行特征的選取,目的是為了保證分類的正確率的同時(shí)減小分類時(shí)間.文獻(xiàn)[14]以特征的模糊熵值統(tǒng)一確定權(quán)值,并不能很好的體現(xiàn)每個(gè)類特征的特點(diǎn),且忽略了特征與特征之間的關(guān)系.
本文為了更好的區(qū)別云計(jì)算故障數(shù)據(jù)特征的重要程度,首先,去除D中的噪聲數(shù)據(jù)得到集合D*=(xi,ci,μ(xi))i=1,…,n;然后,提出模糊熵值和互信息[15,16]相結(jié)合的方法構(gòu)造云計(jì)算故障特征的權(quán)值,其中互信息常用來度量2個(gè)特征相關(guān)程度的方法[17].利用模糊熵和互信息相結(jié)合的特征權(quán)值計(jì)算步驟如下:
1)對(duì)D*中訓(xùn)練樣本歸一化,找出能代表集合D*的理想向量idt,本節(jié)理想向量通過每個(gè)云計(jì)算故障類型中所有樣本的均值確定;
2)計(jì)算D*中訓(xùn)練樣本xi與該云計(jì)算故障類型理想向量idt每個(gè)特征的相似度:
(6)
其中,xil表示集合D*中第i個(gè)訓(xùn)練樣本的第l個(gè)云計(jì)算故障特征,idtl表示訓(xùn)練樣本xi對(duì)應(yīng)類別的理想向量的第l個(gè)特征.該類樣本得到一個(gè)n×p的相似度矩陣,記為S.
(7)
3)根據(jù)S計(jì)算出每個(gè)云計(jì)算故障特征的模糊熵值,將每個(gè)云計(jì)算故障特征對(duì)應(yīng)的相似度作為隸屬度帶入式(8)中得到對(duì)應(yīng)的模糊熵值;
(8)
其中l(wèi)=1,…,p為訓(xùn)練樣本的第l個(gè)云計(jì)算故障特征.
4)根據(jù)公式(9)計(jì)算D*中訓(xùn)練樣本第l特征與其他特征之間的互信息和;
(9)
其中,r=1,2,…,p,I(l)表示D*中訓(xùn)練樣本第l特征與其他特征之間的互信息之和,H(r)表示D*中訓(xùn)練樣本第r個(gè)故障特征模糊熵值,H(l,r)表示訓(xùn)練樣本第l個(gè)特征和第r個(gè)特征的聯(lián)合模糊熵值.
(10)
5)根據(jù)公式(11)計(jì)算各個(gè)云計(jì)算故障特征的權(quán)值.
(11)
其中,wl表示D*中訓(xùn)練樣本的第l特征的權(quán)值.
通過上述云計(jì)算故障特征加權(quán)方法,可以確定每個(gè)云計(jì)算故障類型的每個(gè)云計(jì)算故障特征的權(quán)值.
本節(jié)首先確定待檢測(cè)云計(jì)算數(shù)據(jù)的近鄰訓(xùn)練樣本,然后確定待檢測(cè)云計(jì)算數(shù)據(jù)的檢測(cè)結(jié)果.
4.3.1 確定待檢測(cè)云計(jì)算數(shù)據(jù)的近鄰訓(xùn)練樣本
由于kNN方法是靠近鄰來確定數(shù)據(jù)所屬類別,因此對(duì)于存在類域交叉或重疊的數(shù)據(jù)來說,kNN方法較其他方法更合適[18].本節(jié)使用模糊kNN判斷待檢測(cè)云計(jì)算數(shù)據(jù)的近鄰訓(xùn)練樣本,并根據(jù)云計(jì)算故障數(shù)據(jù)自身的特點(diǎn)以及模糊kNN的不足,對(duì)模糊kNN進(jìn)行改進(jìn).
針對(duì)云計(jì)算故障數(shù)據(jù)自身的特點(diǎn)以及傳統(tǒng)模糊kNN的不足,主要在以下方面進(jìn)行改進(jìn):
1)采用加權(quán)距離判斷待檢測(cè)云計(jì)算數(shù)據(jù)的近鄰訓(xùn)練樣本.傳統(tǒng)的歐氏距離并沒有體現(xiàn)特征對(duì)于檢測(cè)的貢獻(xiàn)不同的規(guī)律,本文采用基于模糊熵和互信息相結(jié)合的特征賦權(quán)方法.
2)根據(jù)基于云計(jì)算故障模型的分層結(jié)構(gòu)進(jìn)行分層檢測(cè).針對(duì)云計(jì)算數(shù)據(jù)量大、數(shù)據(jù)源多樣的特點(diǎn),本文根據(jù)云計(jì)算故障模型構(gòu)建樹狀分層結(jié)構(gòu),首先對(duì)高層進(jìn)行檢測(cè),然后依據(jù)高層比較結(jié)果的不同,再依次對(duì)下一層次進(jìn)行檢測(cè),相比直接對(duì)所有云計(jì)算故障類型中訓(xùn)練樣本進(jìn)行計(jì)算,提高了檢測(cè)速度,并能對(duì)云計(jì)算故障進(jìn)行定位.
具體的步驟如下:
(1)將云計(jì)算故障數(shù)據(jù)訓(xùn)練集D中的故障類型按照云計(jì)算故障模型進(jìn)行分層,構(gòu)建成m(m≤3)層樹狀模型.
(2)計(jì)算待檢測(cè)云計(jì)算數(shù)據(jù)與前m層云計(jì)算故障類型類中心的加權(quán)距離(前m層處理方式相同,以下以第1層做具體說明):
1)根據(jù)第4.2節(jié)提到的方法計(jì)算第1層所有云計(jì)算故障類型的特征權(quán)值,對(duì)歐式距離進(jìn)行加權(quán),加權(quán)歐式距離公式為:
(12)
其中,xs表示待檢測(cè)云計(jì)算數(shù)據(jù),atl表示第1層上第t個(gè)云計(jì)算故障類型類中心at的第l個(gè)特征,wtl表示第1層上第t個(gè)云計(jì)算故障類型的第l個(gè)特征的權(quán)值.
2)根據(jù)加權(quán)距離,在第1層的云計(jì)算故障類型中選出與待檢測(cè)云計(jì)算數(shù)據(jù)最近的k1(k1≤對(duì)應(yīng)層云計(jì)算故障類型數(shù))個(gè)近鄰.
(3)在前m層中,判斷k1個(gè)近鄰云計(jì)算故障類型中是否存在葉子節(jié)點(diǎn)且非全部葉子節(jié)點(diǎn),如果存在,則保留該葉子節(jié)點(diǎn),并和k1中非葉子節(jié)點(diǎn)對(duì)應(yīng)的下一層故障類型一起作為待檢測(cè)云計(jì)算數(shù)據(jù)的“訓(xùn)練樣本”;如果不存在,則沿著k1個(gè)云計(jì)算故障類型對(duì)應(yīng)的下一層故障類型進(jìn)行檢測(cè),以此獲得第m層的k1個(gè)近鄰云計(jì)算故障類型;如果k1個(gè)近鄰云計(jì)算故障類型全部是葉子節(jié)點(diǎn),則從k1個(gè)云計(jì)算故障類型對(duì)應(yīng)的訓(xùn)練樣本中選取k2個(gè)近鄰訓(xùn)練樣本.
(4)根據(jù)第m層獲得k1個(gè)近鄰云計(jì)算故障類型,從k1個(gè)云計(jì)算故障類型對(duì)應(yīng)的訓(xùn)練樣本中選取k2個(gè)近鄰訓(xùn)練樣本.
通過改進(jìn)模糊kNN方法可以獲得待檢測(cè)云計(jì)算數(shù)據(jù)的近鄰訓(xùn)練樣本.
4.3.2 確定待檢測(cè)云計(jì)算數(shù)據(jù)檢測(cè)結(jié)果
由于云計(jì)算數(shù)據(jù)具有更新速度快的特點(diǎn),及時(shí)更新云計(jì)算故障數(shù)據(jù)訓(xùn)練集才能提升云計(jì)算故障檢測(cè)準(zhǔn)確性.本節(jié)根據(jù)得到的待檢測(cè)云計(jì)算數(shù)據(jù)xs對(duì)應(yīng)的k2個(gè)近鄰訓(xùn)練樣本,通過基于最大隸屬度的自學(xué)習(xí)分析k2個(gè)近鄰訓(xùn)練樣本的隸屬度來確定待檢測(cè)云計(jì)算數(shù)據(jù)檢測(cè)結(jié)果.
1)計(jì)算k2個(gè)云計(jì)算故障數(shù)據(jù)中最大的隸屬度umax:
(13)
其中,i=1,2,…,k2表示待檢測(cè)云計(jì)算數(shù)據(jù)的第i個(gè)近鄰,μ(xi)表示近鄰xi屬于對(duì)應(yīng)類別隸屬度,wil表示近鄰xi對(duì)應(yīng)云計(jì)算故障類型的第l特征的權(quán)值.
2)根據(jù)umax大于閾值σ1且待檢測(cè)云計(jì)算數(shù)據(jù)與umax對(duì)應(yīng)訓(xùn)練樣本所屬云計(jì)算故障類型的理想向量的距離小于匹配閾值ρ來確定該待檢測(cè)云計(jì)算數(shù)據(jù)的類別為umax對(duì)應(yīng)云計(jì)算故障數(shù)據(jù)所屬云計(jì)算故障類型,并將該待檢測(cè)云計(jì)算數(shù)據(jù)及其類別信息加入去除噪聲數(shù)據(jù)的初始云計(jì)算故障數(shù)據(jù)訓(xùn)練集T*;
3)根據(jù)umax小于閾值σ2來確定待檢測(cè)云計(jì)算數(shù)據(jù)為未知類型故障,并將該待檢測(cè)云計(jì)算數(shù)據(jù)和其類別信息加入去除噪聲數(shù)據(jù)的初始云計(jì)算故障數(shù)據(jù)訓(xùn)練集T*;
4)跟據(jù)umax小于閾值σ1且umax大于閾值σ2來確定待檢測(cè)云計(jì)算數(shù)據(jù)的類別為umax對(duì)應(yīng)訓(xùn)練樣本所屬云計(jì)算故障類型.
根據(jù)云計(jì)算故障檢測(cè),可以獲得待檢測(cè)云計(jì)算數(shù)據(jù)的故障類型、云計(jì)算故障數(shù)據(jù)訓(xùn)練集的更新樣本以及待檢測(cè)云計(jì)算數(shù)據(jù)中屬于未知類型故障的數(shù)據(jù),并將T*作為新的初始云計(jì)算故障數(shù)據(jù)訓(xùn)練集.
為了驗(yàn)證本文提出方法的有效性,本文應(yīng)用eclipse4.3.0實(shí)現(xiàn)了相關(guān)方法,在win7系統(tǒng)下進(jìn)行實(shí)驗(yàn),并搭建基于Hadoop的云平臺(tái)用以采集實(shí)驗(yàn)數(shù)據(jù).其中搭建Hadoop集群包含3臺(tái)主機(jī),其中2臺(tái)是從節(jié)點(diǎn),1臺(tái)式主節(jié)點(diǎn).主機(jī)的配置如表1所示.
表1 主機(jī)配置情況Table 1 Host configuration
本文的云計(jì)算故障數(shù)據(jù)通過故障注入[19,20]產(chǎn)生,并使用基于Ganglia的性能數(shù)據(jù)采集工具收集云計(jì)算系統(tǒng)的性能數(shù)據(jù),包括系統(tǒng)的CPU占用率、內(nèi)存占用率、網(wǎng)絡(luò)利用率、I/O占用率等屬性,采集的時(shí)間間隔為5分鐘.云計(jì)算故障數(shù)據(jù)采集主要是在系統(tǒng)運(yùn)行時(shí)人為的注入故障(網(wǎng)絡(luò)延遲故障、內(nèi)存故障、CPU故障、磁盤IO故障).實(shí)驗(yàn)數(shù)據(jù)共用23888條數(shù)據(jù),其中正常類別數(shù)據(jù)樣本4917個(gè),PaaS層故障樣本18971個(gè),PaaS層故障及其子故障類型、樣本數(shù)如表2所示.
表2 PaaS層故障及其子故障類型、樣本數(shù)
本次實(shí)驗(yàn)從表2和正常類別數(shù)據(jù)中隨機(jī)選取1500個(gè)正常樣本、1500個(gè)網(wǎng)絡(luò)故障樣本、4500個(gè)操作系統(tǒng)平臺(tái)故障樣本(包括1500個(gè)CPU故障樣本、1500個(gè)內(nèi)存故障樣本、1500個(gè)磁盤IO故障樣本)作為云計(jì)算故障訓(xùn)練樣本,使用包含各個(gè)類別的16388個(gè)樣本作為待檢測(cè)云計(jì)算數(shù)據(jù).本文實(shí)驗(yàn)相關(guān)參數(shù)設(shè)置為K=7,ε=0.013,σ1=0.93,σ2=0.27.
實(shí)驗(yàn)1.實(shí)驗(yàn)1就本文方法的檢測(cè)準(zhǔn)確性進(jìn)行實(shí)驗(yàn).檢測(cè)準(zhǔn)確性評(píng)估指標(biāo)使用常用的真正率(True Positive Rate,TPR)、真負(fù)率(True Negative Rate,TNR)以及正確檢測(cè)率(Correct Detection Rate,CDR).
(14)
(15)
(16)
其中,TPR刻畫的是被檢測(cè)為正常樣本的正常樣本數(shù)占所有正常樣本的比例;TNR刻畫的是被檢測(cè)為故障樣本的故障樣本數(shù)占所有故障樣本的比例;CDR為TPR與TNR和的均值;TP表示被檢測(cè)為正常樣本的正常樣本數(shù);TN表示被檢測(cè)為故障樣本的故障樣本數(shù);FN表示被檢測(cè)為故障樣本的正常樣本數(shù);FP表示被檢測(cè)為正常樣本的故障樣本數(shù).
實(shí)驗(yàn)中設(shè)置參數(shù)k1=2、k2=1~20,并將本文方法與經(jīng)典的模糊kNN方法、本文方法1(加入更新訓(xùn)練樣本)、文獻(xiàn)[6]中決策樹方法進(jìn)行檢測(cè)準(zhǔn)確性對(duì)比,其中,文獻(xiàn)[6]提出的方法是以提升檢測(cè)準(zhǔn)確性為目的;更新訓(xùn)練樣本為本文方法運(yùn)行產(chǎn)生的云計(jì)算故障數(shù)據(jù)訓(xùn)練集的更新樣本,包含正常樣本29個(gè)、內(nèi)存故障樣本33、CPU故障樣本26個(gè)、未知類型故障樣本6個(gè).本文方法與模糊kNN、本文方法1、文獻(xiàn)[6]決策樹方法的實(shí)驗(yàn)結(jié)果如圖3到圖6所示.
圖3 本文方法與模糊kNN、本文方法1的真正率 Fig.3 TPR of this paper's method,fuzzy kNN and this paper 's method 1圖4 本文方法與模糊kNN、本文方法1的真負(fù)率Fig.4 TNR of this paper's method,fuzzy kNN and this paper's method 1圖5 本文方法與模糊kNN、本文方法1的正確檢測(cè)率Fig.5 CDR of this paper's method,fuzzy kNN and this paper's method 1圖6 文獻(xiàn)[6]決策樹方法的TPR、TNR、CDRFig.6 TPR,TNR and CDR of the decision tree method in literature [6]
從圖3到圖6可以看出,本文方法的檢測(cè)準(zhǔn)確性明顯高于模糊kNN方法、文獻(xiàn)[6]決策樹方法,本文方法1的檢測(cè)準(zhǔn)確性略高于本文方法.
表3 四種方法的檢測(cè)結(jié)果
如圖6所示,文獻(xiàn)[6]決策樹方法實(shí)驗(yàn)結(jié)果的橫坐標(biāo)表示的值為隨機(jī)選取訓(xùn)練樣本的百分比,與圖3-圖5其他三種方法實(shí)驗(yàn)結(jié)果的橫坐標(biāo)表示的值不一致,因此未將文獻(xiàn)[6]決策樹方法的實(shí)驗(yàn)結(jié)果放在圖3-圖5中比較.四種方法的最高真正率(TPRmax)、最高真負(fù)率(TNRmax)、最高正確檢測(cè)率(CDRmax)如表3所示.
從表3可以看出,本文方法相對(duì)于模糊kNN,最高CDR提升了2.99%,相對(duì)文獻(xiàn)[6]決策樹方法,最高CDR提升了2.14%,本文方法1相對(duì)本文方法的最高CDR提升0.13%.說明本文方法的檢測(cè)準(zhǔn)確性要好于模糊kNN方法、文獻(xiàn)[6]決策樹方法,且本文的基于最大隸屬度的自學(xué)習(xí)是有效的.
表4 識(shí)別未知類型故障的實(shí)驗(yàn)結(jié)果Table 4 Fault,sub fault type and sample number of PaaS layer
實(shí)驗(yàn)2.實(shí)驗(yàn)2就本文方法識(shí)別未知類型故障的效果進(jìn)行實(shí)驗(yàn).在云計(jì)算故障訓(xùn)練樣本中任意刪除所構(gòu)成云計(jì)算故障模型葉子節(jié)點(diǎn)上的一個(gè)云計(jì)算故障類型,并在待檢測(cè)云計(jì)算數(shù)據(jù)中保留該云計(jì)算故障類型的1000個(gè)樣本作為未知類型故障故障,其中參數(shù)k1為2.記錄本文方法識(shí)別未知類型故障的情況,實(shí)驗(yàn)結(jié)果如表4所示.
由表4可以看出,當(dāng)未知類型故障為內(nèi)存故障時(shí),識(shí)別率最高達(dá)到90.3%,對(duì)未知類型故障的平均識(shí)別率為87.82%,說明本文的方法具有識(shí)別未知類型故障的能力.
實(shí)驗(yàn)3.實(shí)驗(yàn)3就本文方法的檢測(cè)速度進(jìn)行實(shí)驗(yàn).本次試驗(yàn)分別使用本文方法與本文方法2(不包含基于云計(jì)算故障模型的分層檢測(cè)的本文方法)、模糊kNN方法對(duì)待檢測(cè)云計(jì)算數(shù)據(jù)進(jìn)行檢測(cè),記錄其檢測(cè)用時(shí)并進(jìn)行比較,分別運(yùn)行N(N=5)次求平均時(shí)間,實(shí)驗(yàn)結(jié)果如表4所示.
表5 故障檢測(cè)時(shí)間比較Table 5 Comparison of fault detection time
由表5可以看出,本文方法在時(shí)間上比傳統(tǒng)的模糊kNN方法時(shí)間縮短了28.68%,本文方法用時(shí)比本文方法2提升了43.01%,且本文方法2比模糊kNN方法用時(shí)多出871ms,分析原因,是由于本文方法對(duì)訓(xùn)練集進(jìn)行了預(yù)處理以及對(duì)特征進(jìn)行了加權(quán).綜上可以看出,本文的方法是一種對(duì)云計(jì)算故障檢測(cè)效果較好且速度較快的檢測(cè)方法.
本文提出了一種改進(jìn)模糊kNN的云計(jì)算故障檢測(cè)方法.首先采用基于密度聚類方法來對(duì)云計(jì)算故障數(shù)據(jù)訓(xùn)練集進(jìn)行預(yù)處理,給噪聲數(shù)據(jù)賦予更小的隸屬度,減小噪聲數(shù)據(jù)對(duì)檢測(cè)效果的影響.其次對(duì)模糊kNN進(jìn)行改進(jìn),使其更適合云計(jì)算的云計(jì)算故障檢測(cè).最后根據(jù)基于最大隸屬度的自學(xué)習(xí)方法,不斷的更新云計(jì)算故障訓(xùn)練樣本集,識(shí)別未知云計(jì)算故障.實(shí)驗(yàn)表明本文方法在云計(jì)算故障檢測(cè)方面是有效的.但是本文方法還有不足的地方,沒有充分考慮云計(jì)算故障轉(zhuǎn)移,今后將針對(duì)這個(gè)問題進(jìn)行持續(xù)研究.