仇 開,姜 瑛
(1.云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650500;2.昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院,云南 昆明 650500)
近年來,云計(jì)算技術(shù)迅猛發(fā)展。云環(huán)境中分布著海量服務(wù),服務(wù)不是孤立存在的,服務(wù)與服務(wù)之間存在組合調(diào)用關(guān)系,這構(gòu)成了復(fù)雜的服務(wù)運(yùn)行環(huán)境。在復(fù)雜的云環(huán)境中,服務(wù)運(yùn)行數(shù)據(jù)如果存在異常,將影響服務(wù)的運(yùn)行,或演化為服務(wù)故障,甚至導(dǎo)致服務(wù)的宕機(jī)。2014年4月,Amazon EC2服務(wù)中斷了100多個(gè)小時(shí),導(dǎo)致交易系統(tǒng)關(guān)閉,造成700多萬美元的損失[1]。2017年6月,蘋果iCloud服務(wù)約有1%的用戶持續(xù)宕機(jī)超過36 h,受影響用戶無法使用之前的備份來恢復(fù)設(shè)備數(shù)據(jù),造成了無法估量的經(jīng)濟(jì)損失[2]。如果云環(huán)境中重要的服務(wù)宕機(jī)1 h,由此導(dǎo)致的經(jīng)濟(jì)損失將以百萬美元級別計(jì)算[3]。為了確保云環(huán)境下服務(wù)的正常運(yùn)行,對云環(huán)境中的服務(wù)運(yùn)行數(shù)據(jù)進(jìn)行異常檢測是亟需解決的問題。
異常檢測是指在數(shù)據(jù)集中發(fā)現(xiàn)與預(yù)期數(shù)據(jù)不符的離群點(diǎn)的過程[4]。目前,已有針對云環(huán)境中軟件異常檢測的方法,可以將其分為有監(jiān)督的方法和無監(jiān)督的方法。有監(jiān)督的方法需根據(jù)一個(gè)已經(jīng)標(biāo)記的數(shù)據(jù)集訓(xùn)練出一個(gè)分類器,然后根據(jù)這個(gè)分類器,將測試數(shù)據(jù)劃分到各類別。文獻(xiàn)[5]提出了基于Cluster-KNN的方法用于檢測網(wǎng)絡(luò)異常,首先用K-means聚類算法劃分?jǐn)?shù)據(jù),計(jì)算聚類中心的質(zhì)心,然后再使用近鄰搜索算法從聚簇中獲取相應(yīng)的k近鄰,最后對k近鄰使用基于KNN的近鄰決策算法得出最終分類結(jié)果。文獻(xiàn)[6]在SMO(Sequential Minimal Optimization)算法的基礎(chǔ)上提出了具有在線學(xué)習(xí)能力的LASVM(Learning Active Support Vector Machine)算法,用于云環(huán)境異常檢測,相比傳統(tǒng)SVM算法,在海量數(shù)據(jù)集處理上有較快的處理速度,占用更少的資源。無監(jiān)督的方法不需要有標(biāo)記的數(shù)據(jù)集。聚類是一種典型的無監(jiān)督方法,這種方法能夠?qū)⑾嗨频臄?shù)據(jù)聚集到同一個(gè)簇中。LOF(Local Outlier Factor)算法[7]是一種基于密度的聚類算法,文獻(xiàn)[8]提出了一種基于改進(jìn)LOF的異常檢測算法,用于云計(jì)算環(huán)境中的異常檢測,算法提出用R-tree來存儲(chǔ)每個(gè)點(diǎn)的k近鄰,提高了算法的運(yùn)行速度且具有較好的準(zhǔn)確率。文獻(xiàn)[9]提出了一種基于K-means的改進(jìn)異常檢測算法,用于云環(huán)境中虛擬機(jī)異常的檢測,通過策略來設(shè)置初始聚類中心,并對聚類結(jié)果中心點(diǎn)進(jìn)行修正,最終將虛擬機(jī)運(yùn)行狀態(tài)分為正常、異常和故障。
在上述異常檢測方法中,存在以下問題:(1)部分方法對異常判斷的準(zhǔn)確率不高,例如文獻(xiàn)[5,6,9]在計(jì)算距離時(shí)采取了傳統(tǒng)的歐氏距離,未考慮數(shù)據(jù)的各個(gè)維度在求解距離過程中體現(xiàn)的不同作用,導(dǎo)致使用傳統(tǒng)的歐氏距離來進(jìn)行異常判斷不夠準(zhǔn)確;(2)在異常檢測中,只考慮服務(wù)運(yùn)行數(shù)據(jù)本身的異常程度,而忽略了服務(wù)上下文信息,易將正常的服務(wù)運(yùn)行數(shù)據(jù)劃分為異常數(shù)據(jù)。在云環(huán)境中,存在大量任務(wù)調(diào)度,可以將這些任務(wù)調(diào)度視為服務(wù)的上下文信息,任務(wù)執(zhí)行會(huì)導(dǎo)致服務(wù)的運(yùn)行數(shù)據(jù)產(chǎn)生大幅度的變化,這些由于正常任務(wù)執(zhí)行而產(chǎn)生波動(dòng)的服務(wù)運(yùn)行數(shù)據(jù)不能視為異常。針對以上存在的問題,本文提出了一種加權(quán)LOF結(jié)合上下文判斷的云環(huán)境中服務(wù)運(yùn)行數(shù)據(jù)異常檢測方法,用于服務(wù)運(yùn)行數(shù)據(jù)的異常檢測。
在檢測云環(huán)境中的服務(wù)運(yùn)行數(shù)據(jù)異常時(shí),為了提高異常判斷的準(zhǔn)確率,本文將異常檢測分為2個(gè)階段:首先,在進(jìn)行初次異常判斷時(shí),為了區(qū)別對待服務(wù)運(yùn)行數(shù)據(jù)各維度的屬性值,本文使用信息熵賦權(quán)法對不同維度屬性賦予不同的權(quán)值,并對LOF算法進(jìn)行改進(jìn),使用了加權(quán)歐氏距離;然后,在二次異常判斷時(shí),將初次判斷后得到的異常服務(wù)運(yùn)行數(shù)據(jù)集與服務(wù)運(yùn)行時(shí)的上下文信息進(jìn)行綜合判斷,得到異常判斷的結(jié)果。本文方法流程如圖1所示。
Figure 1 Flow chart of anomaly detection method for service running data in cloud environment based on weighted LOF and context judgment圖1 加權(quán)LOF結(jié)合上下文判斷的云環(huán)境中 服務(wù)運(yùn)行數(shù)據(jù)異常檢測方法流程圖
本文進(jìn)行的初次異常判斷是為了計(jì)算云環(huán)境中服務(wù)運(yùn)行數(shù)據(jù)的異常程度,為異常判斷提供依據(jù)。服務(wù)運(yùn)行數(shù)據(jù)的異常程度可以根據(jù)其局部異常因子的值來確定,數(shù)據(jù)局部異常因子的值可以通過LOF算法計(jì)算得到。由于LOF算法沒有考慮到服務(wù)運(yùn)行數(shù)據(jù)各維度在求解距離過程中貢獻(xiàn)的差異,本文使用信息熵賦權(quán)法給服務(wù)運(yùn)行數(shù)據(jù)的各維度屬性賦予不同的權(quán)值,然后計(jì)算加權(quán)歐氏距離,使用加權(quán)LOF算法計(jì)算服務(wù)運(yùn)行數(shù)據(jù)的異常值。
3.1.1 服務(wù)運(yùn)行數(shù)據(jù)各維度屬性賦權(quán)
信息熵[10]表示數(shù)據(jù)的不確定性,熵值越大,變量的不確定性就越大,其提供的信息量就越??;熵值越小,變量的不確定性就越小,其提供的信息量就越大。云環(huán)境中的服務(wù)運(yùn)行數(shù)據(jù)是多維的,每個(gè)維度的數(shù)據(jù)的取值范圍都存在差異,因此不同維度的數(shù)據(jù)含有的信息量不同,需要區(qū)別對待。
假設(shè)待判斷的服務(wù)運(yùn)行數(shù)據(jù)集RuntimeData={x1,x2,…,xn},下稱RD,其中xi(1≤i≤n)是m維數(shù)據(jù)。服務(wù)運(yùn)行數(shù)據(jù)集RD的各維屬性賦權(quán)過程如算法1所示:
算法1各維度屬性賦權(quán)算法
Input:服務(wù)運(yùn)行數(shù)據(jù)集RD。
Output:權(quán)值集合W={w1,w2,…,wm}。
Step1使用Z-Score[11]標(biāo)準(zhǔn)化方法處理服務(wù)運(yùn)行數(shù)據(jù)集RD得到RD′={x′1,x′2,…,x′n},用式(1)計(jì)算數(shù)據(jù)集RD′ 中第i個(gè)數(shù)據(jù)的第j維屬性的比重Pij:
(1)
其中,1≤i≤n,1≤j≤m,x′ij是RD′的第i個(gè)數(shù)據(jù)的第j維屬性值。
Step2用式(2)計(jì)算數(shù)據(jù)集RD′第j維屬性的信息熵Ej:
(2)
其中,p=1/lnn。
Step3用式(3)計(jì)算數(shù)據(jù)集RD′中第j維屬性的波動(dòng)系數(shù)fj:
fj=1-Ej
(3)
Step4用式(4)計(jì)算第j維屬性的權(quán)值wj:
(4)
3.1.2 計(jì)算加權(quán)歐氏距離
通過算法1可以獲得服務(wù)運(yùn)行數(shù)據(jù)各維度屬性的權(quán)值集合W。根據(jù)信息熵理論,這些屬性之間的不確定性是不同的,服務(wù)運(yùn)行數(shù)據(jù)中的異常點(diǎn)表現(xiàn)出的不確定性是由于其在某些屬性上的取值范圍不同造成的,服務(wù)運(yùn)行數(shù)據(jù)各維度屬性的不同權(quán)值實(shí)際上是其不確定性的一個(gè)反映。文獻(xiàn)[8]中的LOF算法在使用歐氏距離時(shí)沒有考慮屬性之間的不確定性會(huì)影響異常判斷的準(zhǔn)確率。因此,本文使用式(5)[12]計(jì)算歸一化后的服務(wù)運(yùn)行數(shù)據(jù)集合RD中的任意數(shù)據(jù)xA和數(shù)據(jù)xB的加權(quán)歐氏距離WeightDis(xA,xB),下稱WD(xA,xB):
(5)
其中,1≤j≤m,xAj為數(shù)據(jù)xA的第j維屬性值,xBj為數(shù)據(jù)xB的第j維屬性值,wj是第j維屬性的權(quán)重。
3.1.3 篩選初步異常服務(wù)運(yùn)行數(shù)據(jù)集
為了提高服務(wù)運(yùn)行數(shù)據(jù)異常判斷的準(zhǔn)確率,使用3.1.2節(jié)中的加權(quán)歐氏距離替換文獻(xiàn)[8]中LOF算法中涉及到的歐氏距離,改進(jìn)的加權(quán)LOF算法如算法2所示:
算法2改進(jìn)的加權(quán)LOF算法
Input:.經(jīng)Z-Score標(biāo)準(zhǔn)化的服務(wù)運(yùn)行數(shù)據(jù)集RD′={x′1,x′2,…,x′n},RD′的各維屬性的權(quán)重集合W={w1,w2,…,wm}。
Output:初步異常服務(wù)運(yùn)行數(shù)據(jù)集E。
Step1若數(shù)據(jù)集RD′所有數(shù)據(jù)都被處理,轉(zhuǎn)Step 6;否則,從數(shù)據(jù)集RD′取出一個(gè)未經(jīng)過處理的數(shù)據(jù)xA進(jìn)行以下處理。
Step2求數(shù)據(jù)xA的第k加權(quán)近鄰距離k-WeightDis(xA),下稱k-WD(xA)。其中,k-WD(xA)為數(shù)據(jù)xA與數(shù)據(jù)集中其他數(shù)據(jù)加權(quán)距離大小排名(升序)為第k的距離。
Step3求數(shù)據(jù)xA的k鄰域Nk(xA)和鄰域中的每個(gè)數(shù)據(jù)xO到數(shù)據(jù)xA的加權(quán)局部可達(dá)距離WeightReachDis(xA,xO),下稱WRD(xA,xO),其中Nk(xA)為數(shù)據(jù)xA與數(shù)據(jù)集中其他數(shù)據(jù)加權(quán)距離大小排名(升序)前k的數(shù)據(jù)的集合,WRD(xA,xO)=max{k-WD(xA),WD(xA,xO)}。
Step4求數(shù)據(jù)xA的局部可達(dá)密度lrdk(xA):
(6)
其中,|Nk(xA)| 是數(shù)據(jù)xA的k鄰域中數(shù)據(jù)的個(gè)數(shù)。
Step5通過式(7)求數(shù)據(jù)xA的局部異常因子LOFk(xA),如果LOFk(xA)>LOFthreshold,將數(shù)據(jù)xA加入初步異常服務(wù)運(yùn)行數(shù)據(jù)集E,轉(zhuǎn)Step 1。其中,LOFthreshold為閾值,若數(shù)據(jù)的局部異常因子大于此值,該數(shù)據(jù)為異常;若小于或等于此值,該數(shù)據(jù)為正常。
(7)
Step6結(jié)束,輸出初步異常服務(wù)運(yùn)行數(shù)據(jù)集E。
經(jīng)過以上步驟后,對服務(wù)運(yùn)行數(shù)據(jù)進(jìn)行初次異常判斷,得到初步異常服務(wù)運(yùn)行數(shù)據(jù)集E。
通過3.1節(jié)的方法對服務(wù)運(yùn)行數(shù)據(jù)集進(jìn)行了初步篩選,得到初步異常數(shù)據(jù)集。初步異常數(shù)據(jù)集只是服務(wù)運(yùn)行數(shù)據(jù)自身的異常程度的反映,其中的部分異常數(shù)據(jù)可能是由于云計(jì)算服務(wù)運(yùn)行環(huán)境中存在相關(guān)正常任務(wù)調(diào)度產(chǎn)生的,但這種因任務(wù)調(diào)度產(chǎn)生的“異常”并不是真正的異常。因此,需要在采集正常服務(wù)組合數(shù)據(jù)并獲取其數(shù)據(jù)特征后,再對初步異常服務(wù)運(yùn)行數(shù)據(jù)集進(jìn)行二次異常判斷。
3.2.1 服務(wù)組合數(shù)據(jù)處理
為了判斷異常數(shù)據(jù)是否與云環(huán)境中的服務(wù)的運(yùn)行環(huán)境相關(guān),需要考慮相應(yīng)的服務(wù)上下文信息。服務(wù)上下文信息是描述云環(huán)境中服務(wù)的環(huán)境狀態(tài)、資源信息、用戶需求的屬性或?qū)傩灾礫13],可以用于輔助異常數(shù)據(jù)的判斷。例如,對于某服務(wù),t時(shí)刻的CPU和內(nèi)存利用率是該服務(wù)的運(yùn)行數(shù)據(jù),t時(shí)刻的系統(tǒng)進(jìn)程數(shù)是服務(wù)的上下文信息。因?yàn)樯舷挛男畔膫?cè)面反映當(dāng)前服務(wù)的狀態(tài),其與運(yùn)行數(shù)據(jù)之間存在關(guān)聯(lián)性,在異常判斷時(shí)上下文信息起到輔助作用,因此需要綜合考慮服務(wù)運(yùn)行時(shí)的上下文信息。
為了綜合考慮服務(wù)運(yùn)行時(shí)的數(shù)據(jù)和當(dāng)時(shí)的上下文信息數(shù)據(jù),本文給出服務(wù)組合數(shù)據(jù)的定義:服務(wù)組合數(shù)據(jù)是同一時(shí)刻t,一條服務(wù)運(yùn)行數(shù)據(jù)和一條上下文信息數(shù)據(jù)的組合,如式(8)所示:
Compt=(xt,yt)
(8)
其中,Compt是服務(wù)組合數(shù)據(jù),xt是時(shí)刻t的服務(wù)運(yùn)行數(shù)據(jù),yt是時(shí)刻t的服務(wù)上下文信息數(shù)據(jù)。
同一類服務(wù)上下文信息數(shù)據(jù),其對應(yīng)的服務(wù)運(yùn)行數(shù)據(jù)往往具有相同或者相似的特征。為了獲取數(shù)據(jù)特征,可以在正常運(yùn)行情況下采集服務(wù)組合數(shù)據(jù)后,首先使用K-means算法[14]對服務(wù)上下文信息進(jìn)行聚類,使得具有相同或者相似服務(wù)上下文信息的數(shù)據(jù)被歸于同一個(gè)簇,初始聚類中心的選取方法參照韓曉紅等人[15]的選取策略。聚類完畢后可以獲得每條組合數(shù)據(jù)的上下文信息簇號a和對應(yīng)上下文信息簇的中心坐標(biāo)Ca,1≤a≤kK-means,其中kK-means為K-means算法的初始聚類數(shù)。
對于在同一類上下文信息簇中的服務(wù)運(yùn)行數(shù)據(jù),需要為其建立正常服務(wù)運(yùn)行數(shù)據(jù)集超球體。對于同一個(gè)簇,所有正常的服務(wù)運(yùn)行數(shù)據(jù)都應(yīng)該包含在超球體內(nèi)部。每個(gè)上下文信息簇的正常服務(wù)運(yùn)行數(shù)據(jù)集超球體構(gòu)建算法如算法3所示:
算法3服務(wù)運(yùn)行數(shù)據(jù)集超球體構(gòu)建算法
Step1通過上下文信息簇號a,提取具有相同簇號a的服務(wù)運(yùn)行數(shù)據(jù)集Da={h1,h2,…,hv|v∈N*},v是簇號為a的服務(wù)運(yùn)行數(shù)據(jù)集的大小。
Step2計(jì)算數(shù)據(jù)集Da中每個(gè)數(shù)據(jù)和Ca之間的歐氏距離L,獲取數(shù)據(jù)間的最大歐氏距離Lmax。
Step3以Ca為超球體球心,Ra=Lmax為超球體半徑,構(gòu)造簇a對應(yīng)的服務(wù)運(yùn)行數(shù)據(jù)集超球體Oa。
Step4結(jié)束。
經(jīng)過以上步驟,為不同的上下文信息簇建立了不同的數(shù)據(jù)特征。其特征在于:不同服務(wù)上下文信息簇下的數(shù)據(jù),若在其相應(yīng)服務(wù)運(yùn)行數(shù)據(jù)的超球體內(nèi),則該數(shù)據(jù)為正常;若在超球體外,則該數(shù)據(jù)為異常。不同簇的數(shù)據(jù)特征的建立為初步異常服務(wù)運(yùn)行數(shù)據(jù)集的二次判斷提供了依據(jù)。
3.2.2 二次異常判斷
為了提高異常判斷的準(zhǔn)確率,對于每個(gè)初步異常數(shù)據(jù),都需要獲取其上下文信息,并將其與正常服務(wù)組合數(shù)據(jù)的上下文信息進(jìn)行匹配。初步異常服務(wù)運(yùn)行數(shù)據(jù)集數(shù)據(jù)點(diǎn)的二次異常判斷如算法4所示。
算法4初步異常服務(wù)運(yùn)行數(shù)據(jù)集數(shù)據(jù)的二次異常判斷
Input:服務(wù)運(yùn)行數(shù)據(jù)集RD的初步異常運(yùn)行數(shù)據(jù)集E={xp,xq,…,xr},其中p、q、r等是初步異常服務(wù)運(yùn)行數(shù)據(jù)集E中的數(shù)據(jù)在RD數(shù)據(jù)集中的對應(yīng)序號。
Output:最終異常服務(wù)運(yùn)行數(shù)據(jù)集F。
Step1F=E。
Step2若數(shù)據(jù)集中所有數(shù)據(jù)都被處理,轉(zhuǎn)Step 6;否則,從數(shù)據(jù)集E中取出一個(gè)未經(jīng)過處理的數(shù)據(jù)xu進(jìn)行處理,其在RD數(shù)據(jù)集中對應(yīng)的序號為u,獲取初步異常數(shù)據(jù)集中下標(biāo)為u的數(shù)據(jù)的組合數(shù)據(jù)(xu,yu),計(jì)算上下文信息數(shù)據(jù)xu與正常組合數(shù)據(jù)中上下文信息的每個(gè)簇中心點(diǎn)的歐氏距離M,根據(jù)最小距離原則,得到距離最近的簇的簇號a。
Step3計(jì)算初步異常服務(wù)運(yùn)行數(shù)據(jù)xu與簇號為a的超球體中心點(diǎn)Ca的歐氏距離Lu。
Step4若Lu>Ra,則表明初步異常的服務(wù)運(yùn)行數(shù)據(jù)不在超球體內(nèi),數(shù)據(jù)遠(yuǎn)離正常,最終該數(shù)據(jù)被判斷為異常。
Step5若Lu≤Ra,表明初步異常數(shù)據(jù)的服務(wù)運(yùn)行數(shù)據(jù)在超球體內(nèi),數(shù)據(jù)正常,最終數(shù)據(jù)xu被改判為正常,從數(shù)據(jù)集F中剔除數(shù)據(jù)xu,轉(zhuǎn)Step 2。
Step6結(jié)束,輸出最終異常服務(wù)數(shù)據(jù)集F。
本文提出的方法進(jìn)行了2次異常判斷,第一次使用加權(quán)LOF算法進(jìn)行局部異常因子的計(jì)算,大于閾值的數(shù)據(jù)初步判斷為異常。對于初步異常服務(wù)運(yùn)行數(shù)據(jù),其數(shù)據(jù)的波動(dòng)可能是由上下文信息變化引起的,也有可能是真正的異常波動(dòng),因此需要對這些初步異常數(shù)據(jù)進(jìn)行二次異常判斷。首先將這些數(shù)據(jù)的上下文信息與正常服務(wù)組合數(shù)據(jù)的上下文信息簇匹配,再與最相似的簇內(nèi)的服務(wù)運(yùn)行數(shù)據(jù)超球體中心點(diǎn)求歐氏距離,若距離大于超球體半徑,則是真正的異常數(shù)據(jù);若距離小于或等于超球體半徑,則初步異常數(shù)據(jù)被認(rèn)為是正常數(shù)據(jù)。
為了初步驗(yàn)證本文方法的有效性,借助VMware 11虛擬化工具,使用OpenStack搭建基于Hadoop 2.7的云計(jì)算平臺(tái),包含3個(gè)節(jié)點(diǎn)(1個(gè)Master節(jié)點(diǎn)和2個(gè)Slave節(jié)點(diǎn))。本文使用Java語言開發(fā)了一個(gè)加權(quán)LOF結(jié)合上下文判斷的云環(huán)境中服務(wù)組合數(shù)據(jù)異常檢測原型工具,其功能是監(jiān)測MySQL服務(wù)和平臺(tái)的基礎(chǔ)設(shè)施服務(wù)的服務(wù)組合數(shù)據(jù)。
為獲取云環(huán)境中的相關(guān)服務(wù)組合數(shù)據(jù),本文將原型工具部署在Master節(jié)點(diǎn)上,采集運(yùn)行時(shí)的MySQL服務(wù)組合數(shù)據(jù)和基礎(chǔ)設(shè)施服務(wù)組合數(shù)據(jù)作為測試數(shù)據(jù)集,采集的數(shù)據(jù)內(nèi)容如表1和表2所示。
Table 1 MySQL service composition data content表1 MySQL服務(wù)組合數(shù)據(jù)內(nèi)容
Table 2 IaaS service composition data content表2 基礎(chǔ)設(shè)施服務(wù)組合數(shù)據(jù)內(nèi)容
測試數(shù)據(jù)集的MySQL服務(wù)和基礎(chǔ)設(shè)施服務(wù)組合數(shù)據(jù)的數(shù)據(jù)量都為10 080條,其中MySQL服務(wù)數(shù)據(jù)中包含815條注入的異常數(shù)據(jù),基礎(chǔ)設(shè)施服務(wù)數(shù)據(jù)包含1 260條注入的異常數(shù)據(jù)。此外,為了建立數(shù)據(jù)特征,本文分別采集了2 000條正常運(yùn)行狀態(tài)下的MySQL服務(wù)和基礎(chǔ)設(shè)施服務(wù)組合數(shù)據(jù),并按照3.2.1節(jié)中的方法分別對2種服務(wù)組合數(shù)據(jù)進(jìn)行了處理。
本文分別使用文獻(xiàn)[8]的異常檢測方法(方法1)、加權(quán)LOF異常檢測方法(方法2)、加權(quán)LOF結(jié)合上下文判斷的異常檢測方法(方法3)對MySQL服務(wù)數(shù)據(jù)和基礎(chǔ)設(shè)施服務(wù)數(shù)據(jù)進(jìn)行了對比實(shí)驗(yàn)。在同一環(huán)境中進(jìn)行多次實(shí)驗(yàn),實(shí)驗(yàn)中涉及到的初始化參數(shù)選取多次實(shí)驗(yàn)的近似最優(yōu)值,如表3和表4所示。
Table 3 Initialization parameter table of MySQL service experiment 表3 MySQL服務(wù)實(shí)驗(yàn)初始化參數(shù)表
Table 4 Initialization parameter table of IaaS service experiment 表4 基礎(chǔ)設(shè)施服務(wù)實(shí)驗(yàn)初始化參數(shù)表
使用上述方法對MySQL服務(wù)和基礎(chǔ)設(shè)施服務(wù)進(jìn)行實(shí)驗(yàn),并采用真正率TPR(True Positive Rate)、真負(fù)率TNR(True Negative Rate)、正確率CDR(Correct Detection Rate)進(jìn)行衡量[16],實(shí)驗(yàn)結(jié)果如圖2和圖3所示。
Figure 2 Experimental results of MySQL service in experiment 1圖2 實(shí)驗(yàn)1的MySQL服務(wù)實(shí)驗(yàn)結(jié)果
Figure 3 Experimental results of IaaS service in experiment 1圖3 實(shí)驗(yàn)1的基礎(chǔ)設(shè)施服務(wù)實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果表明,在kLOF和LOFthreshold等參數(shù)都保持相同的情況下,方法2對MySQL服務(wù)檢測的真正率、真負(fù)率和正確率指標(biāo)都略優(yōu)于方法1的,分別有2.94%,7.07%,5.01%的提升,對基礎(chǔ)設(shè)施服務(wù)檢測的真正率和正確率也有2.38%和1.09%的提高。在對2種服務(wù)運(yùn)行數(shù)據(jù)異常檢測的真負(fù)率上,方法3相比方法2分別提高了4.18%和6.53%。
為了進(jìn)一步驗(yàn)證本文方法在云環(huán)境真實(shí)應(yīng)用場景中的有效性,在云環(huán)境中進(jìn)行仿真實(shí)驗(yàn)。使用Java語言開發(fā)了“自行車租賃系統(tǒng)”等多個(gè)Web應(yīng)用程序并將其部署在云環(huán)境中的Master節(jié)點(diǎn)上。使用4.1節(jié)中的原型工具采集真實(shí)應(yīng)用場景中的MySQL和基礎(chǔ)設(shè)施服務(wù)組合數(shù)據(jù)各11 120條,其中MySQL服務(wù)組合數(shù)據(jù)包含915條注入異常數(shù)據(jù),基礎(chǔ)設(shè)施服務(wù)組合數(shù)據(jù)包含950條注入異常數(shù)據(jù)。為了建立數(shù)據(jù)特征,分別采集了3 000條正常運(yùn)行狀態(tài)下的MySQL和基礎(chǔ)設(shè)施服務(wù)組合數(shù)據(jù)建立數(shù)據(jù)特征。
各方法都采用實(shí)驗(yàn)1中的初始化參數(shù),再次對MySQL服務(wù)和基礎(chǔ)設(shè)施服務(wù)進(jìn)行對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖4和圖5所示。
Figure 4 Experimental results of MySQL service in experiment 2圖4 實(shí)驗(yàn)2的MySQL服務(wù)實(shí)驗(yàn)結(jié)果
Figure 5 Experimental results of IaaS service in experiment 2圖5 實(shí)驗(yàn)2的基礎(chǔ)設(shè)施服務(wù)實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)結(jié)果表明,在云環(huán)境的真實(shí)應(yīng)用場景中,方法2對MySQL服務(wù)檢測的真正率、真負(fù)率和正確率指標(biāo)都略優(yōu)于方法1的,分別有3.09%,7.86%,5.47%的提升,方法2在對基礎(chǔ)設(shè)施服務(wù)檢測的真正率和正確率方面略優(yōu)于方法1,分別有2.07%和0.66%的提升。因?yàn)榉椒?在計(jì)算數(shù)據(jù)間的歐氏距離時(shí)考慮了服務(wù)運(yùn)行數(shù)據(jù)各維度的不確定性,提高了異常檢測的準(zhǔn)確率。此外,在異常檢測的真正率方面,方法3和方法2相等,原因是2種方法在初次異常判斷時(shí)流程相同,不同的是前者在二次異常判斷時(shí)使用了上下文信息對初步異常服務(wù)運(yùn)行數(shù)據(jù)進(jìn)行了二次判斷,降低了誤報(bào)率,從而提升了真負(fù)率。因此,使用方法3對2種服務(wù)運(yùn)行數(shù)據(jù)異常檢測后的真負(fù)率比方法2分別提高了3.56%和5.44%。通過2次實(shí)驗(yàn)表明,本文方法在云環(huán)境真實(shí)應(yīng)用場景中也具有一定的可行性。
本文提出了一種加權(quán)LOF結(jié)合上下文判斷的云環(huán)境中服務(wù)運(yùn)行數(shù)據(jù)異常檢測方法,首先考慮服務(wù)運(yùn)行數(shù)據(jù)各維度屬性存在的不確定性不同,對LOF算法進(jìn)行了改進(jìn),使用加權(quán)LOF算法進(jìn)行服務(wù)運(yùn)行數(shù)據(jù)的初次異常判斷。然后,通過處理服務(wù)組合數(shù)據(jù)建立數(shù)據(jù)特征,綜合考慮上下文信息后對初步異常服務(wù)運(yùn)行數(shù)據(jù)進(jìn)行二次異常判斷。但是,本文還存在不足,加權(quán)LOF結(jié)合上下文判斷的云環(huán)境中服務(wù)運(yùn)行數(shù)據(jù)異常檢測方法相比加權(quán)LOF異常檢測方法在2種服務(wù)運(yùn)行數(shù)據(jù)異常檢測的真正率方面沒有提高。因?yàn)檫M(jìn)行初次異常判斷時(shí),判斷得到的正常數(shù)據(jù)集中有可能存在異常數(shù)據(jù),而在本文方法中沒有對這些正常數(shù)據(jù)集中的異常數(shù)據(jù)進(jìn)行深入判斷,從而將這些異常數(shù)據(jù)漏報(bào)了,下一步需要對此繼續(xù)進(jìn)行研究。