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