朱園園 董曄


摘要:云計算被業界認為是第三次信息化浪潮,越來越多企業開始使用云計算技術,將應用部署到云平臺之上。云監控系統作為保證云平臺可靠性和可用性的手段,對于提高云平臺的服務質量起到至關重要的作用。該文基于開源云計算平臺OpenStack,設計并實現了一個云資源監控系統。該系統通過Libvirt中間層提供的各種API,對平臺上的虛擬機進行關鍵資源數據采集和存儲,并進行可視化展示。同時當資源使用率超過用戶預設監控閾值時,向用戶發送告警郵件。
關鍵詞: 云計算; OpenStack; 資源監控; Libvirt
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)18-0241-02
1 引言
隨著科技的不斷發展,云計算已經變成了當今最受歡迎的技術之一。云計算技術使得大量軟硬件資源整合在一起,組成龐大的資源池,利用虛擬化技術將資源共享給用戶按需付費使用,這種做法大大節省了企業采購及后期軟硬件維護成本,提高了現有資源的利用率[1]。云監控系統是云計算平臺的重要組成部分,一般包含如事件預測、網絡分析、調度管理、負載平衡和故障恢復等功能[2]。它可以直觀的展示平臺中的虛擬機和服務器性能參數,例如:CPU利用率、內存使用率、網口I/O、磁盤利用率等。通過這些參數可以準確地向外界反映出云平臺健康狀況,對于提高云平臺服務質量及運維人員的工作效率發揮著重要的作用[3]。
OpenStack作為當前主流的開源云計算平臺之一,具有穩定、良好的可擴展性和可靠性等特點。但OpenStack本身的監控系統(Ceilometer組件)目前功能還不夠全面,Ceilometer只關注資源監控數據的采集,忽略監控數據的存儲,且當采集大量數據時,Ceilometer性能大幅下降甚至出現服務不可用情況[4]。針對這個問題,需要設計一個基于OpenStack的云資源監控系統,實現監控數據采集、加工、存儲等功能。
2 系統需求分析
云監控系統是云平臺不可或缺的部分,全面的監控服務使用戶和管理員能夠快速識別資源使用異常狀況、發現系統故障、定位并診斷故障原因,從而合理利用資源,提高系統可靠性,提升服務質量和用戶滿意度。針對上述目標,云平臺資源監控系統至少應具備以下功能:1)資源數據采集功能。監控系統需要能及時準確地采集云平臺關鍵資源數據,這是監控的前提;2)不同資源具有不同特性,采集的原始數據格式也具有多樣性,為了方便存儲和統一處理,監控系統需要能將采集數據轉換為統一格式;3)云平臺資源使用情況不斷變化,如果資源使用率過高,將會影響云平臺的穩定性和可靠性,因此監控系統需要當資源使用情況異常時,及時給出告警,以便運維人員第一時間獲知異常狀況。
3 系統總體設計
3.1 系統整體架構設計
根據系統需求分析,基于OpenStack的云資源監控系統主要包含三個功能模塊:數據采集、數據處理與存儲和數據應用。
各個模塊主要功能描述如下:
1) 數據采集:該模塊主要通過Libvirt API從OpenStack云平臺獲取監控數據。經分析,對于虛擬機而言,CPU利用率、內存使用率、網口I/O及磁盤利用率均為虛擬機性能重要指標,因此選擇這四個指標作為采集對象。
2) 數據處理與存儲:該模塊主要是對采集的監控數據,進行進一步的處理和存儲。從Libvirt獲取的原始監控數據十分龐大且各種指標數據格式也不盡相同,這樣不利于系統統一處理和存儲,因此需要對其進行進一步處理,轉換為統一的JSON格式,存儲在非關系型數據庫mongdb中,以便后續使用。處理后的數據格式如圖1所示。
其中UUID是虛擬機標識符名稱,Type是采集指標類型,分為CPU利用率、內存使用率、網口I/O、磁盤利用率四種類型。Direction只在Type等于網口I/O時才有效,可選值為rx和tx,分別代表網口接收和發送兩個方向。Value是采集指標具體數值。TimeStamp為監控數據采集時間戳[4]。
3) 數據應用:包含監控數據展示和郵件告警功能。系統采取Flask(一種用于Python Web開發的第三方輕量級開源框架)以及bootstrap技術將采集的資源監控數據以圖表的形式可視化展現出來,便于用戶實時了解云平臺運行情況。另外該模塊還允許用戶預設各類資源監控閥值,如果監控數值超過預定閾值,說明虛擬機的負載過高,此時自動向用戶發送告警郵件。
3.2 數據采集工作原理
關鍵資源數據的采集,關乎整個云資源監控系統數據的來源,是實現云資源監控系統的前提條件。下面針對涉及的四類資源監控指標,分別闡述對應采集方法。
該系統使用Python作為編程語言,利用Libvirt提供的豐富API來獲取OpenStack監控資源數據。由于Libvirt API本身是用C語言實現的,因此需要手工安裝libvirt-python軟件包來實現對libvirt的綁定[5]。
4 系統實現
4.1 實驗環境
該系統使用vmware workstation 14 Pro創建3臺虛擬機,利用devstack腳本安裝分布式OpenStack(Pike版本)實驗環境,其中1臺虛擬機作為控制節點,2臺作為計算節點。
實驗環境規劃2個網絡:VMnet8(NAT模式)和VMnet2(Host-Only模式),前者為公共/管理網絡,主要用于OpenStack節點之間管理通信及訪問互聯網,網段為192.168.104.0/24。后者為內部網絡,用于OpenStack虛擬機之間互訪,網段為10.1.1.0/24。
4.2 監控數據展示
4.3 告警郵件
當采集的資源監控數值超過用戶預設閥值時,云平臺會往指定郵箱實時發送告警郵件。以CPU利用率為例,當CPU利用率超過90%時,用戶會收到標題為“CPU告警”的郵件。其他監控資源處理方式類似。
5 結論
隨著云計算技術不斷發展和成熟,云計算生態圈日漸完善成熟,越來越多企業開始將應用遷移和部署到云平臺之上。云資源監控系統作為云平臺的管理核心,可以有效地監控云平臺的運行狀況,是保證云平臺服務質量的有效方法。
該文基于OpenStack云平臺設計并實現了一個資源監控系統,可以實現虛機關鍵資源:CPU利用率、內存使用率、網口I/O和磁盤利用率數據收集及存儲,并提供監控數據實時展示和資源使用異常告警功能。但隨著云平臺規模擴大和應用種類增多,該系統還有很多需要完善的地方,例如:缺少對物理主機關鍵資源和云平臺關鍵服務運行狀況的監控、異常處理方式目前僅為告警郵件,手段過于單一,有待補充等,這些都有待后續進一步研究和改進。
參考文獻:
[1]? 武志學.云計算導論-概念 架構與應用[M].北京:人民郵電出版社,2016.
[2]? 張棋勝.云計算平臺監控系統的研究與應用[D].北京:北京交通大學,2011.
[3]? 劉飛宇.OpenStack云平臺下的虛擬機監控與控制的研究與實現[D].成都:電子科技大學,2013.
[4]? 李浩然.OpenStack虛擬機資源監控關鍵技術的研究與實現[D].北京:北京郵電大學,2017.
[5]? 任永杰,單海濤.KVM虛擬化技術實戰與原理解析[M].北京:機械工業出版社,2013.
[6]? 梁宇,楊海波,李鴻彬,等.基于OpenStack資源監控系統[J].計算機系統應用,2014,23(4):44-47.
【通聯編輯:代影】