單 莘 祝智崗 張 龍 付長冬 魏書曉
基于流處理技術(shù)的云計算平臺監(jiān)控方案的設(shè)計與實現(xiàn)
單 莘1祝智崗1張 龍1付長冬2魏書曉2
1(中國移動通信集團河北有限公司 河北 石家莊 050021)
2(北京郵電大學 北京 100876)
針對目前云計算平臺監(jiān)控手段實時性差的問題,提出一種基于大數(shù)據(jù)流處理技術(shù)的云計算平臺實時監(jiān)控方案。該方案采用實時計算系統(tǒng)Storm作為核心,使用iostat、mpstat等工具獲取服務(wù)器性能信息,使用Flume和Libvirt獲取全方位的日志信息以及云主機狀態(tài)信息。獲取到的信息以數(shù)據(jù)流的形式傳至Storm,然后進行數(shù)據(jù)清洗、關(guān)鍵詞匹配等實時分析。在模擬生產(chǎn)環(huán)境下對該方案進行測試,結(jié)果表明:該方案能夠?qū)崿F(xiàn)對大規(guī)模云計算平臺進行實時監(jiān)控,而且具有高可靠性、高擴展性的的優(yōu)點,達到研究效果。
云計算 流處理 大數(shù)據(jù)
隨著云計算時代的到來,越來越多的網(wǎng)絡(luò)服務(wù)正發(fā)生著革命性的變化[1]。尤其當亞馬遜、微軟、谷歌等IT巨頭推出公有云托管服務(wù)之后,越來越多的網(wǎng)絡(luò)服務(wù)都運行于云計算平臺之上,這使得IT正向著集約化、規(guī)?;c專業(yè)化的道路發(fā)展[2]。在云計算消費模式下,用戶在無需了解服務(wù)器底層硬件架構(gòu)、網(wǎng)絡(luò)鏈接、存儲方式等的情況下,只需通過簡單的網(wǎng)絡(luò)申請即可獲得高效、安全的云計算服務(wù),這在很大程度上降低了用戶的硬件投入并節(jié)省了空間[3-5]。同時,采用托管形式的云主機都是通過專業(yè)的運維人員進行維護,這無疑提高了系統(tǒng)的安全性并減低了運維成本。
雖然使用Libvirt所提供的API可以實現(xiàn)對云主機進行監(jiān)控,但是這種方式局限于對云主機操作系統(tǒng)運行/關(guān)閉、網(wǎng)絡(luò)資源、硬件資源等底層監(jiān)控。對云主機操作系統(tǒng)以及運行于之上的業(yè)務(wù)系統(tǒng)軟件機的監(jiān)控,大多是通過消息隊列的監(jiān)控實現(xiàn)的[6-9]。隨著大數(shù)據(jù)分析技術(shù)的到來,目前出現(xiàn)了基于大數(shù)據(jù)批處理技術(shù)云計算平臺監(jiān)控系統(tǒng)[10]。這種系統(tǒng)具有監(jiān)控全面的優(yōu)點,但是由于采用批處理,無法滿足實時監(jiān)控的要求[11,12]。
針對上述不足,本文結(jié)合目前主流的監(jiān)控手段以及當前流行的大數(shù)據(jù)流處理技術(shù)[13-15],提出了一套云計算平臺實時監(jiān)控方案。該方案具有以下特點:能夠?qū)υ朴嬎闫脚_底層物理機、云主機的運行信息進行實時監(jiān)控;能夠?qū)Ω黝愋偷南到y(tǒng)日志信息以及應(yīng)用軟件日志信息進行實時獲取分析;采用分布式架構(gòu)實現(xiàn),具有良好的擴展性。
1.1 設(shè)計思想
本方案是根據(jù)目前云計算平臺監(jiān)控的實際需求以及當前監(jiān)控系統(tǒng)的不足而設(shè)計的,主要目的是為云計算平臺提供一種高效實時的監(jiān)控方法,其核心定位如下:
1) 基于開源的大數(shù)據(jù)流處理工具Storm實現(xiàn)監(jiān)控信息實時分析,每個節(jié)點每秒可以分析數(shù)十萬條監(jiān)控信息,實現(xiàn)真正的實時監(jiān)控;
2) 利用現(xiàn)有監(jiān)控工具mrtg、iostat、mpstat等對目標進行監(jiān)控,并通過使用thrift、RPC等將監(jiān)控信息傳遞至監(jiān)控平臺;
3) 采用分布式日志采集工具Flume實現(xiàn)服務(wù)器日志以及業(yè)務(wù)日志的全面采集,確保監(jiān)控的準確性;
4) 結(jié)合Libvirt、RabbitMq實現(xiàn)云主機狀態(tài)信息獲?。?/p>
5) Flume、Storm都是使用分布式架構(gòu),便于系統(tǒng)集群擴展。
1.2 實現(xiàn)原理
該方案的核心部分主要包括信息獲取模塊、大數(shù)據(jù)實時分析模塊兩部分。
1.2.1 監(jiān)控信息獲取模塊
為了實現(xiàn)對整個云計算平臺的全面監(jiān)控,需要對構(gòu)成云計算平臺底層的物理機(云主機物理機)、云主機以及云主機內(nèi)運行的網(wǎng)絡(luò)業(yè)務(wù)運行信息進行監(jiān)控,其中底層物理機以及云主機在本方案中統(tǒng)稱為統(tǒng)稱為服務(wù)器。
(1) 服務(wù)器操作系統(tǒng)狀態(tài)信息獲取
圖1 系統(tǒng)狀態(tài)信息獲取
Linux操作系統(tǒng)中,可直接使用腳本的形式獲取當前服務(wù)器的基本狀態(tài)信息。例如使用top命令可以直接獲取當前服務(wù)器中CPU使用率、各進程所占用的內(nèi)存、CPU等。這些操作系統(tǒng)基本狀態(tài)信息的獲取過程如圖1所示。
為了實現(xiàn)所獲取的信息能夠以數(shù)據(jù)流的形式傳遞,首先將所獲取的信息壓入RabbitMq等消息隊列當中,然后再以數(shù)據(jù)流的形式輸出。
(2) 云主機運行狀態(tài)信息
圖2 云主機狀態(tài)信息獲取
云主機運行狀態(tài)是指KVM、VMware等虛擬工具層上可以獲取到的當前的虛擬云主機的運行狀態(tài),主要包括創(chuàng)建、資源分配情況、開關(guān)機情況、網(wǎng)絡(luò)鏈接狀況等。云主機運行狀態(tài)信息獲取過程如圖2所示。
從圖2當中可以看出,云主機運行狀態(tài)信息是通過調(diào)用底層物理機的Libvirt的接口實現(xiàn)的。Libvirt為各種虛擬化工具提供一套方便、可靠的編程接口,支持與C、C++、 Ruby、Python等多種主流開發(fā)語言的綁定,主流Linux平臺上默認的虛擬化管理工具virt-manager、virt-install等均基于Libvirt開發(fā)而成。
(3) 日志采集
Linux操作系統(tǒng)在運行過程當中都會產(chǎn)生大量的日志信息,其中包括操作系統(tǒng)資源日志、網(wǎng)絡(luò)日志、用戶操作日志。同時,大部分運行于Linux操作系統(tǒng)的軟件運行過程也會產(chǎn)生各種日志,例如Apache服務(wù)器的運行日志和訪問日志、Mysql等數(shù)據(jù)庫的各種操作日志、Oracle的監(jiān)聽日志等。這些日志可以全面地反應(yīng)當前系統(tǒng)或者軟件的運行狀況。
圖3 Flume獲取日志信息過程
由于各種日志的信息量極大,尤其是在公有云平臺上。為了實現(xiàn)對大規(guī)模日志采集,使用開源分布式日志采集工具Flume對這些日志信息進行采集。Flume不僅能夠?qū)崿F(xiàn)對日志的同步采集,還能夠?qū)崿F(xiàn)日志的聚合和傳輸。Flume支持定制各類數(shù)據(jù)發(fā)送方式,F(xiàn)lume日志采集系統(tǒng)組成如圖3所示。
在圖3當中,Agent運行于采集服務(wù)器上,用于日志更新同步。Agent獲取的信息傳遞至收集服務(wù)器Collector,然后聚合之后根據(jù)指定的參數(shù)發(fā)送。整個采集過程中,使用Controller服務(wù)器對著整個日志采集過程進行控制,其中包括日志采集間隔、輸出方式等。本文中所有采集的日志信息采用數(shù)據(jù)流輸出,便于實時流處理模塊進行處理。
為了實現(xiàn)更加全面的對操作系統(tǒng)運行狀況進行監(jiān)控,首先使用腳本的形式調(diào)用Linux內(nèi)核自帶以及云主機預(yù)裝的系統(tǒng)監(jiān)控工具獲取系統(tǒng)當前運行狀態(tài)并將這些狀態(tài)信息寫入文本當中,然后將這些文本作為日志文件使用Flume獲取。目前使用Flume也可以對一些簡單的監(jiān)控工具信息進行傳遞,為了實現(xiàn)整個平臺日志采集部分的統(tǒng)一方法以及對所有監(jiān)控工具的支持,本系統(tǒng)采用文本日志的形式對這類信息進行采集。整個Flume日志采集流程如圖4所示。
在圖4當中,為了方便Hadoop等其它分析工具進行批處理,將日志信息同時寫入到分布式文件系統(tǒng)當中。
1.2.2 信息流處理
操作系統(tǒng)運行過程時始終都會產(chǎn)生狀態(tài)信息、日志信息,這些信息只有及時的處理才能夠?qū)崿F(xiàn)對操作系統(tǒng)有效監(jiān)控。同時,運行于云主機上的各種業(yè)務(wù)軟件會產(chǎn)生更多的運行日志,例如用戶量大的Apache、Ngnix服務(wù)器每天會產(chǎn)生幾百兆甚至更多的日志信息。為了實現(xiàn)對整個云計算平臺的實時監(jiān)控,必須能夠?qū)@些信息進行實時分析。
圖5 Storm流處理的拓撲結(jié)構(gòu)
為了確保實現(xiàn)對消息隊列當中所有消息進行百分百處理,現(xiàn)將消息隊列緩存至Memcashed,此時Memcashed作為消息容器,以Storm分析最高速度向其傳遞數(shù)據(jù)流。首先使用Storm的Spout從信息采集模塊當中RabbitMQ獲取各種隊列信息,并作為流數(shù)據(jù)的形式傳遞至bolt進行分析處理。整個Storm流處理部分的實現(xiàn)拓撲如圖5所示。
根據(jù)實際的需要,在bolt當中可以編寫任意指定的數(shù)據(jù)分析算法,例如可以實現(xiàn)關(guān)鍵字檢索、數(shù)據(jù)庫、數(shù)據(jù)ETL。Storm基礎(chǔ)框架支持java、python等各種語言,這極大地的方便了分析算法的開發(fā)速度并提高代碼的可移植性。同時由于采用分布式架構(gòu),方便后期擴展。
為了驗證方案的可靠性,在公有云環(huán)境下的規(guī)模云計算平臺進行實際測試。測試云平臺當中包括340多臺X86服務(wù)器以及運行在這些服務(wù)器上3560臺作為Web服務(wù)器的云主機及其運行的Apache等應(yīng)用軟件。
(1) 監(jiān)控內(nèi)容
測試過程,選擇云計算平臺的所有服務(wù)器操作系統(tǒng)(包括物理機和云主機)wtmp信息、utmp信息、iostat信息等八種系統(tǒng)信息作為操作系統(tǒng)監(jiān)控信息;選擇云主機上運行的Mysql、Apache、PHP解析器等9種應(yīng)用軟件日志作為業(yè)務(wù)監(jiān)控信息;同時,為了對云主機實時監(jiān)控,選擇Libvirt的云主機狀態(tài)信息作為監(jiān)控信息。
(2) 硬件配置
系統(tǒng)的硬件設(shè)備主要包括信息采集服務(wù)器、流處理服務(wù)器集群以及Web服務(wù)器。各種服務(wù)器的硬件配置如表1所示。
表1 服務(wù)器硬件配置
Flume和Storm采用分布式架構(gòu)設(shè)計,能夠隨著業(yè)務(wù)的增長而隨時進行擴展。整個系統(tǒng)服務(wù)器拓撲結(jié)構(gòu)如圖6所示。
圖6 服務(wù)器拓撲結(jié)構(gòu)
(3) 測試過程
為確保實驗結(jié)果的準確性,采用控制變量法的實驗方式進行測試。在其它條件不變的情況下以5節(jié)點/次的速度逐漸增加物理機數(shù)目,同時運行物理機操作系統(tǒng)當中的所有云主機及其運行的應(yīng)用軟件。
需要說明的是,在所有云計算平臺物理機當中包含控制節(jié)點、網(wǎng)絡(luò)節(jié)點等支撐節(jié)點存在11臺,這些支撐節(jié)點不會作為物理機直接支撐云主機運行。平均每個計算節(jié)點上會運行10.7云主機(客戶機),這也就是說云主機以53.5節(jié)點/次的速度逐漸增加。
(4) 測試結(jié)果
分別對系統(tǒng)狀態(tài)信息、云主機狀態(tài)信息、云主機應(yīng)用軟件信息的數(shù)據(jù)流大小進行了統(tǒng)計分析,統(tǒng)計結(jié)果如圖7所示。
從圖7當中可以看出對于系統(tǒng)狀態(tài)信息以及云主機狀態(tài)信息數(shù)據(jù)量大小都隨著物理機的增多而呈標準線性增長;日志信息的數(shù)據(jù)量隨著物理機的增多而波動性增長,但是大體趨勢仍與線性增長相一致。出現(xiàn)這種波動的原因是由于云主機當中運行的各種應(yīng)用軟件的運行狀況不同造成的,例如當某個Apache服務(wù)器訪問量變化很大時,對應(yīng)的訪問日志信息的產(chǎn)生量也會發(fā)生很大的變化??傮w上,各種日志信息數(shù)據(jù)量遠遠大于狀態(tài)信息量。
對云計算平臺系統(tǒng)監(jiān)控信息、云主機狀態(tài)信息以及應(yīng)用軟件日志信息進行監(jiān)測分析的性能表現(xiàn)如圖8所示。
從圖8當中可以看出隨著物理機的數(shù)目逐漸增多,云主機狀態(tài)監(jiān)視延時以及系統(tǒng)狀態(tài)監(jiān)視延時沒有太大的變化,這是由于這類的狀態(tài)信息格式明確,分析簡單。從Storm集群負載情況來看,當所有物理節(jié)點都添加完成之后,對于全部狀態(tài)信息的分析只占用12%左右的系統(tǒng)資源。日志信息分析的延時隨著物理機數(shù)量的增多而呈線性增長,這是由于日志信息大多為非結(jié)構(gòu)化數(shù)據(jù),需要經(jīng)過篩選等一系列的分析,所有耗費時間較長,延時大。從圖X可以看出,對全部內(nèi)容進行分析的時延與只對日志信息進行分析的時延相近。
圖7 監(jiān)控信息數(shù)據(jù)流統(tǒng)計 圖8 監(jiān)控延時統(tǒng)計
本文提出了一種基于大數(shù)據(jù)流處理技術(shù)的云計算平臺實時監(jiān)控方案。該方案不僅可以實現(xiàn)對云計算平臺底層物理機、云主機狀態(tài)的監(jiān)控,而且還能夠?qū)崿F(xiàn)對云主機運行的應(yīng)用軟件的監(jiān)控。實驗結(jié)果表明使用該方案對大規(guī)模云計算平臺進行實時監(jiān)控是可行的,這為提高云計算服務(wù)平臺的可靠性提供了基礎(chǔ)。
由于實驗條件的限制,涉及方案只是在小規(guī)模的云計算平臺上進行了測試,這與真實的生產(chǎn)環(huán)境還有一定的差距,這些差距可能會使得測試結(jié)果有一定的偏差。因此,在更大規(guī)模的云計算平臺上進行實際測試將是下一步的研究的主要工作。
[1] 李春霖.云計算綜述與移動云計算的應(yīng)用研究[J].科技創(chuàng)新與應(yīng)用,2014,24(6):86-87.
[2] 張潔.云計算環(huán)境下的數(shù)據(jù)存儲保護機制研究與仿真[J].計算機仿真,2013,30(8):254-258.
[3] 劉嵩,李文蕙.云計算系統(tǒng)中基于邊緣節(jié)點和容量的延遲分析[J].計算機應(yīng)用與軟件,2014,31(4):35-39,50.
[4] 包鋒.基于云計算的軟件工程專業(yè)實訓(xùn)平臺構(gòu)建與研究[J].價值工程,2014,13(2):89-92.
[5] 陳牮華.基于云計算的網(wǎng)絡(luò)安全數(shù)據(jù)傳遞方法研究[J].計算機仿真,2012,29(8):139-143.
[6] 黃哲學,曹付元,李俊杰,等.面向大數(shù)據(jù)的海云數(shù)據(jù)系統(tǒng)關(guān)鍵技術(shù)研究[J].網(wǎng)絡(luò)新媒體技術(shù),2012,1(6):20-26.
[7] 吳正學,戴牡紅.云計算中基于否定規(guī)則的訪問控制技術(shù)的研究[J].計算機應(yīng)用與軟件,2014,31(1):30 - 33,72.
[8] 王金棟,周良,張磊.分布式數(shù)據(jù)流處理中的負載分配策略[J].南京航空航天大學學報,2006,38(2):212-216.
[9] 田杭沛,高德遠,樊曉椏,等.面向?qū)崟r流處理的多核多線程處理器訪存隊列[J].計算機研究與發(fā)展,2009,46(10):1635-1642.
[10] Friske C A,Ruddy J A,Shibamiya A.Method for estimating the elapsed-time required for a log apply process:U.S.,6535893[P].2003-03-18.
[11] 沈金明.基于系統(tǒng)日志的計算機網(wǎng)絡(luò)用戶行為取證分析系統(tǒng)的研究與實現(xiàn)[D].南京:東南大學,2006.
[12] 季根生.計算機系統(tǒng)日志自動分析的實現(xiàn)[J].鐵路計算機應(yīng)用,2007,16(3):48-50.
[13] 吳甘沙,連城,鐘翔.低延遲流處理系統(tǒng)的逆襲[J].程序員,2013(10):97-101.
[14] 劉光敏,陳慶奎.面向大規(guī)模數(shù)據(jù)流處理的偏最小二乘法[J].計算機應(yīng)用研究,2014,31(4) :1055-1058.
[15] 孫大為,張廣艷,鄭緯民.大數(shù)據(jù)流式計算:關(guān)鍵技術(shù)及系統(tǒng)實例[J].軟件學報,2014,25(4):839-862.
DESIGN AND REALISATION OF STREAM PROCESSING TECHNOLOGY-BASED CLOUD COMPUTING PLATFORM MONITORING SCHEME
Shan Xin1Zhu Zhigang1Zhang Long1Fu Changdong2Wei Shuxiao2
1(ChinaMobileGroupHebeiCo.Ltd.,Shijiazhuang050021,Hebei,China)2(BeijingUniversityofPostsandTelecommunications,Beijing100876 ,China)
As to the poor real-time performance of monitoring tools on cloud computing platform currently,this paper presents a real-time monitoring scheme for cloud computing platform,which is based on big data stream processing technology.The scheme takes the real-time computing system Storm as the kernel,uses the tools such as iostat,mpstat to obtain server performance information,and employs Flume and Libvirt to get the full range of log files information as well as the cloud host status information.All of the collected information will be sent to Storm in the form of data stream,and real-time analyses including data cleaning,keywords matching,etc.,will be carried out.The test on scheme is conducted in the environment of simulated production.Experimental result shows that the scheme can achieve real-time monitoring on large-scale cloud computing platform,and has the advantages of high reliability and scalability,it reaches the research effect.
Cloud computing Stream processing Big data
2014-10-29。單莘,高工,主研領(lǐng)域:電信核心網(wǎng)云計算技術(shù),大數(shù)據(jù)技術(shù)。祝智崗,工程師。張龍,工程師。付長冬,博士。魏書曉,工程師。
TP39
A
10.3969/j.issn.1000-386x.2016.04.021