余少鋒,佘 俊,鐘建栩,廖崇陽
(南方電網調峰調頻發電有限公司信息通信分公司,廣東 廣州 510000)
云監控[1-2]涉及監控基礎設施、平臺和定制指標整個過程,可確保系統工作負載在最佳水平運行。云監控主要用于分析系統中每個任務的內存使用情況,有助于確定任務的使用模式,并允許在達到某些閾值時設置警報,以平衡工作負載并保持高可用性。云監控數據分析[3]涉及大量信息的查詢和處理操作。在此過程中,需要從任意粒度范圍(例如以分鐘或小時聚合)中檢索特定屬性的數據,以估計概率分布函數(probability distribution function,PDF),并預測未來的工作負載[4]。由于跟蹤的數量可能很大,隨著跟蹤數據的積累,這些操作需要一個可擴展且可靠的云體系結構。
為此,國內外學者針對云監控技術進行了大量研究,并取得了豐碩成果。賴朝安等[5]研究了雙層隨機規劃的云監控平臺定價策略,結合極點算法建立服務商與客戶之間的動態博弈模型。尹學淵等[6]提出了1種基于虛擬機內存實時在線分析的虛擬機監控技術,實現了虛擬機細粒度狀態信息監控。楊淑棉等[7]提出了一種基礎設施即服務(infrastructure as a service,IaaS)模式下基于物理內存分析的實時監控取證方法,可實現虛擬機中的異常行為檢測,從而有效防止虛擬主機運行惡意軟件、違法犯罪等問題。上述方法僅針對各自領域的云監控平臺進行了研究,無法擴展到其他數據集,模型可拓性有待提高。為了允許高級跟蹤數據分析,所設想的云體系結構應該適應對任意跟蹤數據集的訪問。此外,云架構需要一個基于萬維網(world wide web,Web)的界面來構建結構化的數據查詢,并顯示結果。
為此,本文在研究了集成云平臺和分布式計算基礎上,提出了一種包含雙層結構的云監控數據分析平臺,并對系統中數據密集型跟蹤分析的體系結構和關鍵技術進行研究。
云監控數據分析平臺體系結構如圖1所示。該結構主要分為2個子系統:其一為較小數據量提供數據分析方法的核心結構;其二為分析大型數據集提供有效分布式計算算法的擴展結構。

圖1 云監控數據分析平臺體系結構Fig.1 Architecture of cloud monitoring data analysis platform
核心架構可分為3層:頂層為智能搜索層;中間層為應用程序接口(application programming interface,API);底層為云計算層(包括物理接口)。這3層相互作用,進行工作負載跟蹤,并監視任何異常模式。
核心結構工作過程如圖2所示。

圖2 核心結構工作過程框圖Fig.2 Block diagram of core structure working process
智能搜索層為用戶提供了編輯分析、配置參數、啟動數據訪問和處理請求及顯示查詢結果等功能。該層提供了用戶與云平臺[8]交互的源,并充當客戶端應用程序與云平臺通信的API接口。用戶向云平臺發送服務請求,一旦認證成功,將在客戶端上生成含有關分析結果的信息的查詢結果。此外,考慮到用戶感興趣的目標不只一個,智能搜索模塊也提供類似于目錄的自動索引功能。
API層充當連接智能搜索層和存儲跟蹤的云計算層的橋梁。API層的核心構建在3個模塊上,即搜索模塊、分析包和頁面生成器。需要注意的是,系統所有資源都是通過超文本傳輸協議(hyper text transfer protocol,HTTP)發送處理請求。作為響應,可調用分析包。分析包利用搜索模塊提取感興趣的數據集。然后,搜索模塊通過HTTP,由云平臺的API向云服務商發送一個搜索查詢。當返回數據后,分析包生成結果并向客戶端發送成功響應通知。在接收到成功響應時,系統將初始化另一個請求,以便通過HTTP協議繪制該特定數據集的預測數據。最后,系統發送一個生成頁面的請求,并調用頁面生成器模塊生成分析結果。
云計算層的數據接口主要進行數據存儲和訪問,且基于云平臺主要使用切分和復制實現搜索、索引功能。此外,云計算層還包括眾多物理組件,如交換機、接口、數據庫等。
如果用戶想要監控數據中的異常值,首先與智能搜索層交互,輸入所需的參數來啟動該過程。同時,智能搜索層交互將帶有指定參數的HTTP請求發送到特定Web服務。當認證成功,該服務立即建立連接,并從云平臺檢索所需數量的數據。最后,將這些數據處理的結果以頁面形式呈現給用戶。
云監控數據分析平臺除核心架構外,還擴展了一個額外的組件,以便對大量數據集進行復雜的計算。該組件由多個分布式復雜計算應用程序復合構成,用于管理和調度用戶應用程序。擴展結構包含請求/接收資源管理器、數據節點組件(可連接到其他Hadoop分布式文件系統(hadoop distributed file system,HDFS)數據節點)和服務協議這3部分。擴展結構有利于用戶在Hadoop文件系統[9]中存儲數據,并為用戶提供了高可用性和可擴展的存儲功能。
擴展結構的工作過程如圖3所示。

圖3 擴展結構的工作過程框圖Fig.3 Block diagram of extended structure working process
與核心結構類似,用戶通過特定的輸入參數訪問數據頁面。然后,這些參數以HTTP請求的形式轉發到API中。API執行請求,并將接收到的參數包裝為JSON消息[10]發送到云平臺的主節點。節點接收JSON消息并將查詢請求提交給云服務商。需要注意的是,API中的請求發送模塊將以JSON格式編碼的消息傳遞到云平臺的主節點。同時,運行在云平臺主節點上的請求接收器模塊接收消息并對其進行解碼。節點間的消息傳遞使用高級消息隊列協議(advanced message queuing protocol,AMQP)[11]執行。當成功完成任務后,云平臺將保存結果,并通過安全外殼協議(secure shell,SSH)將結果傳輸到API,并向用戶發送一個成功響應。此外,API將發送另一個請求,從而為特定結果生成查詢頁面。
擴展結構還支持相應的機器學習庫,如模糊C均值聚類算法[12],通過將跟蹤數據劃分成所需的集合來分析跟蹤數據。
由于現實環境中的數據大多為非結構化數據,導入系統時沒有直接可用于索引的功能,因此需要設計高效的數據索引方法。本文使用形式化語言自動為每個正在加載的記錄創建唯一id。自動生成的唯一id在架構文件中的定義如下所示。
該定義中:“*”為省缺值,可自由定義;name為記錄的命名;class為記錄所屬類別;index為true時為可被索引,否則表示不可索引;id為記錄唯一標識。
云平臺支持不同類型的數據上傳技術,例如索引處理程序、結構化數據的數據導入處理程序以及通過網絡上傳數據。
數據查詢通過HTTP請求發送到云平臺,請求包含集合名稱和數據量。例如,如果用戶打算從云平臺請求10 000條數據記錄,則查詢示例表示如下。
s=SearchOptions();s.query.rows('10000')
該示例中:SearchOptions為查詢操作函數;s為其實例化。
需要注意的是,云平臺僅支持JSON格式的數據查詢操作。當查詢完成后,將在HTTP響應中返回查詢的數據集。返回的數據集由分析模塊進一步處理。
本節通過案例驗證本文所提模型:通過分析跟蹤數據,預測系統工作量,并了解時間序列中的運行模式。系統開發環境使用JAVA中的Spring框架作為輸入,開發架構的工作原型,以跟蹤特定時間戳下海量搜索引擎數據庫服務器作業時的CPU和內存使用情況。為簡化仿真過程,作如下假設。
①任務或作業名稱以數字標志符進行區分。
②CPU和內存的消耗可通過線性變換模擬。
③任意大數據集的平均值服從正態分布。
本文采用Python庫實現了核心組件分析包中的CPU負載使用情況預測。
分析考慮10 000個數據點的數據集,將數據塊分成4個子塊,并令每個子塊的持續時間為L。預測CPU的負載是指在L的每個周期結束時,根據上一個子塊的趨勢及增長對下一個子塊CUP負載進行預測。最后,利用三次指數平滑方法對長度為4L的時間序列數據進行預測。圖4中,平滑常數α=0.2、β=0.2、γ=0.05。
核心結構負載預測指數平滑結果如圖4所示。

圖4 核心結構負載預測指數平滑結果Fig.4 Exponential smoothing results of core structure load forecasting
擴展組件分析結果如圖5所示。

圖5 擴展組件分析結果Fig.5 Extended component analysis results
如前文所示,擴展組件分析時首先使用機器學習k-均值聚類算法對時間序列工作負載數據進行分類,即將跟蹤數據分類為不同的k值。工作負載分類旨在發現跟蹤數據中任務事件的異常。本節在106個數據點上運行聚類算法,得到不同的k值,即4、8和12。由圖5可知,在監控數據集中,代表任務CPU和內存使用的大多數數據點的值都相當低。這些任務事件平均分別使用約0.001 6和0.003 1CPU和內存。另一方面,只有較少的任務具有較高的CPU和內存使用率,即平均分別為0.287和0.018。
為提高云監控中數據分析能力,本文設計了包含雙層結構的云監控數據分析平臺。該平臺主要包含2個子系統:其一為較小數據量提供數據分析方法的核心結構;其二為分析大型數據集提供有效分布式計算算法的擴展結構。該平臺為系統CPU及內存使用分析過程提供了一定依據。
然而,本文系統在仿真時存在諸多限定,如數據集為模擬數據、系統運行時未考慮網絡攻擊等復雜行為。后續研究一方面可將大數據及人工智能技術引入系統,進一步提升系統預測能力;另一方面還可研究區塊鏈、信息安全等技術,以滿足系統數據安全及防止數據泄漏等需求。