實戰:基於機器學習的智慧故障診斷
行業現狀:近年來,華夏銀行在智慧運維研究方面加大力度,特別是在基於人工智慧的故障診斷方面取得了一定研究成果。基於人工智慧與機器學習故障診斷系統,不僅需要有強大的機器學習能力,還需要靈活匹配銀行應用系統特性的演算法,並結合強大的運維故障處理經驗。通過不斷地機器學習和迭代,最終實現基於人工智慧的故障診斷系統,以提高整體運維故障率的識別、完全實現自動化處理。其主要通過應用架構設計、知識庫資料採集、資料預處理、業務例項建模、因變數和自變數的篩選、故障識別庫建立與流程自動化等步驟實現。
應用架構設計
基於機器學習的智慧故障診斷系統應用架構主要包括大資料平臺層、人工智慧和機器學習、視覺化展現與告警三個部分(如圖1所示)。
圖1 基於機器學習的故障智慧診斷系統應用架構
1.大資料平臺層。大資料平臺層主要具有以下特性。
(1)採用Hadoop分散式計算架構設計,可並行支援多個物理節點和同一節點內多臺伺服器的分散式平行計算。系統具有可擴充套件性,可根據計算需求,對計算節點和節點內的計算伺服器進行擴充套件。
(2)採用基於NoSQL叢集儲存架構設計,採用儲存虛擬化技術,組成統一的虛擬儲存池,構建全域性統一名稱空間。可支援區域節點、節點內伺服器和伺服器容量的三級擴充套件。每套叢集儲存系統支援檢索特徵(資料索引等)資料帶外儲存,提升海量資訊的檢索效能。
(3)採用分散式實時流計算框架STORM,可以分散式處理大規模的實時資料,具有低延遲、高效能、分散式和可擴充套件的特點。
(4)關係型資料庫儲存叢集採用傳統的關係型資料庫系統,主要儲存基本的領域知識,系統所需要的原資料,任務定義,計算並需要在頁面上展示的結果等。
2.人工智慧和機器學習。使用基於人工智慧和機器學習技術,通過對接故障識別庫、演算法、構建模型、迭代優化等步驟逐步完善故障診斷自動化預警系統。主要按照以下步驟處理:收集銀行報警資料到大資料平臺;資料預處理(清洗、轉換、統一);基礎統計;基礎統計結果儲存到資料庫;計算引擎載入資料;劃分訓練和測試集合;訓練模型,在測試集上驗證;儲存模型;迭代式優化模型。
3.視覺化展現與自動化告警。這是個以適當的視覺元素及檢視來呈現抽象的資料資訊,並結合人工智慧、機器學習技術完成自動化告警的過程。當發現了故障後自動接入相應的流程進行處理,這時故障事件自動觸發問題處理跟蹤流程,並在自動化工單式流程的指引下通知到相關責任人,並利用知識庫自動化完成整個故障處理協調過程。
原始知識庫資料採集
系統故障資訊是由銀行運維監控系統和運維工程師在日常工作中對應用系統的故障進行記錄形成的故障知識庫,我們可以直接從故障知識庫採集相關故障資訊。
1.資料採集注意點。採集時需要注意對現有複雜裝置及系統的故障資訊進行資料採集,得到故障資料的特點,可以採用特徵選擇與特徵提取兩種方法。故障資料主要是由人工記錄並在知識庫中存在的,大部分為描述性語言並且資料量較大,可以直接對故障資料進行資料分析。故障資料含有的屬性較多,並非所有的資料都可以用來進行分析,應注意過濾、篩選。
通過對故障資料進行特性分析可以得出系統中裝置與裝置之間的故障存在一定的聯絡。目前大部分系統都是複雜裝置系統,由具有不同功能的裝置在一定條件下組成的。裝置與系統之間緊密相連、相互作用、相互耦合,這些裝置共同構成一個功能強大的複雜系統。因此在採集時需要考慮到系統裝置之間的故障相互聯絡。
2.採集故障資料方式。採集故障資料可採用以下兩種方式:從結構化欄位獲取結構化資料;從非結構化欄位提取資訊,並通過程式和演算法進行結構化處理。
資料預處理
資料預處理是將已採集的故障資訊進行統一處理,包括:資料清理、資料整合、資料變換、資料歸約 等。這些資料處理過程會大大提高資料質量,提高機器的可讀性,有利於進行統一的分析與計算。
預處理完成後,生成各種資料類別以供集中儲存和訪問。這些資訊包括配置資料、效能資料、告警事件資料、交易監控日誌、機器學習模型例項以及模型訓練資料等。資料預處理需要業務人員與技術人員共同協作完成。
本系統中資料預處理可以採用離群點篩除、缺失值填補(-1,樣本均值)、變數格式轉換及標準化、變數編碼(去重)、啞變數處理、連續值離散化等方法進行。
業務例項的建模
業務例項的建模主要將業務系統總資源及結點進行抽象、建模並生成統一的易於管理的資料格式。提供對基礎設施、資料庫、中介軟體、應用系統、業務系統、告警配置資訊及依賴關係的管理,為應用平臺的資料展示、告警聚集、故障定位分析、故障影響分析提供了資料來源和分析依據,是整個機器學習自動化故障告警系統的基礎支撐。
從業務系統整體角度出發,可以將這些配置資訊進行分層處理,具體可分為網路層、主機層、程序層、服務層、業務層 。以網路層為例,主要配置項為交換機等網路裝置,其屬性明細見下表。
表 網路層屬性明細
因變數與自變數的篩選
在人工智慧領域,迴歸分析是一種預警性的建模技術,它研究的是因變數(目標)和自變數(預警器)之間的關係。這種技術通常用於預警分析、時間序列模型以及發現變數之間的因果關係。在銀行自動化運維預警系統中,可以預警故障業務的發生情況和自動化處理機制。
在銀行運維場景中故障是以事件的形式出現,事件管理流程觸發於事件的產生,其可以是使用者或業務人員發現的軟體故障、系統監測到的硬體故障以及使用者提交的問題或服務請求。在一個事件產生時,首先需要對當前事件進行記錄,建立用於描述事件的事件單。事件單也可以用於監測事件流程、在使用者詢問時及時予以反饋。進而需要對事件進行分類,首先需要判斷當前事件是否屬於服務請求,若屬於則進入服務請求實現流程,否則根據事件所涉及的SLA、緊急度、影響度等因素對其評定優先順序,並根據事件單中對事件的描述以及事件的狀態對其進行分類。此時服務檯人員會根據事件描述在配置管理資料庫中查詢該事件是否存在解決方案。若存在相關方案則以快速支援的方式對事件進行解決若不存在相關解決方案則需對事件進行調查和診斷的流程。在此流程中服務支援人員基於以往解決事件的經驗,並根據當前事件的分析結果嘗試給予相應的解決方案。但是,在當前服務支援人員無法給出合理的解決方案或者解決方案無效時,就需要對事件進行升級,從而分配給更加專業、經驗豐富的高階支援人員予以解決。事件升級是一個迭代過程,在事件無法解決時不斷分配給更高階的人員,直到得到合理有效的解決方案,或者事件被認定暫時無法解決。在事件解決方案的效果得到使用者確認後,即可關閉此事件。但是在事件關閉後,還需要對事件進行回顧,將相關的事件單以及解決方案記錄到知識庫中,然後終止整個事件管理流程。
在事件管理流程中,如果可以控制事件的升級次數並在較低的服務支援級別解決事件,將大大提高事件的解決效率並降低處理事件所需要的人員成本和資源成本,在此基礎上實現自動預警。因此,在最快時間內按照支援等級快速告警問題,並優化事件管理流程是自動化故障診斷的核心。而其難點就在於如何快速有效地為事件處理人員選擇解決方案提供決策支援。
自變數與因變數的篩選需要遵循機器學習中的相關演算法,自變數代表資料採集的資訊,因變數代表最終得到的結果。故障診斷的原理是使用機器學習演算法通過分析和學習歷史資料,從而產生一種預警模式,並在不斷迭代中修正該模式,進而有效預警模型。IT事件管理流程更適合使用監督性的學習演算法,作為因變數輸入資料的事件,成為了帶有標註的訓練資料。但是為了得到良好的決策支援效果,需要對事件進行特徵抽取,這也是關係到決策支援準確率的重要一步。此後還需要進行特徵資訊進一步的學習演算法輸入要求。具有良好的訓練資料後,還需要不斷選擇訓練演算法,形成演算法集合,最終得出因變數的結果(如圖2所示)。
圖2 自變數與因變數的篩選
故障識別庫的建立與流程自動化觸發
本文中告警系統的設計是基於銀行已有的監控系統平臺進行的,銀行的監控系統對銀行的業務支援起著舉足輕重的作用,對運維繫統效能、功能改善以及銀行業務的正常運營具有重要意義。
目前,大多數銀行採用的系統預警機制是基於傳統閥值管理的概念,通過人為的設定預警閥值,當採集的指標達到或者超過設定閥值時進行告警,但這種情況下的告警基本已是事後告警,無法達到提前進行處置排除故障的要求。一旦出現重要系統的告警訊號,往往事件己經對業務造成了極大影響。本文介紹的利用基於機器學習的智慧故障診斷,可以實現對監控的歷史資料進行深度挖掘,應用先進的機器學習演算法對資料進行學習預警,並進行後續迭代優化。除此之外,通過軟體系統開發、搭建架構系統,實現對業務級系統性能告警資料的監控與視覺化展示,從而搭建一整套銀行運維管理所需要的智慧化故障告警系統。這樣就可以制訂系統的主動式故障預警與預防的一體化解決方案,建立運維故障告警預警的高可用性機制,提高對銀行故障告警預警的管控能力,最大程度地保證銀行資訊系統的穩定執行以及銀行核心業務的正常持續進行。
實際應用效果
基於機器學習的智慧故障診斷作為主動式運維的重要技術手段之一,在華夏銀行的運維工作實踐中大幅提升了資訊科技風險事前管控能力,提高了運維工作的智慧化水平和前瞻性,促進運維模式從被動向主動方式轉變。該系統在華夏銀行投入使用後,管理範圍包括核心系統在內的30多套重要系統,取得良好效果。系統使用半年時間就提前發現生產系統執行隱患120餘次,捕獲到2000多個潛在效率低下的SQL語句,使得運維人員能夠提前介入,將系統風險扼殺在事前。下一步,華夏銀行將在此基礎上,繼續完善系統故障自修復能力,在智慧化運維工作的道路上再進一步。
作者:華夏銀行資訊科技部
本文節選自《金融電子化》2018年9月刊
宣告:本文來自安全內參,版權歸作者所有。文章內容僅代表作者獨立觀點,不代表安全內參立場,轉載目的在於傳遞更多資訊。如需轉載,請聯絡原作者獲取授權。