國網(wǎng)河南省電力公司信息通信公司 賈海鋒 河南九域騰龍信息工程有限公司 譚鐵磊 馮向陽
為保障信息系統(tǒng)安全平穩(wěn)的運行,需對信息系統(tǒng)中所有設(shè)備的運行狀態(tài)進行監(jiān)測巡檢。神經(jīng)網(wǎng)絡(luò)由一個輸入層、一個或多個隱藏層及一個輸出層串聯(lián)而成。輸入層用于接收輸入數(shù)據(jù),故輸入層中神經(jīng)元的數(shù)量與輸入數(shù)據(jù)的維度相同,接收到輸入數(shù)據(jù)后隱藏層對輸入數(shù)據(jù)進行多次線性變換和非線性激活得到輸入數(shù)據(jù)的低維表示,最后將低維表示作為輸出層的輸入,得到神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果。
神經(jīng)網(wǎng)絡(luò)中線性變換和非線性激活的計算過程如圖1,神經(jīng)元1為神經(jīng)網(wǎng)絡(luò)中任意一個神經(jīng)元,x1,x2,x3,…,xm為神經(jīng)元1的輸入數(shù)據(jù),則神經(jīng)元1的輸出結(jié)果為其中:w1i為神經(jīng)元1對輸入xi的權(quán)值,b1為神經(jīng)元1對所有輸入數(shù)據(jù)的偏置,表示神經(jīng)元1對輸入信息的線性變換過程,φ為非線性激活函數(shù),常用的非線性激活函數(shù)包括ReLU激活函數(shù)、Sigmoid激活函數(shù)和Tanh激活函數(shù)。
通過自建的監(jiān)控系統(tǒng)對不同信息系統(tǒng)設(shè)備的日志信息進行字段解析以監(jiān)控多種信息系統(tǒng)的運行數(shù)據(jù),監(jiān)控類型覆蓋服務(wù)器、小型機、數(shù)據(jù)庫、中間件、負載均衡、網(wǎng)絡(luò)等多種信息系統(tǒng)設(shè)備,數(shù)據(jù)采集間隔可低至30秒[1]。當(dāng)前公司監(jiān)控系統(tǒng)覆蓋各類信息設(shè)備共計2483臺,采集項目11萬項,每日采集監(jiān)控信息3400萬條,包括設(shè)備運行時CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)等海量運行數(shù)據(jù),運行數(shù)據(jù)可直觀反映信息系統(tǒng)設(shè)備的運行狀態(tài),故可作為信息系統(tǒng)自動巡檢的依據(jù)。
根據(jù)信息系統(tǒng)的用處,將所有信息系統(tǒng)劃分為用于用戶交互的業(yè)務(wù)應(yīng)用類系統(tǒng)和用于數(shù)據(jù)處理的數(shù)據(jù)平臺類系統(tǒng)兩大類,針對信息系統(tǒng)的類別和訪問數(shù)據(jù)計算每一個信息系統(tǒng)的運行向量,信息系統(tǒng)的運行向量包括CPU使用率、CPU負載、內(nèi)存使用率、SWAP空間使用率、磁盤空間使用率、網(wǎng)絡(luò)流速及信息系統(tǒng)類別共七個維度。
CPU使用率:針對業(yè)務(wù)應(yīng)用類系統(tǒng),采集一天時間內(nèi)每小時的用戶訪問量得到用戶訪問量集合,將用戶訪問量集合中所有數(shù)值從大到小排列,并計算排名前25%的數(shù)值的均值作為一天時間內(nèi)CPU使用率;針對數(shù)據(jù)平臺類系統(tǒng),采集一天時間內(nèi)每小時的CPU平均使用率得到CPU平均使用率集合,將CPU平均使用率集合中所有數(shù)值從大到小排列,并計算排名前25%的數(shù)值的均值作為一天時間內(nèi)CPU使用率。
CPU負載:對于業(yè)務(wù)應(yīng)用類系統(tǒng)和數(shù)據(jù)平臺類系統(tǒng),CPU負載的計算方法是相同的,采集一天時間內(nèi)每小時的CPU平均負載得到CPU平均負載集合,將CPU平均負載集合中所有數(shù)值從大到小排列,并計算排名前25%的數(shù)值的均值作為一天內(nèi)CPU平均負載;內(nèi)存使用率:針對業(yè)務(wù)應(yīng)用類系統(tǒng),一天內(nèi)的內(nèi)存使用率與一天內(nèi)一天時間內(nèi)CPU使用率的計算方法相同。針對數(shù)據(jù)平臺類系統(tǒng),采集一天時間內(nèi)每小時內(nèi)存平均使用率得到內(nèi)存平均使用率集合,將內(nèi)存平均使用率集合中所有數(shù)值從大到小排列,并計算排名前25%的數(shù)值的均值作為一天內(nèi)的內(nèi)存平均使用率。
SWAP空間使用率:對于業(yè)務(wù)應(yīng)用類系統(tǒng)和數(shù)據(jù)平臺類系統(tǒng),SWAP空間使用率的計算方法是相同的,采集一天時間內(nèi)每小時平均SWAP空閑空間得到空閑空間集合,將空閑空間集合中所有數(shù)值從大到小排列,并計算排名前25%的數(shù)值的均值作為日SWAP空閑空間MI;進一步獲取空閑空間集合中的最大值MAX,則一天內(nèi)SWAP空間使用率為:DI=1-MI/MAX。
磁盤空間使用率:針對業(yè)務(wù)應(yīng)用類系統(tǒng),一天內(nèi)的磁盤空間使用率與一天內(nèi)一天時間內(nèi)CPU使用率的計算方法相同;針對數(shù)據(jù)平臺類系統(tǒng),采集一天時間內(nèi)每小時磁盤平均使用量得到內(nèi)磁盤平均使用量集合,將磁盤平均使用量集合中所有數(shù)值從大到小排列,并計算排名前25%的數(shù)值的均值作為一天內(nèi)的磁盤平均使用量。
網(wǎng)絡(luò)流速:對于業(yè)務(wù)應(yīng)用類系統(tǒng)和數(shù)據(jù)平臺類系統(tǒng),網(wǎng)絡(luò)流速的計算方法是相同的,采集一天時間內(nèi)每小時網(wǎng)絡(luò)流入量和網(wǎng)絡(luò)流出量的比值得到網(wǎng)絡(luò)流速集合,將網(wǎng)絡(luò)流速集合中所有數(shù)值從大到小排列,并計算排名前25%的數(shù)值的均值作為一天內(nèi)的網(wǎng)絡(luò)流速;信息系統(tǒng)類別:若信息系統(tǒng)的類別屬于業(yè)務(wù)應(yīng)用類系統(tǒng),則信息系統(tǒng)類別的數(shù)值為0,若信息系統(tǒng)的類別屬于數(shù)據(jù)平臺類系統(tǒng),則信息系統(tǒng)類別的數(shù)值為1。
至此,將同一個信息系統(tǒng)設(shè)備七個維度的數(shù)值按照固定順序排列,即可得到信息系統(tǒng)在一天內(nèi)的運行向量,進一步對人工巡檢的歷史巡檢日志進行字段解析得到大量的巡檢信息,每條巡檢信息包括巡檢日期、信息系統(tǒng)編號和巡檢結(jié)果,其中巡檢結(jié)果包括1和0兩種情況,1表示巡檢結(jié)果正常、0表示巡檢結(jié)果異常;針對每一條巡檢信息,獲取巡檢日期當(dāng)天信息系統(tǒng)編號對應(yīng)的信息系統(tǒng)的運行向量,并將巡檢結(jié)果作為該運行向量的標簽信息得到一組訓(xùn)練樣本;按照相同的方法對所有巡檢信息進行信息提取得到大量的訓(xùn)練樣本,將所有訓(xùn)練樣本按照9:1的比例劃分為訓(xùn)練集和測試集、完成數(shù)據(jù)采集的過程,整個過程自動實現(xiàn),無需人為參與。
為使神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)適用于信息系統(tǒng)自動巡檢的實際情況,本文設(shè)計可一種5層的全連接神經(jīng)網(wǎng)絡(luò),全連接網(wǎng)絡(luò)的輸入為信息系統(tǒng)的運行向量,輸出為信息系統(tǒng)的巡檢結(jié)果,包括一個輸入層、三個隱藏層和一個輸出層。
輸入層中神經(jīng)元的數(shù)量為7個,用于接收信息系統(tǒng)的運行向量;三個隱藏層對信息系統(tǒng)的運行向量進行升維和降維操作,最終得到2維的特征向量作為輸出層的輸入;輸出層采用用于分類處理的Softmax函數(shù),得到分類向量。其中,分類向量包括信息系統(tǒng)的運行向量屬于正常的概率值p1和屬于異常的概率值p2,且兩個概率值之和為1;比較分類向量中概率值p1和概率值p2的大小,若p1大于p2則信息系統(tǒng)的巡檢結(jié)果為正常,若p1不大于p2則信息系統(tǒng)的巡檢結(jié)果為異常。
Softmax函數(shù)為歸一化指數(shù)函數(shù),函數(shù)的輸入數(shù)據(jù)可為一個或多個數(shù)值,經(jīng)Softmax函數(shù)處理后將每一個數(shù)值映射為0到1的概率值,且所有概率值之和為1,Softmax函數(shù)的計算公式為:pk=其中:a為函數(shù)的輸入數(shù)據(jù)k中第k個數(shù)值,K表示函數(shù)的輸入數(shù)據(jù)中所有數(shù)值的數(shù)量,exp表示以自然常數(shù)e為底的指數(shù)函數(shù),pk為函數(shù)的輸入數(shù)據(jù)中第k個數(shù)值對應(yīng)概率值,按照相同的計算公式得到函數(shù)的輸入數(shù)據(jù)中每一個數(shù)值的概率值,即可得到Softmax函數(shù)的輸出結(jié)果。
基于多次的實驗結(jié)果和不同非線性激活函數(shù)的函數(shù)曲線,本文選擇Tanh激活函數(shù)作為第一層隱藏層的激活函數(shù),Tanh激活函數(shù)可將輸入的數(shù)值映射至-1~1的范圍內(nèi),可學(xué)習(xí)到運行向量中不同維度的數(shù)值對自動巡檢的正相關(guān)或負相關(guān)的關(guān)系;選擇Sigmoid激活函數(shù)作為第二層隱藏層的激活函數(shù),Sigmoid激活函數(shù)可將輸入的數(shù)值映射至0~1的范圍內(nèi),可學(xué)習(xí)到運行向量中不同維度的數(shù)值對自動巡檢的重要程度;選擇ReLU激活函數(shù)作為第三層隱藏層的激活函數(shù),當(dāng)輸入的數(shù)值大于0時,ReLU激活函數(shù)的輸出與輸入的數(shù)值相同,當(dāng)輸入的數(shù)值不大于0時ReLU激活函數(shù)的輸出為0,可緩解神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中的過擬合問題。
在神經(jīng)網(wǎng)絡(luò)訓(xùn)練前需對搭建完畢的神經(jīng)網(wǎng)絡(luò)的參數(shù)初始化,合適的初始化參數(shù)能在網(wǎng)絡(luò)訓(xùn)練過程中一定程度上避免出現(xiàn)梯度消失和梯度爆炸的情況,本文利用凱明初始化方法對神經(jīng)網(wǎng)絡(luò)每一層的參數(shù)進行初始化,其調(diào)用代碼為:init.kaiming_uniform_(self.weight,a),其中a的取值與激活函數(shù)的種類有關(guān)。
對初始化后的神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,首先設(shè)置一個訓(xùn)練批次中的數(shù)據(jù)量,本文設(shè)置的訓(xùn)練批次為32,在一個訓(xùn)練周期(epoch)中,從訓(xùn)練集中隨機選取32個運行向量構(gòu)成一個訓(xùn)練批次,將該訓(xùn)練批次中所有運行向量依次輸入神經(jīng)網(wǎng)絡(luò)得到每一個運行向量的分類向量;進一步利用交叉熵損失函數(shù)作為損失函數(shù)計算分類向量與標簽信息的誤差,在計算損失函數(shù)的數(shù)值后,利用梯度下降法將誤差反向傳播以更新神經(jīng)網(wǎng)絡(luò)中每一層的參數(shù),即神經(jīng)網(wǎng)絡(luò)中參數(shù)的更新是從最后一層開始,每一層參數(shù)的更新依賴于后一層的誤差[2]。
在訓(xùn)練過程中,不斷從訓(xùn)練集中挑選訓(xùn)練批次的輸入神經(jīng)網(wǎng)絡(luò)以更新神經(jīng)網(wǎng)絡(luò)的參數(shù),每當(dāng)更新后計算當(dāng)前時刻的神經(jīng)網(wǎng)絡(luò)在測試集上的準確率。學(xué)習(xí)率的大小控制著神經(jīng)網(wǎng)絡(luò)參數(shù)每次更新時的更新幅度,為保證神經(jīng)網(wǎng)絡(luò)參數(shù)的更新速度,設(shè)置初始學(xué)習(xí)率為0.001;但隨著訓(xùn)練周期的增加,神經(jīng)網(wǎng)絡(luò)的參數(shù)逐漸趨于穩(wěn)定,此時若繼續(xù)采用初始學(xué)習(xí)率會導(dǎo)致神經(jīng)網(wǎng)絡(luò)的參數(shù)達不到最優(yōu)值,故當(dāng)檢測到測試集的準確率在3個訓(xùn)練周期內(nèi)沒有增加時,將初始學(xué)習(xí)率下減半以降低神經(jīng)網(wǎng)絡(luò)的參數(shù)每次更新時的幅度。
同時,為防止因訓(xùn)練次數(shù)過多導(dǎo)致神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果過度依賴于訓(xùn)練集、即出現(xiàn)過擬合情況,當(dāng)檢測到測試集的準確率在5個連續(xù)的訓(xùn)練周期內(nèi)沒有上升,就提前結(jié)束訓(xùn)練過程。
本次訓(xùn)練使用的數(shù)據(jù)集中共包含76745個訓(xùn)練樣本,按照9:1的比例拆分后,訓(xùn)練集中的運行向量的數(shù)量為69070,測試集中運行向量的數(shù)量為7675。訓(xùn)練過程中訓(xùn)練集上損失函數(shù)值與測試集上準確率的變化情況如圖3所示,隨著訓(xùn)練周周的不斷增加,神經(jīng)網(wǎng)絡(luò)在測試集上的準確率逐漸提高,第20個周期時準確率已經(jīng)達到99%左右,第21個訓(xùn)練在周期時提前結(jié)束訓(xùn)練過程,完成訓(xùn)練。
實施效果:在信息系統(tǒng)自動巡檢方法使用中,每天采集所有信息系統(tǒng)的運行向量,將運行向量輸入訓(xùn)練完畢的神經(jīng)網(wǎng)絡(luò),得到每一個信息系統(tǒng)的巡檢結(jié)果,當(dāng)巡檢結(jié)果為異常時,將異常的信息系統(tǒng)的編號推送給運維人員,在由運維人員進行定向巡檢并及時采取相應(yīng)措施,實現(xiàn)不同類型的信息系統(tǒng)的自動化巡檢。