閆祎穎,何云瑞,陳 亮,王 寧,李 揚,鄭思遠
(國家電網有限公司信息通信分公司,北京 100761)
隨著大數據、云計算、人工智能等新興技術的快速發展,電力行業信息系統建設也在不斷深化。系統數量在增多且架構日趨復雜,一次大的異?;蚬收贤赡軓木W絡、安全、系統、應用等多層次監控渠道產生大量告警事件,而這些告警之間關聯復雜,運維人員無法快速定位故障原因,導致業務無法快速恢復。
目前,國內外研究系統故障定位的技術主要基于故障決策樹、神經網絡兩個方面。文獻[1-2]通過研究故障決策樹來構建故障診斷系統,其中文獻[2]同時結合CMDB進行了研究。文獻[3]詳細介紹了CMDB的構建。文獻[4-5]則提出基于神經網絡的故障診斷方法。
本文提出一種基于CMDB的信息系統故障定位技術,通過將CMDB中配置項之間的關聯關系與BP神經網絡技術相結合,推理出信息系統的故障根因。
基于CMDB的故障定位技術的架構自底向上分為數據采集、數據處理以及數據應用三層,如圖1所示。

圖1 基于CMDB的故障定位技術的架構設計
數據采集層實現監控平臺對運維對象的數據采集。運維對象包括但不限于硬件設備、網絡設備、中間件、數據庫、應用服務等。
數據處理層實現對數據的獲取、編碼、分析推理以及處置。該層核心為CMDB、故障知識庫以及推理機。CMDB數據采集層采集到的數據匯總,并提供相關對象的配置屬性和關系,為故障定位提供基礎。故障知識獲取模塊負責將這些數據轉換成故障知識庫可以識別的形式。而故障知識庫模塊通過BP神經網絡模型對獲取的數據進行分析,并通過故障推理機調用網絡模型來進行推理,直到得到結論,推理所得的結果可以向上層提供故障定位以及預測功能。
數據應用層主要是對故障定位功能提供面向用戶的接口,同時可以進行故障預測以及故障自愈的功能。當定位出故障根因時,用戶可以在故障自愈模塊針對定位出的故障根因,查詢是否可以一鍵處置。若可以一鍵處置,則執行一鍵處置腳本庫中的相應腳本,從而實現故障自愈。
構建一個成功的CMDB,重點在于CMDB模型的頂層設計,本章將針對CMDB的配置項分類、屬性以及關系設計進行深入剖析。
關于配置項應遵循精而不多的原則。本文為配置項設計了四級分類,由小到大,精度依次增加?;A設備分類部分具體示例如表1所示。

表1 部分配置項分類示例
確定配置項屬性時,應針對每一個配置項分類來設計,每個層級之間的屬性是具有繼承性的。同時,需根據邏輯性劃分,如管理屬性、技術屬性等。
配置項關系是CMDB的重要價值體現之一,當故障發生時,可以通過配置項關系,準確快速的掌握相關信息,定位故障根因,評估故障影響范圍,從而快速恢復業務。配置項關系大致包括包含、屬于、運行在、安裝在、連接等。圖2為一個業務系統的CMBD配置項關系示例。
故障知識獲取模塊用于將知識轉換成一種神經網絡可以識別的形式。本章介紹了基于規則的專家系統常用到的產生式規則,在此基礎上將知識轉換成神經網絡存儲需要的數值形式。
產生式規則的一般形式為A→B或If A Then B。在信息系統的故障定位場景中,前提A為當前所有監控狀態,結論B為故障根因。監控狀態可以有多個,但根因只有一個,因此可表示為If a1^a2^…^anThen b。
知識通過產生式表達后,需要轉化成數值的形式存儲在神經網絡中。設事實的域為U,U={ fi|i=1,2,…,n}, fi為第i個事實,n為事實的總數,本文中為信息系統監控總數,也為二進制編碼的碼長。結論的二進制編碼碼長可根據故障根因個數進行設定,本文設定其與前提的碼長相等。

圖2 CMBD配置項關系示例
監控狀態分為兩類,正常與異常,分別用0和1表示。假設某個系統由2個應用節點、2個數據庫服務器以及一臺負載均衡設備組成,則其部分監控及狀態如表2所示,故障根因如表3所示。

表2 某系統部分監控及狀態

表3 某系統故障根因
采用如上提出的形式表示知識,如下例所示:
IF 數據庫實例1無法連接 and 數據庫實例2無法連接 and 應用節點1端口號為7100 HTTP無法連接 and 應用節點2端口號為7100 HTTP無法連接 and 系統健康運行時長指標異常 Then 數據庫會話連接數過多。
經過轉化為:0011110001→1000000000,將數值形式輸入到BP神經網絡,對知識進行存儲。
故障知識庫是用來存儲知識的,本文使用BP神經網絡來構建故障知識庫。
BP神經網絡是一種多層的前饋神經網絡,其主要特點為前向傳播信號,反向傳播誤差。
如圖3所示為一個典型的三層BP神經網絡模型。第一階段是信號的前向傳播,從輸入層經過隱含層,最后到達輸出層;第二階段是誤差的反向傳播,從輸出層到隱含層,最后到輸入層,依次調節隱含層到輸出層以及輸入層到隱含層的連接權和閾值。

圖3 三層BP神經網絡模型
假設輸入層的節點為n個,隱含層的節點為m個,輸出層的節點為z個,第k個輸入樣本及對應的期望輸出為Xk以及Yk,則BP神經網絡學習算法步驟如下。
第一步,給出輸入層到隱含層以及隱含層到輸出層的連接權Wih、Vho,隱含層的閾值Th,并隨機給輸出層的激活值To賦一個(0,1)間的較小值。
第二步,輸入樣本Xk=( x1(k), xz(k),…, xn(k)),期望輸出為Yk=( y1(k), yz(k),…, yz(k)),將x1(k)輸入,依次計算:


其中,Hh為隱含層節點的輸出函數,I0為輸出層節點輸出函數。
第三步,計算I0與之間的誤差a0:

第四步,將誤差bh反向分配至隱含層的節點:

第五步,修正連接權Wih、Vho,α,β為學習率:

第六步,調整閾值Th、To:

第七步,若a0足夠小或者為零時,停止學習,否則選擇下一個樣本,從第二步開始迭代執行。
結合章節3.3中提出的知識表示方法,則章節3.3中某系統的BP神經網絡模型輸入層與輸出層均為10個神經元。隱含層節點個數根據經驗公式來確定,其中m與n為輸入層與輸出層神經元個數,a為1~10的調節常數,則不同個數的隱含層訓練情況如表4所示。因此,隱含層個數可選11或13,本文選擇11個,則某系統的BP網絡模型為10-11-10結構。將某系統故障的樣本集放入訓練好的BP神經網絡模型進行測試,結果如表5所示,最大誤差為0.000 3。

表4 不同個數隱含層訓練情況

表5 某信息系統BP神經網絡模型測試結果
推理機制大致分為3種,正向推理機制、反向推理機制以及混合推理機制。本文選用正向推理機制來進行推理。
正向推理機制是由事實推出結論的過程,具體推論過程大致如下。
第1步:將CMDB獲取到的監控告警以及相關信息作為初始信息放入動態事實庫。
第2步:將初始事實作為BP神經網絡模型的輸入。
第3步:用訓練好的BP神經網絡進行推理。若推理生成新知識,則更新知識庫。
第4步:判斷結果是否為故障根因,若是,則輸出根因;否則,進行第5步。
第5步:若CMDB中有相關信息可以補充新事實,則將新事實與初始事實作為輸入,跳轉至第3步;否則,失敗退出。
本文研究基于CMDB的信息系統故障定位相關技術,對CMDB的配置項分類、屬性以及關系進行了深入研究,在此基礎之上分析BP神經網絡算法,結合BP神經網絡模型實現信息系統的故障根因定位,并對信息系統樣本集進行了測試,實現了故障根因快速定位,提高了業務恢復效率。同時,結合一鍵處置功能實現了故障自愈。