銀行智慧運維探索:打造通用指標趨勢預測模型

twt企業IT社群發表於2022-02-08

銀行智慧運維探索:打造通用指標趨勢預測模型

【摘要】在資料中心當前運維工作中,對於機器執行指標的監控主要透過監控指標當前值結合固定閾值或動態基線進行告警,缺乏指標趨勢預測能力,導致無法提前識別風險。為進一步提升資料中心指標趨勢預測能力,本文探索並構建了一套由資料採集、資料加工、模型建模以及模型應用幾個模組組成的運維資料智慧分析系統,同時由於生產上實際的機器執行指標資料在週期性、平穩性以及隨機性等方面會表現出不同的變化形態,為方便準確預測不同變化形態的資料,本文在此係統基礎上研究了一種通用的指標趨勢預測模型訓練方法。研究結果表明,對於平穩性和週期性表現比較好的機器指標執行資料,預測效果一般會比較好,能夠滿足生產使用的要求,而對於隨機波動變化的資料,預測效果會很差,模型無法提前有效預測出異常突變的情況。

【作者】付傑,碩士研究生學歷,目前就職於某股份制銀行資訊科技部門,主要從事智慧運維模型場景建設的研究工作。


背景

隨著當今社會數字化業務的高速發展,運維模式不斷被逼迫加快數字化轉型,以GARTNER的“基礎設施和運營IT評分體系"下的4000多份問卷測評和中國資料中心服務能力成熟度指數白皮書的評測資料分析,傳統的運維模式下的絕大部分企業(評測分均為3分以下,滿分5分)並不足以作為數字化支撐的基礎。基礎設施IT運營迫切進行轉營,強調服務和體驗以使用者為中心,要以智慧運維作為支撐IT運營轉型的核心。

為了應對新技術演進以及業務創新加速對運維帶來的新挑戰,踐行數字化轉型要求,我行資料中心已持續多年建設智慧運維體系,而智慧運維其中一個比較顯著的特點就是加大對運維資料的分析利用,透過構建人工智慧模型來輔助運維決策。在日常運維工作中,運維人員需要透過對基礎設施、系統服務等的監測來進行日常維護和維修保障工作,目前中心對於機器執行指標的監控主要透過監控指標當前值結合固定閾值或動態基線進行告警,缺乏指標趨勢預測能力,但實際情況中會有部分故障是因為Java記憶體使用率、交換空間使用率等機器執行指標持續增長而沒有及時處理導致的,這也成為了運維工作中的痛點。如果能透過人工智慧模型實現機器執行指標變化趨勢的預測,就可協助運維人員判斷事件的重要程度,並提前制定相應的處理方案進行干預,從而避免業務影響風險的發生。


整體方案

為了滿足機器執行指標趨勢預測模型研究的條件,併為後續進一步開展運維資料探勘打下良好的基礎,我們探索並構建了一套基於已有工具的運維資料智慧分析系統。

銀行智慧運維探索:打造通用指標趨勢預測模型

圖1 運維資料智慧分析系統

從圖1可以看到,整個運維資料智慧分析系統由資料採集、資料加工、模型建模以及模型應用四個部分構成,機器效能明細、告警流水、交易日誌等運維資料主要由監控平臺和日誌平臺完成採集,資料加工平臺在引入這些運維資料後按照要求進行加工處理,處理後的資料供CDSW平臺建模使用,最後模型釋出之後根據實際使用需求進行不同方式的模型應用。

我行CDSW建模平臺基於英特爾®至強®可擴充套件處理器的X86伺服器進行部署,它允許資料科學家將他們現有的技術和工具(如R,Python和Scala)基於本地或X86服務叢集中的資料進行安全執行計算。X86服務叢集主要包含HDFS、Spark以及Yarn三個功能模組,其中:

HDFS是一個分散式檔案系統,提供資料儲存服務,用於存放模型輸入資料、中間資料以及結果資料等;

Spark是一種通用的大資料計算框架,專門用於對那些分散式儲存的大資料進行處理,其計算基於記憶體,計算速度快,並且提供了Spark RDD、Spark SQL、Spark Streaming等技術元件,可以一站式地完成大資料領域的離線批處理、互動式查詢、流式計算、機器學習、圖計算等常見的任務;

Yarn是一個通用的分散式資源管理系統,負責整個叢集的計算任務排程和計算資源管理。CDSW建模平臺和X86服務叢集的邏輯架構如下圖所示:

銀行智慧運維探索:打造通用指標趨勢預測模型

圖2 建模平臺和服務叢集邏輯架構


基礎架構方案

DSW建模平臺由2個服務節點組成,X86服務叢集由12個節點組成,安裝Hadoop,均採用X86架構的英特爾®至強®可擴充套件處理器系列6148雙核40C的CPU處理器及512G容量記憶體的裝置。

CPU

英特爾®至強®可擴充套件處理器

6148(2.4GHz/20C)*2

記憶體

16*32GB,DDR4 2666MHz

硬碟

12*4TB NL-SAS熱插拔硬碟(3.5",7.2K)

Raid卡

支援RAID 1/5,含1GB或以上容量的電容保護快取或快閃記憶體式快取,支援直通模式並提供帶外管理和硬碟故障告警功能

網路卡

2*雙口獨立萬兆光纖乙太網卡(Intel晶片,含配套光纖模組)

選擇英特爾®至強®可擴充套件處理器進行模型訓練,主要考慮了其優異的微架構設計,以及更多的核心、執行緒和快取記憶體數量,一方面保證CDSW建模平臺獲得足夠的算力總量,另一方面,如圖3所示,處理器平臺也能透過核心繫結技術(Core Binding)以及非一致儲存訪問(Non-Uniform Memory Access,NUMA)架構等技術,實現先進的多路並行算力輸出能力,使得每一位運維建模人員都可獲得所需的算力。

銀行智慧運維探索:打造通用指標趨勢預測模型

圖3 英特爾®至強®可擴充套件處理器提供多路並行算力輸出

對於未來機器學習平臺的基礎架構技術展望思考:

1.AI平臺的基礎架構在下一步需要考慮到對於更多高緯模型的支撐。由於體量過於龐大,不僅對系統的框架和演算法設計、計算處理能力也有更為嚴苛的要求,記憶體也會成為AI系統全流程設計中的技術焦點。通常情況下,會藉助DRAM記憶體來滿足實時資料處理和高維特徵及模型的儲存需求,但這種方式會導致記憶體硬體資源成本的持續增長,SCM如英特爾®傲騰™持久記憶體現在是趨勢性的記憶體型別。不同於傳統的DRAM,英特爾®傲騰™持久記憶體集容量和永續性於一身,能夠在AI場景實現效能突破。

2.機器學習的工作負載對硬體架構有一定的特殊性要求(如CPU、GPU、FPGA等),這些架構通常需要獨特的程式語言和工具,這限制了程式碼的重新利用性,減少了硬體選擇並阻礙了創新架構的使用。英特爾®oneAPI的異構程式設計模型能夠提供不受限於單一廠商專用的程式碼限制,且能實現原有程式碼的整合,可以用C++、C++、Fortran和Python等開發者熟悉的語言編寫程式碼,並符合MPI和OpenMP等標準,進而降低利用特殊硬體的軟體開發和維護成本。

   

預測演算法選擇

生產環境實際的機器指標執行資料,是一種時間序列資料,這種資料往往會在週期性、平穩性、隨機性等方面表現出多種不同的變化形態,模型必須根據時序資料的不同形態,選擇合適的預測演算法,才能準確預測指標的後續走勢。現有的時序預測方法大致分為四類,傳統的統計類方法如ARIMA等,現代的機器學習類方法如SVR等,現代的深度學習類方法如LSTM等,以及時間序列分解類方法如Prophet等。

統計類方法要求時序資料是平穩的,或者經過平穩操作(如差分)後是平穩的;時間序列分解類方法一般會將資料分解為趨勢性分量,週期性分量,平穩分量等三個正交的部分後,再對各分量進行預測,對於週期類的資料非常適用,而且可解釋性較強;機器學習類方法需要人工去構造運維資料的特徵屬性,所以如何自動針對不同資料去篩選特徵是個比較大的問題;深度學習類方法往往能夠捕捉資料間複雜的非線性規律,而且預測的準確性會隨著資料量的增多而提高,但是模型的可解釋會比較弱。


模型訓練

為了更加方便預測不同變化形態的機器執行指標資料,我們研究構建了一個通用的指標趨勢預測模型訓練框架,以Java記憶體使用率指標為例,我們輸入某伺服器下某應用某模組的Java記憶體使用率歷史資料,經過訓練計算後,生成對應的模型檔案,同時為每個模型生成唯一標識,通用模型訓練框架如下圖所示:

銀行智慧運維探索:打造通用指標趨勢預測模型

圖3 通用模型訓練框架

我們對於需要進行訓練的機器執行指標,將具體的伺服器主機名、IP、應用名、模組名、執行指標等資訊登記到配置檔案中,程式透過配置檔案資訊,從歷史資料中提取對應的執行指標資料,然後對提取的資料進行資料清洗、標準化等操作,並且在訓練前對資料變化趨勢進行判斷,對於週期性比較好的時序資料,選用Prophet演算法,對於平穩性比較好的時序資料,選用ARIMA演算法,目前對於隨機波動變化的機器執行指標資料,還需進一步探索研究比較好的預測方案。


模型預估及應用

在模型釋出之後,我們對模型的應用有兩種方式,即批次預估與實時預估,對於批次預估場景,選定一定範圍內的機器執行指標資料,每天發起一次預估任務,每次預估已有的資料時點後續24小時內,每十分鐘間隔的預測指標數值,並將預估結果提供給下游系統使用,整個批次預估流程如下圖所示:

銀行智慧運維探索:打造通用指標趨勢預測模型

圖4 模型批次預估流程

批次預估完成後,我們將預估結果儲存在庫表中,運維人員可在監控平臺頁面對相應指標進行查詢和分析,另外,設定提醒閾值,在預估的指標資料達到閾值後,可透過郵件提醒管理員進行關注。

銀行智慧運維探索:打造通用指標趨勢預測模型

圖5 模型批次預估結果消費場景

對於實時預估場景,需提供實時預估介面功能,當運維人員想隨時根據自己需要去查詢自己選定範圍內的指標執行趨勢的時候,介面會收到運維人員在頁面發起的預估請求,然後呼叫對應模型檔案完成計算並將結果返回,實時預估場景需要考慮的是實時計算引擎能力能否滿足運維人員高時效性的要求。


模型驗證

模型釋出後,在正式投入生產使用之前會先進入試執行階段,在此階段會對模型預估的準確性進行評估,以Java記憶體使用率這一指標為例,模型預估準確性的評估方法為:模型預估開始後,記錄每個時點模型預估的指標數值與實際數值之間的誤差,然後統計週期T內所有伺服器N預估結果的平均誤差E,如誤差在可用範圍內,則判斷模型透過驗證,計算公式如下:

銀行智慧運維探索:打造通用指標趨勢預測模型

對於時點t,計算所有伺服器的誤差平均值,一般來說,在預測時點t較小時,誤差較小;當時點t較大時,誤差也會較大。

銀行智慧運維探索:打造通用指標趨勢預測模型

圖6 Java記憶體使用率趨勢預測示例


總結

在模型的實際應用過程中,對於平穩性和週期性表現比較好的機器指標執行資料,預測效果一般會比較好,能夠滿足生產使用的要求,而對於那種隨機波動變化的資料,預測效果會很差,模型無法提前有效預測出異常突變的情況,但這往往是運維工作更需要解決的問題,因此目前來看模型真正的適用範圍會比較窄小,只能解決部分問題。

其實除了機器執行指標趨勢預測場景以外,運維領域還有很多其他的時間序列預測場景,比如批次作業的執行時長預測網路效能容量預測等,不同預測場景所產生的運維資料參差多樣,現在還暫時無法找到一種演算法或一套引數適用於所有資料,而且對於隨機波動變化的資料,也還無法找到很精確的預測方法,那麼未來面對運維領域種類繁多的海量資料,我們還需要透過不斷的創新與實踐,最終探索出一套準確高效的運維資料智慧分析解決方案,實現智慧運維領域的重大突破。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994525/viewspace-2854800/,如需轉載,請註明出處,否則將追究法律責任。

相關文章