閆祎穎,何云瑞,陳 亮,王 寧,李 揚,鄭思遠(yuǎn)
(國家電網(wǎng)有限公司信息通信分公司,北京 100761)
隨著大數(shù)據(jù)、云計算、人工智能等新興技術(shù)的快速發(fā)展,電力行業(yè)信息系統(tǒng)建設(shè)也在不斷深化。系統(tǒng)數(shù)量在增多且架構(gòu)日趨復(fù)雜,一次大的異?;蚬收贤赡軓木W(wǎng)絡(luò)、安全、系統(tǒng)、應(yīng)用等多層次監(jiān)控渠道產(chǎn)生大量告警事件,而這些告警之間關(guān)聯(lián)復(fù)雜,運維人員無法快速定位故障原因,導(dǎo)致業(yè)務(wù)無法快速恢復(fù)。
目前,國內(nèi)外研究系統(tǒng)故障定位的技術(shù)主要基于故障決策樹、神經(jīng)網(wǎng)絡(luò)兩個方面。文獻(xiàn)[1-2]通過研究故障決策樹來構(gòu)建故障診斷系統(tǒng),其中文獻(xiàn)[2]同時結(jié)合CMDB進(jìn)行了研究。文獻(xiàn)[3]詳細(xì)介紹了CMDB的構(gòu)建。文獻(xiàn)[4-5]則提出基于神經(jīng)網(wǎng)絡(luò)的故障診斷方法。
本文提出一種基于CMDB的信息系統(tǒng)故障定位技術(shù),通過將CMDB中配置項之間的關(guān)聯(lián)關(guān)系與BP神經(jīng)網(wǎng)絡(luò)技術(shù)相結(jié)合,推理出信息系統(tǒng)的故障根因。
基于CMDB的故障定位技術(shù)的架構(gòu)自底向上分為數(shù)據(jù)采集、數(shù)據(jù)處理以及數(shù)據(jù)應(yīng)用三層,如圖1所示。
圖1 基于CMDB的故障定位技術(shù)的架構(gòu)設(shè)計
數(shù)據(jù)采集層實現(xiàn)監(jiān)控平臺對運維對象的數(shù)據(jù)采集。運維對象包括但不限于硬件設(shè)備、網(wǎng)絡(luò)設(shè)備、中間件、數(shù)據(jù)庫、應(yīng)用服務(wù)等。
數(shù)據(jù)處理層實現(xiàn)對數(shù)據(jù)的獲取、編碼、分析推理以及處置。該層核心為CMDB、故障知識庫以及推理機(jī)。CMDB數(shù)據(jù)采集層采集到的數(shù)據(jù)匯總,并提供相關(guān)對象的配置屬性和關(guān)系,為故障定位提供基礎(chǔ)。故障知識獲取模塊負(fù)責(zé)將這些數(shù)據(jù)轉(zhuǎn)換成故障知識庫可以識別的形式。而故障知識庫模塊通過BP神經(jīng)網(wǎng)絡(luò)模型對獲取的數(shù)據(jù)進(jìn)行分析,并通過故障推理機(jī)調(diào)用網(wǎng)絡(luò)模型來進(jìn)行推理,直到得到結(jié)論,推理所得的結(jié)果可以向上層提供故障定位以及預(yù)測功能。
數(shù)據(jù)應(yīng)用層主要是對故障定位功能提供面向用戶的接口,同時可以進(jìn)行故障預(yù)測以及故障自愈的功能。當(dāng)定位出故障根因時,用戶可以在故障自愈模塊針對定位出的故障根因,查詢是否可以一鍵處置。若可以一鍵處置,則執(zhí)行一鍵處置腳本庫中的相應(yīng)腳本,從而實現(xiàn)故障自愈。
構(gòu)建一個成功的CMDB,重點在于CMDB模型的頂層設(shè)計,本章將針對CMDB的配置項分類、屬性以及關(guān)系設(shè)計進(jìn)行深入剖析。
關(guān)于配置項應(yīng)遵循精而不多的原則。本文為配置項設(shè)計了四級分類,由小到大,精度依次增加?;A(chǔ)設(shè)備分類部分具體示例如表1所示。
表1 部分配置項分類示例
確定配置項屬性時,應(yīng)針對每一個配置項分類來設(shè)計,每個層級之間的屬性是具有繼承性的。同時,需根據(jù)邏輯性劃分,如管理屬性、技術(shù)屬性等。
配置項關(guān)系是CMDB的重要價值體現(xiàn)之一,當(dāng)故障發(fā)生時,可以通過配置項關(guān)系,準(zhǔn)確快速的掌握相關(guān)信息,定位故障根因,評估故障影響范圍,從而快速恢復(fù)業(yè)務(wù)。配置項關(guān)系大致包括包含、屬于、運行在、安裝在、連接等。圖2為一個業(yè)務(wù)系統(tǒng)的CMBD配置項關(guān)系示例。
故障知識獲取模塊用于將知識轉(zhuǎn)換成一種神經(jīng)網(wǎng)絡(luò)可以識別的形式。本章介紹了基于規(guī)則的專家系統(tǒng)常用到的產(chǎn)生式規(guī)則,在此基礎(chǔ)上將知識轉(zhuǎn)換成神經(jīng)網(wǎng)絡(luò)存儲需要的數(shù)值形式。
產(chǎn)生式規(guī)則的一般形式為A→B或If A Then B。在信息系統(tǒng)的故障定位場景中,前提A為當(dāng)前所有監(jiān)控狀態(tài),結(jié)論B為故障根因。監(jiān)控狀態(tài)可以有多個,但根因只有一個,因此可表示為If a1^a2^…^anThen b。
知識通過產(chǎn)生式表達(dá)后,需要轉(zhuǎn)化成數(shù)值的形式存儲在神經(jīng)網(wǎng)絡(luò)中。設(shè)事實的域為U,U={ fi|i=1,2,…,n}, fi為第i個事實,n為事實的總數(shù),本文中為信息系統(tǒng)監(jiān)控總數(shù),也為二進(jìn)制編碼的碼長。結(jié)論的二進(jìn)制編碼碼長可根據(jù)故障根因個數(shù)進(jìn)行設(shè)定,本文設(shè)定其與前提的碼長相等。
圖2 CMBD配置項關(guān)系示例
監(jiān)控狀態(tài)分為兩類,正常與異常,分別用0和1表示。假設(shè)某個系統(tǒng)由2個應(yīng)用節(jié)點、2個數(shù)據(jù)庫服務(wù)器以及一臺負(fù)載均衡設(shè)備組成,則其部分監(jiān)控及狀態(tài)如表2所示,故障根因如表3所示。
表2 某系統(tǒng)部分監(jiān)控及狀態(tài)
表3 某系統(tǒng)故障根因
采用如上提出的形式表示知識,如下例所示:
IF 數(shù)據(jù)庫實例1無法連接 and 數(shù)據(jù)庫實例2無法連接 and 應(yīng)用節(jié)點1端口號為7100 HTTP無法連接 and 應(yīng)用節(jié)點2端口號為7100 HTTP無法連接 and 系統(tǒng)健康運行時長指標(biāo)異常 Then 數(shù)據(jù)庫會話連接數(shù)過多。
經(jīng)過轉(zhuǎn)化為:0011110001→1000000000,將數(shù)值形式輸入到BP神經(jīng)網(wǎng)絡(luò),對知識進(jìn)行存儲。
故障知識庫是用來存儲知識的,本文使用BP神經(jīng)網(wǎng)絡(luò)來構(gòu)建故障知識庫。
BP神經(jīng)網(wǎng)絡(luò)是一種多層的前饋神經(jīng)網(wǎng)絡(luò),其主要特點為前向傳播信號,反向傳播誤差。
如圖3所示為一個典型的三層BP神經(jīng)網(wǎng)絡(luò)模型。第一階段是信號的前向傳播,從輸入層經(jīng)過隱含層,最后到達(dá)輸出層;第二階段是誤差的反向傳播,從輸出層到隱含層,最后到輸入層,依次調(diào)節(jié)隱含層到輸出層以及輸入層到隱含層的連接權(quán)和閾值。
圖3 三層BP神經(jīng)網(wǎng)絡(luò)模型
假設(shè)輸入層的節(jié)點為n個,隱含層的節(jié)點為m個,輸出層的節(jié)點為z個,第k個輸入樣本及對應(yīng)的期望輸出為Xk以及Yk,則BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法步驟如下。
第一步,給出輸入層到隱含層以及隱含層到輸出層的連接權(quán)Wih、Vho,隱含層的閾值Th,并隨機(jī)給輸出層的激活值To賦一個(0,1)間的較小值。
第二步,輸入樣本Xk=( x1(k), xz(k),…, xn(k)),期望輸出為Yk=( y1(k), yz(k),…, yz(k)),將x1(k)輸入,依次計算:
其中,Hh為隱含層節(jié)點的輸出函數(shù),I0為輸出層節(jié)點輸出函數(shù)。
第三步,計算I0與之間的誤差a0:
第四步,將誤差bh反向分配至隱含層的節(jié)點:
第五步,修正連接權(quán)Wih、Vho,α,β為學(xué)習(xí)率:
第六步,調(diào)整閾值Th、To:
第七步,若a0足夠小或者為零時,停止學(xué)習(xí),否則選擇下一個樣本,從第二步開始迭代執(zhí)行。
結(jié)合章節(jié)3.3中提出的知識表示方法,則章節(jié)3.3中某系統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)模型輸入層與輸出層均為10個神經(jīng)元。隱含層節(jié)點個數(shù)根據(jù)經(jīng)驗公式來確定,其中m與n為輸入層與輸出層神經(jīng)元個數(shù),a為1~10的調(diào)節(jié)常數(shù),則不同個數(shù)的隱含層訓(xùn)練情況如表4所示。因此,隱含層個數(shù)可選11或13,本文選擇11個,則某系統(tǒng)的BP網(wǎng)絡(luò)模型為10-11-10結(jié)構(gòu)。將某系統(tǒng)故障的樣本集放入訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)模型進(jìn)行測試,結(jié)果如表5所示,最大誤差為0.000 3。
表4 不同個數(shù)隱含層訓(xùn)練情況
表5 某信息系統(tǒng)BP神經(jīng)網(wǎng)絡(luò)模型測試結(jié)果
推理機(jī)制大致分為3種,正向推理機(jī)制、反向推理機(jī)制以及混合推理機(jī)制。本文選用正向推理機(jī)制來進(jìn)行推理。
正向推理機(jī)制是由事實推出結(jié)論的過程,具體推論過程大致如下。
第1步:將CMDB獲取到的監(jiān)控告警以及相關(guān)信息作為初始信息放入動態(tài)事實庫。
第2步:將初始事實作為BP神經(jīng)網(wǎng)絡(luò)模型的輸入。
第3步:用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行推理。若推理生成新知識,則更新知識庫。
第4步:判斷結(jié)果是否為故障根因,若是,則輸出根因;否則,進(jìn)行第5步。
第5步:若CMDB中有相關(guān)信息可以補充新事實,則將新事實與初始事實作為輸入,跳轉(zhuǎn)至第3步;否則,失敗退出。
本文研究基于CMDB的信息系統(tǒng)故障定位相關(guān)技術(shù),對CMDB的配置項分類、屬性以及關(guān)系進(jìn)行了深入研究,在此基礎(chǔ)之上分析BP神經(jīng)網(wǎng)絡(luò)算法,結(jié)合BP神經(jīng)網(wǎng)絡(luò)模型實現(xiàn)信息系統(tǒng)的故障根因定位,并對信息系統(tǒng)樣本集進(jìn)行了測試,實現(xiàn)了故障根因快速定位,提高了業(yè)務(wù)恢復(fù)效率。同時,結(jié)合一鍵處置功能實現(xiàn)了故障自愈。