劉 虹,滕 濱,張 琳,郭志斌
(中國移動通信集團有限公司 信息技術(shù)中心,北京 100032)
隨著國內(nèi)企業(yè)數(shù)智化轉(zhuǎn)型的深入推進,企業(yè)私有云的設(shè)備規(guī)模呈現(xiàn)持續(xù)增加的趨勢,作為中國移動內(nèi)部支撐系統(tǒng)的云化基礎(chǔ)設(shè)施,一級云資源池的規(guī)模持續(xù)增加,運營和運維工作面臨著越來越大的壓力。從業(yè)界經(jīng)驗來看,運維人員數(shù)量無法隨著設(shè)備數(shù)量線性增加,每萬臺服務(wù)器運維人員的數(shù)量持續(xù)下降,因此亟需引入智能化運維手段,解決人力不足的矛盾。同時,也需要借助智能化工具提高資源的可用性,提升租戶的使用體驗。為此,中國移動結(jié)合IT 云自身特點,梳理了一級IT 云的智能運維場景體系,并選取典型場景進行了應(yīng)用與實踐。本文基于中國移動一級IT 云運維團隊的切實需求,綜合評估業(yè)界關(guān)鍵技術(shù)成熟度和一級IT云的基礎(chǔ)運維數(shù)據(jù)質(zhì)量,選擇以下兩個場景進行分析和研究:
(1)智能化的指標異常檢測
通過機器學(xué)習(xí)算法,從監(jiān)控指標的歷史數(shù)據(jù)中識別指標的特征,并基于指標特征生成指標的個性化異常檢測模型[1]。本場景希望解決傳統(tǒng)固定閾值的檢測精度不足的問題,并緩解人工設(shè)置閾值的決策困境,降低工作量。
(2)智能化的告警關(guān)聯(lián)與溯源
通過機器學(xué)習(xí)算法,從海量歷史告警中學(xué)習(xí)告警之間的相關(guān)性,結(jié)合網(wǎng)絡(luò)拓撲結(jié)構(gòu)及專家標注,實現(xiàn)告警的智能關(guān)聯(lián)壓制(聚合),并推斷告警根源。本場景希望提升運維人員在面對故障引起的大量告警時,能夠快速定位問題,提高故障恢復(fù)的速度。
面對一級IT 云全網(wǎng)資源池設(shè)備10 萬+、指標數(shù)量千萬級的實際情況(典型的服務(wù)器設(shè)備有近百個監(jiān)控的指標,典型的網(wǎng)絡(luò)設(shè)備則有數(shù)百個監(jiān)控的指標),事實上,已經(jīng)無法依靠人工為每個設(shè)備的指標都配置合適的閾值。況且,設(shè)備上的監(jiān)控指標,其波形因其承載的業(yè)務(wù)不同而千變?nèi)f化,人工設(shè)置的固定閾值無法適應(yīng)指標的動態(tài)性,容易產(chǎn)生誤報或者漏報。
因此引入人工智能算法,實現(xiàn)智能化的指標異常檢測的需求應(yīng)運而生,該場景的總體工作流程如圖1 所示。本文著重介紹周期性指標的分析算法。
圖1 指標異常檢測流程
1.1.1 數(shù)據(jù)預(yù)處理
原始的指標數(shù)據(jù)往往包含噪聲,常見的有周期錯位、數(shù)據(jù)缺失/極值等,會影響模型的訓(xùn)練。預(yù)處理負責(zé)對各種異常情況進行對應(yīng)的處理,得到標準的、干凈的、連續(xù)的數(shù)據(jù),供給特征分析使用。
1.1.2離群點處理
離群點是明顯背離指標分布的點,離群點檢測主要采用LOF 局部異常因子算法[2-3],識別出離群點后,可以采用平均數(shù)填充、中數(shù)填充、重復(fù)值最多的數(shù)填充、丟棄等策略。
1.1.3 數(shù)據(jù)轉(zhuǎn)換
數(shù)據(jù)轉(zhuǎn)換是根據(jù)指標特征將數(shù)據(jù)進行轉(zhuǎn)換或歸并,從而構(gòu)成一個適合特定特征分析的描述形式。
數(shù)據(jù)轉(zhuǎn)換主要包括3 種策略:
(1)標準化,標準化給定數(shù)據(jù)集中所有數(shù)值屬性的值到一個0 均值和單位方差的正態(tài)分布;
(2)歸一化,規(guī)范化給定數(shù)據(jù)集中的所有數(shù)值屬性值,類屬性除外,結(jié)果值默認在區(qū)間[0,1];
(3)離散化,分別進行監(jiān)督和無監(jiān)督的數(shù)值屬性的離散化,用來離散數(shù)據(jù)集中的一些數(shù)值屬性到分類屬性。
1.1.4 識別周期性
首先對原始數(shù)據(jù)K={v1,v2,…,vn}做傅里葉變換,獲取其振幅最大的分量作為備選周期T。將數(shù)據(jù)按照備選周期T 進行切分,形成N 個子序列:K1~Kn。
任選其中的一個子序列(如K1)作為基準,計算其與其他N-1 個子序列的皮爾遜系數(shù),并求均值。皮爾遜系數(shù)用于度量兩個變量X 和Y 之間的相關(guān)性,是非常成熟的算法,不再贅述[4-5]。
若Kn的皮爾遜系數(shù)均值達不到參數(shù)配置的閾值要求,則輪換Kn+1為基準,直到找出滿足閥值要求的子序列。如果能夠找到子序列Km滿足要求,則判定該指標具有周期性特征,否則判定該指標不具備周期性特征。
1.1.5 識別節(jié)假日效應(yīng)
如文獻[6]所述,時間序列數(shù)據(jù)應(yīng)充分考慮假日效應(yīng),本文首先將上一步生成的子序列按照其所在日期是否為假日分為兩組,記為Cw和Ch。然后,在Cw和Ch上分別運行主成分分析(PCA)[7-8],各選定一個最具代表性的子序列,記為Kw和Kh,通過計算它們之間的皮爾遜系數(shù)來判定曲線的波形是否相似。如果兩者波形非常相似,那么說明該指標不具備節(jié)假日效應(yīng),反之則具有節(jié)假日效應(yīng)。
經(jīng)過數(shù)據(jù)預(yù)處理,可以得到一個(無假日效應(yīng))時或者兩個(有假日效應(yīng)時)基于歷史數(shù)據(jù)的疊加圖,將一天的數(shù)據(jù)按照采集周期分成N 個時間點,每個時間點相當于一個桶,將歷史數(shù)據(jù)分別放到每個桶里,然后計算出每個桶的均值、最大值和最小值,即為該時刻的基本基線值。將每個時刻的最大值、最小值分別連接起來,就得到該模型周期的基本基線。直接計算得出的基線非常生硬且非常敏感,因此系統(tǒng)提供一些參數(shù)來降低基線的敏感度,防止造成告警誤報。
通過分析得到周期性指標的動態(tài)基線模型后,還需要對模型進行測試以驗證本文的模型是否準確,如果不準確可以隨時調(diào)整參數(shù)對模型進行微調(diào)。對于短暫的基線偏離,如果認為這個點的短暫偏離是正?,F(xiàn)象,可以調(diào)整參數(shù),以修改基線的敏感度。
選擇數(shù)據(jù)中心作為試點,進行“智能化的指標異常檢測”場景相關(guān)工具的落地驗證。
1.4.1 特征識別可靠性評估
驗證環(huán)節(jié)邀請了三位一線運維專家對指標特征進行評估,并與算法的智能識別結(jié)果進行對比,部分結(jié)果如表1 所示。
表1 指標特征識別與專家評估意見
表1 中特征置信度最高的值字體加下劃線并加粗,代表系統(tǒng)自動選定的特征。其中周期特征指曲線以相對固定的周期重復(fù)類似的形態(tài),趨勢特征指曲線呈現(xiàn)遞增或者遞減的形態(tài),平穩(wěn)特征是指指標在一個箱體內(nèi)隨機振蕩。
從表1 中可以看到,當人工智能識別出的指標特征置信度大于80%時,與專家的評估意見高度吻合(如第1,2,3,5 行);而當指標特征置信度小于60%時(如第4,6行),可以認為指標不具備明顯特征。
1.4.2 效率提升情況
本次試驗接入的1 081 臺設(shè)備,按照其中有5%的網(wǎng)絡(luò)設(shè)備來算,可得這些設(shè)備的指標總數(shù)有:(1 081×0.05)×500+(1 081×0.95)×80=27 025+82 156≈11 萬(個)。
如果通過傳統(tǒng)手工方式設(shè)置監(jiān)控策略,即便每個指標耗費運維人員1 min 的時間(該估計已經(jīng)非常樂觀),則共需:110 000/60/8/22≈10.4(人月)。
作為對比,本文在20 個設(shè)備上做了一次特征識別,選擇了2019 年3 月份的數(shù)據(jù)作為訓(xùn)練集,并選擇了4月第一周的數(shù)據(jù)作為測試集。這20 個設(shè)備共有3 169 個有效指標,特征識別結(jié)果的分布如圖2 所示。
系統(tǒng)自動推薦了17 個設(shè)備上的356 個特征置信度比較高的指標供運維人員做確認,占總指標數(shù)的11.23%,系統(tǒng)運行耗時間為10 min,可以忽略。由圖2 可見,通過引入智能分析,將指標梳理這項機械性工作的工作量降低了90%左右,使得一項看似不可能完成的工作變成了可能。
圖2 指標特征識別結(jié)果-特征分布
在云計算環(huán)境中,業(yè)務(wù)系統(tǒng)或設(shè)備間存在各種依賴關(guān)系,因此在系統(tǒng)內(nèi)或者系統(tǒng)間就會存在故障關(guān)聯(lián),也就是當系統(tǒng)中一個模塊或者設(shè)備發(fā)生告警時,與之關(guān)聯(lián)的模塊或設(shè)備也往往發(fā)生告警[9-10]。
如文獻[11]所述的案例法,在中國移動一級IT 云資源池在10 萬+的設(shè)備級別上極難開展,需要基于歷史告警數(shù)據(jù)學(xué)習(xí)告警之間的相關(guān)性,實現(xiàn)告警的智能壓制、推斷告警根源,有效提高告警有效性。
告警溯源分析工作流程的要點在于:
(1)在告警數(shù)據(jù)集上,基于告警數(shù)據(jù)的特點,運行多次的全量基礎(chǔ)掃描,并基于基礎(chǔ)掃描的結(jié)果做定點的深度掃描,從而發(fā)現(xiàn)不同告警的相關(guān)性;
(2)引入性能監(jiān)控指標數(shù)據(jù)集,在性能監(jiān)控指標上運行指標特征提取[12]和相似性分析[13-14]算法,基于指標之間的相似性推斷設(shè)備、組件之間的關(guān)聯(lián)性;
(3)合并告警和指標中發(fā)現(xiàn)的關(guān)聯(lián)關(guān)系,共同形成最終模型。
以圖3 所示的5 條告警數(shù)據(jù)為例,存在以下問題:
圖3 告警數(shù)據(jù)示例
(1)如果采用單次時間切片,A1 和A2 兩個告警的第一次成對出現(xiàn)會被切到兩個時間片中,從而變成兩個不相關(guān)的告警,從而降低了結(jié)果的置信度。
(2)告警是有生命周期的,當兩個故障具有相關(guān)性時,除了關(guān)注它們同時發(fā)生,還要關(guān)注是否同時清除。如A3和A4,因為沒有同時清除,可以據(jù)此降低其關(guān)聯(lián)的置信度。
(3)對于頻繁發(fā)生的告警,會更多地關(guān)聯(lián)到其他告警,但這些關(guān)聯(lián)關(guān)系中有些是無效的[15]。基礎(chǔ)掃描為了提高敏感性,參數(shù)設(shè)置得比較寬泛,使得無效關(guān)系被納入掃描結(jié)果,如A5 和A3,實際上它們只是偶然碰到一起了。
針對以上3 個問題,本文在告警數(shù)據(jù)集上設(shè)計了5次掃描,前4 次為基礎(chǔ)掃描,如表2 所示。第5 次為定點深度掃描,其算法流程如圖4 所示。
表2 基礎(chǔ)掃描過程
圖4 定點深度掃描算法
在完成4 次基礎(chǔ)掃描后,需要對掃描結(jié)果進行一個初步的合并。假設(shè)4 次掃描結(jié)果所得關(guān)聯(lián)關(guān)系集合為Ri(i=1,2,3,4),則基礎(chǔ)掃描的合并結(jié)果記為Rbase:
然后,在Rbase上應(yīng)用篩選算法f1來刪除置信度不符合要求的關(guān)系,應(yīng)用篩選算法f2來刪除支持度不符合要求的關(guān)系,得到過濾后的結(jié)果集,記為RfBase。
其中,thres 是通過界面配置的算法參數(shù)值。
具體到在性能監(jiān)控指標數(shù)據(jù)集上的計算,其思路基于如下事實:告警是不完備數(shù)據(jù)集,因為不是所有的告警都一定發(fā)生過;監(jiān)控指標是相對完備的數(shù)據(jù)集,如圖5所示。
圖5 指標數(shù)據(jù)集圖
圖5 中,T 為指標采集周期。正常情況下,所有指標在每個采集周期均有數(shù)據(jù),但只有個別點位會發(fā)生告警,因此指標數(shù)據(jù)比告警數(shù)據(jù)的完備度高。
從文獻[16]可知,當兩個設(shè)備、組件具有業(yè)務(wù)上的相關(guān)性時,一定可以表現(xiàn)為兩個相關(guān)對象上某些監(jiān)控指標的聯(lián)動,包括同向上升、下降,逆向上升、下降,或者同周期波動。
例如,用戶通過Web 界面來向系統(tǒng)發(fā)出請求,當用戶的請求數(shù)變化時,能觀察到:tomcat 進程所占CPU、數(shù)據(jù)庫查詢量、兩臺主機的負載、兩個網(wǎng)絡(luò)接口鏈路上的網(wǎng)絡(luò)流量和用戶的請求數(shù)有著趨勢相同的變化。
根據(jù)以上分析可知,在性能監(jiān)控指標數(shù)據(jù)集上的關(guān)系挖掘,就是通過比對所有指標在過去一段時間里的趨勢相關(guān)性,確定指標之間的相關(guān)的置信度,從而推斷設(shè)備、組件之間的關(guān)系,與告警發(fā)現(xiàn)的關(guān)系共同形成告警壓制、溯源所依賴的關(guān)系網(wǎng)。
同時,本文引入了“主成分分析(PCA)”和“曲線特征提取”兩步,來兼顧計算量和計算精度。
對于曲線的特征提取,本文采取斜率突變法。通過尋找合適的斜率突變點,由連接這些突變點的直線來近似擬合原始曲線,從而在保持原始曲線整體趨勢特征的前提下,降低局部數(shù)據(jù)噪聲。
針對每個設(shè)備、組件所獲得的指標特征數(shù)據(jù),需要進一步通過主成分分析法來進行數(shù)據(jù)降維。將一個設(shè)備、組件上的N 個指標看作是一個N 維的數(shù)據(jù)集,通過主成分分析后,篩選出1-M 個具有代表性的指標參與最終的運算。
在分別完成告警數(shù)據(jù)集和性能指標數(shù)據(jù)集上的關(guān)聯(lián)關(guān)系計算后,將兩組數(shù)據(jù)進行合并,形成最終的結(jié)果。
選擇某數(shù)據(jù)中心作為試點,實現(xiàn)“智能化告警關(guān)聯(lián)和溯源”場景研發(fā)及落地驗證。對基于智能關(guān)聯(lián)的告警溯源評價標準為:
(1)壓縮比,指在單位時間內(nèi)工具匯報的根源告警數(shù)/參與聚合的原始告警數(shù);
(2)精確率,指在單位時間內(nèi)對應(yīng)實際故障的根源告警數(shù)/工具匯報的根源告警數(shù);
(3)召回率,指在單位時間內(nèi)對應(yīng)實際故障的根源告警數(shù)/故障總數(shù)。
目前本文使用的測試集包含原始告警8 757 條,經(jīng)關(guān)聯(lián)分析后,對其中4 590 條告警進行了壓制,推薦了69 個根源告警/風(fēng)暴,告警壓縮比例為55.7%,告警根源分析準確率約50%,召回率約60%,有效提高了告警的精度和有效性。
在云計算和大數(shù)據(jù)快速發(fā)展的背景下,本文研究基于機器學(xué)習(xí)的智能化運維工具,將大數(shù)據(jù)技術(shù)、機器學(xué)習(xí)技術(shù)應(yīng)用于中國移動一級IT 云的運營運維工作中,可以通過機器學(xué)習(xí)的方法掌握運維數(shù)據(jù)之中的規(guī)律,自動生成更準確的閾值或通過異常模式的識別判斷異常的發(fā)生,從而以機器決策分析代替?zhèn)鹘y(tǒng)的人工經(jīng)驗決策;通過處理和分析海量的運維數(shù)據(jù)、運維大數(shù)據(jù)的應(yīng)用,企業(yè)能夠提前發(fā)現(xiàn)IT 系統(tǒng)中潛在的問題和風(fēng)險,將被動響應(yīng)式的風(fēng)險處理方式變?yōu)樽詣有苑烙?;通過機器學(xué)習(xí)的方式,在異常監(jiān)測、告警關(guān)聯(lián)壓制、容量預(yù)測等環(huán)節(jié)發(fā)揮效用,提高運維的效率和質(zhì)量。
根據(jù)智能運維管理的發(fā)展應(yīng)用和IT 云的運維管理需求,后續(xù)的應(yīng)用重點為:探索基于智能預(yù)測的主動運維,基于模型自動預(yù)測、預(yù)警,實現(xiàn)對系統(tǒng)故障的提前感知,并可以將預(yù)警與自動處理機制對接,實現(xiàn)運維信息立體交換,讓運維管理員獲得充分的運維關(guān)聯(lián)信息,從而對潛在故障進行恢復(fù)或優(yōu)化;此外,啟動大數(shù)據(jù)挖掘研究,不僅只針對運維數(shù)據(jù)進行分析,持續(xù)優(yōu)化完善業(yè)務(wù)數(shù)據(jù)整合和動態(tài)關(guān)系建模,將現(xiàn)在分散在各個系統(tǒng)中的運維信息進行有效的整合與利用。