張小銀+陳國勝
摘要:隨著現(xiàn)代數(shù)據(jù)中心云計算規(guī)模日益增長,云計算平臺的智能運維管理面臨較大挑戰(zhàn),尤其在實時監(jiān)控領(lǐng)域方面。本文首先對云計算監(jiān)控技術(shù)進(jìn)行了深入分析和研究,然后在開源云計算平臺Hadoop環(huán)境下,將Ganglia和Nagois兩種開源監(jiān)控軟件進(jìn)行整合,并利用移動飛信來實現(xiàn)對云計算平臺的實時監(jiān)控。實驗結(jié)果表明,該系統(tǒng)可對云計算平臺內(nèi)主機和服務(wù)以及運行環(huán)境的各項性能指標(biāo)進(jìn)行全方位監(jiān)控,實現(xiàn)對故障的實時預(yù)警和報警,使得管理人員能準(zhǔn)確定位、實時處理云平臺異常情況,從而提高了云平臺的服務(wù)質(zhì)量,有較好的應(yīng)用價值。
關(guān)鍵詞:云計算;Hadoop;性能指標(biāo);監(jiān)控系統(tǒng)
中圖分類號:TP3 文獻(xiàn)標(biāo)志碼:A文章編號:1672-1098(2015)02-0000-00
Abstract:With the growing scale of cloud computing in modern data centers, the intelligent operation and maintenance management faces a great challenge, especially in real-time monitoring. After a thorough analysis and research of cloud computing monitoring technologies, this paper integrates two open-source monitoring software Ganglia and Nagois in a Hadoop open-source cloud computing platform, and use a mobile message software FeiXin to achieve real-time monitoring of the cloud computing platform. Experimental results shows that the proposed system realizes an all-round monitoring of performance indicators for hosts and service of operating environment in cloud computing platform and a real-time warning of faults, which help management personnel accurately locate and real-timely process abnormal situations. Therefore the system improves the quality of service of cloud computing platform and has a good practical value.
Key words:Cloud computing; Hadoop; Performance indicators; Monitoring system
隨著云計算技術(shù)的不斷成熟發(fā)展,云計算平臺的規(guī)模以及資源也不斷增加?,F(xiàn)代數(shù)據(jù)中心的運維管理面臨著重大挑戰(zhàn),傳統(tǒng)的管理方法和管理模式已經(jīng)無法滿足要求。
為提高云計算平臺的可靠性,保證服務(wù)質(zhì)量,有必要在云計算平臺中引入監(jiān)控機制[1-3] [10],以便能準(zhǔn)確定位性能異?;蚬收系墓?jié)點,及時做出恢復(fù)和調(diào)整;掌握整個系統(tǒng)的運行狀況,分析系統(tǒng)瓶頸,為整個系統(tǒng)負(fù)載均衡提供數(shù)據(jù)支持,在系統(tǒng)出現(xiàn)異常時能起到預(yù)警的作用。
Ganglia是加州大學(xué)伯克利分校發(fā)起的一個開源監(jiān)控項目,主要用來監(jiān)控大規(guī)模分布式系統(tǒng)的性能[1] [2] [4] [10]。Nagios也是功能強大的開源監(jiān)控系統(tǒng),能監(jiān)控所指定(本地和遠(yuǎn)程)的主機以及服務(wù),可利用故障狀態(tài)實現(xiàn)故障報警[1] [2] [3] [5] [10]。Ganglia側(cè)重于數(shù)據(jù)采集,沒有內(nèi)置網(wǎng)絡(luò)服務(wù)的監(jiān)控和故障狀態(tài)級別,Nagios更側(cè)重于告警功能,配置文件較多,配置步驟繁瑣[1-2]。因此,本文采用兩款軟件結(jié)合,協(xié)同工作。
經(jīng)過幾年的迅速發(fā)展,Hadoop已經(jīng)成為開源云計算平臺的佼佼者,目前具有廣泛的用戶群體[2] [6]。因此,研究利用Ganglia和Nagios整合來監(jiān)控Hadoop系統(tǒng)具有廣闊的應(yīng)用前景。
1相關(guān)技術(shù)原理
11Hadoop技術(shù)
云計算是并行計算、分布式計算和網(wǎng)格計算的發(fā)展。具有超大規(guī)模、虛擬化、按需服務(wù)、高可靠性和高擴展性等特點。
Hadoop是一個開源的分布式計算平臺,由Apache軟件基金會支持發(fā)布。整個Hadoop的體系結(jié)構(gòu)主要是通過HDFS來實現(xiàn)對分布式存儲的底層支持,通過MapReduce來實現(xiàn)對分布式并行任務(wù)處理的程序支持的。
Hadoop分布式文件系統(tǒng)(HDFS)采用了主/從(Master/Slave)結(jié)構(gòu)模型,一個HDFS集群由一個名稱節(jié)點(Namenode)和若干個數(shù)據(jù)節(jié)點(Datanode)組成。Namenode作為主控服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的元數(shù)據(jù),Datanode存儲實際的數(shù)據(jù)。Namenode執(zhí)行文件系統(tǒng)的命名空間操作,如打開、關(guān)閉、重命名文件或目錄,Datanode負(fù)責(zé)處理客戶的讀寫請求,執(zhí)行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制工作。Namenode使用事務(wù)日志來記錄HDFS元數(shù)據(jù)的變化,使用映射文件存儲文件系統(tǒng)的命名空間。采用冗余備份、副本存放、心跳檢測、安全模式等策略使HDFS可靠性得到保證[2] [6]。
MapReduce是一種并行編程框架,它將分布式運算任務(wù)分解成多份細(xì)粒度的子任務(wù),發(fā)到由上千臺機器組成的集群上,這些子任務(wù)在各處理節(jié)點之上并行處理,最終通過某些特定的規(guī)則進(jìn)行合并生成最終的結(jié)果。MapReduce任務(wù)是由一個JobTracker和多個TaskTracker節(jié)點控制完成,JobTracker單獨運行在主節(jié)點上,負(fù)責(zé)調(diào)度管理TaskTracker,調(diào)度一個作業(yè)分解的所有子任務(wù)。主節(jié)點監(jiān)控子任務(wù)的執(zhí)行情況,從節(jié)點僅負(fù)責(zé)完成由主節(jié)點指派的子任務(wù)。MapReduce將分布式運算抽象成Map和Reduce兩個步驟,最終完成Hadoop的并行處理任務(wù)[2] [6]。
12云計算監(jiān)控技術(shù)
1) Ganglia監(jiān)控技術(shù)
Ganglia在結(jié)構(gòu)上由gmond 、gmetad和gweb三個守護(hù)進(jìn)程組成,三者相互協(xié)調(diào)[1] [2] [4] [10]。具體如圖1所示。
gmond是數(shù)據(jù)采集器,運行在所有被監(jiān)控主機上的一個守護(hù)進(jìn)程。用于收集被監(jiān)控主機上的基本指標(biāo),或者收集用戶自定義的指標(biāo),在同一個組播或單播通道上的傳遞。gmond 所產(chǎn)生的系統(tǒng)負(fù)載非常小,這使得在各被監(jiān)控主機上運行g(shù)mond時,不會影響到各主機的性能。Ganglia的收集數(shù)據(jù)可以分為單播和組播兩種工作模式。
gmetad是數(shù)據(jù)混合收集器,運行在監(jiān)控主機上的一個守護(hù)進(jìn)程,gmetad通過輪詢收集各主機上gmond 的數(shù)據(jù), 并聚合集群的各類信息,然后保存在本地RRD存儲引擎中。
gweb是Web可視化工具,采用PHP腳本語言實現(xiàn),運行在Ganglia的監(jiān)控主機上。可以通過瀏覽器從RRDTool數(shù)據(jù)庫中抓取信息,將數(shù)據(jù)可視化,動態(tài)的生成各類圖表。
Ganglia集群是主機和度量數(shù)據(jù)的邏輯分組,一般每個集群運行一個gmetad,可以構(gòu)成層次結(jié)構(gòu),正因為有這種層次結(jié)構(gòu)模式,才使得Ganglia可以實現(xiàn)良好的擴展。
2) Nagios監(jiān)控技術(shù)
Nagios監(jiān)控系統(tǒng)分為核心和插件兩大部分。Nagios的核心部分只提供了很少的監(jiān)控功能,其它大部分監(jiān)控功能需要安裝相應(yīng)的Nagios插件完成 [1-3] [5]。
Nagios可實現(xiàn)如下功能:監(jiān)視本地或者遠(yuǎn)程主機資源;監(jiān)視網(wǎng)絡(luò)服務(wù)資源;允許自定義插件來監(jiān)控特定的服務(wù);出現(xiàn)異常時,可以通過郵件、短信等方式通知管理人員;可以事先定義事件處理程序,當(dāng)主機或者服務(wù)出現(xiàn)故障時自動調(diào)用指定的處理程序;可以通過Web界面來監(jiān)控各個主機或服務(wù)的運行狀態(tài)。
Nagios必須運行在Linux/Unix服務(wù)器上,這臺服務(wù)器稱為監(jiān)控中心,每一臺需要監(jiān)視的主機或者服務(wù)都運行一個與監(jiān)控中心服務(wù)器進(jìn)行通信的Nagios軟件后臺程序。監(jiān)控中心服務(wù)器根據(jù)讀取配置文件中的指令與遠(yuǎn)程的守護(hù)程序進(jìn)行通信,并且指示遠(yuǎn)程的守護(hù)程序進(jìn)行必要的檢查。
遠(yuǎn)程被監(jiān)控的機器可以是任何能夠與其進(jìn)行通信的主機。根據(jù)遠(yuǎn)程主機返回的應(yīng)答,Nagios將根據(jù)配置以合適的行動進(jìn)行回應(yīng),通過一種或者多種方式報警。
NRPE是Nagios的一個功能擴展,它可在遠(yuǎn)程Linux/Unix主機上執(zhí)行插件程序,通過在遠(yuǎn)程主機上安裝NRPE構(gòu)件以及Nagios插件程序,向監(jiān)控中心提供該主機的一些本地的情況。
2云計算平臺智能監(jiān)控體系
本文在開源云計算平臺Hadoop環(huán)境下,將Ganglia和Nagois兩種開源監(jiān)控軟件進(jìn)行整合,配合移動飛信來實現(xiàn)對云計算平臺的實時監(jiān)控。形成了如圖2所示的一整套云計算平臺的智能監(jiān)控體系。
該模塊通過整合Ganglia和Hadoop平臺來采集監(jiān)控主機的基本指標(biāo)或者用戶自定義的指標(biāo)。然后進(jìn)行數(shù)據(jù)處理,包括信息聚合,分類,可視化,生成報表等。具體過程如下:
Ganglia的監(jiān)控進(jìn)程(gmond)發(fā)送的指標(biāo)格式是有明確定義的。用戶可配置Hadoop指標(biāo)子系統(tǒng),按照Ganglia的要求,直接向Ganglia發(fā)送指標(biāo)數(shù)據(jù)。用戶可以根據(jù)需要,用Ganglia對Hadoop的一個或全部上下文進(jìn)行監(jiān)控,需要監(jiān)控的Hadoop上下文包括Java虛擬機(JVM)上下文,遠(yuǎn)程調(diào)用(RPC)上下文,分布式文件系統(tǒng)(DFS)上下文,Mapreduce(mapred)上下文等配置項。每個上下文對應(yīng)一個Hadoop指標(biāo)子系統(tǒng),每個子系統(tǒng)包括多項Hadoop指標(biāo)。
Hadoop的配置見文件hadoop-metrics2.properties,配置項的前綴是上下文名稱,每個上下文配置項都有如下三個屬性。
在本系統(tǒng)中,由于只有少數(shù)主機需要處理,為簡化啟用和配置,Ganglia只使用單個集群。
在組播模式下,當(dāng)節(jié)點規(guī)模過大,組播會對系統(tǒng)性能會產(chǎn)生一定的影響。在本系統(tǒng)中,盡管只有三個節(jié)點,仍采用單播傳輸模式。
22監(jiān)控模塊
該模塊通過整合Nagios與Ganglia來完成相關(guān)資源的監(jiān)控,包括主機資源,網(wǎng)絡(luò)資源等。
在后臺,Nagios實際上只是單一進(jìn)行調(diào)度和通告的引擎。Nagios本身并不能監(jiān)控任何內(nèi)容,只能調(diào)度插件程序的執(zhí)行,并處理輸出結(jié)果。
本系統(tǒng)采用Nagios來監(jiān)控Ganglia指標(biāo)。Ganglia項目在gweb模塊中包含了一系列官方Nagios插件。這些插件使得Nagios用戶可以創(chuàng)建一些服務(wù),將存儲在Ganglia中的指標(biāo)和Nagios中定義的告警閾值進(jìn)行比較。
在實際應(yīng)用中,使用Ganglia插件來監(jiān)控系統(tǒng),如:Ganglia內(nèi)部使用心跳計數(shù)器來確定某臺主機是否在運轉(zhuǎn);將給定主機的單個指標(biāo)與預(yù)定義的Nagios的門限值進(jìn)行比較來檢查特定主機的某種指標(biāo);檢查特定主機上多種指標(biāo);檢查使用正則表達(dá)式所定義范圍內(nèi)主機的多種指標(biāo);驗證一套主機上的一個和多個指標(biāo)值是否相同。
在圖3中,這些插件和一系列專門為此創(chuàng)建的gweb PHP腳本進(jìn)行交互。毎個PHP腳本從插件接收參數(shù),解析從gmetad獲取的有關(guān)狀態(tài)緩存,提取被監(jiān)控實體當(dāng)前的指標(biāo)值,并返回。Nagios插件和PHP腳本成對出現(xiàn)。
實際應(yīng)用中,在hosts.cfg中定義hostgroup,格式如下:
其中,check-heartbeat.sh是Nagios插件。
此外,可以使用Nagios監(jiān)控Ganglia主機的運行情況,如使用check-nrpe守護(hù)進(jìn)程,監(jiān)控Ganglia的所有故障,如監(jiān)控匯聚主機上的gmetad和rrdcached以及所有主機上的gmond,監(jiān)控TCP端口(如gmetad和gmond的監(jiān)聽端口)的連通性等。
23報警模塊
為了減輕工作負(fù)擔(dān),使管理人員能實時獲取云計算平臺運行異?;蚬收闲畔ⅲ疚氖褂谜狭薔agios與移動飛信的報警模塊將報警信息直接送到管理人員手中。
Nagios利用插件使用Ganglia采集的信息,在運行指標(biāo)超過閾值的情況下通知管理人員,通知方式采用移動飛信。
Nagios下飛信的配置主要包括:
飛信命令定義
配置commands.cfg文件,定義一個服務(wù)故障時發(fā)送報警短信的指令,如下
3云計算平臺智能監(jiān)控系統(tǒng)的實現(xiàn)
31系統(tǒng)總體架構(gòu)及實現(xiàn)環(huán)境
本系統(tǒng)使用三臺VMware虛擬機,根據(jù)需要組建Hadoop集群,Hadoop集群各主機參數(shù)列表如表1所示。
表1Hadoop集群各主機參數(shù)列表
主機名IP地址CPU(個)內(nèi)存(G)硬盤(G) host110100981281010200 host6101009812488100 host7101009812688100
在三臺主機中安裝CentOS 65系統(tǒng),開發(fā)環(huán)境安裝JDK17,安裝Hadoop 112[7],配置host1作為NameNode、SecondaryNameNode, 三臺主機均配置為DataNode, 在host1上運行JobTracker,在三臺主機上均運行TaskTracker。
在host1上安裝Ganglia-gmetad 317,Ganglia-gweb 342[8],Web服務(wù)器Apache22,腳本語言php-533,在三臺主機均安裝Ganglia-gmond 317。
在host6主機上安裝Nagios Core 344[9], nagios-plugins-15, nrpe-214,Web服務(wù)器Apache22,腳本語言php-533,安裝移動飛信fetion。系統(tǒng)總體架構(gòu)如圖4所示。
Ganglia和Nagios均具有豐富的Web展示功能。實現(xiàn)環(huán)境中,Ganglia能監(jiān)控hadoop集群及各主機性能指標(biāo)眾多,大約有幾百個,下面只展示其中的幾個,圖5至
圖5host6節(jié)點一月內(nèi)平均負(fù)荷圖6host1節(jié)點一天內(nèi)jobtracker.heartbeats指標(biāo)圖7host1節(jié)點一天內(nèi)namenode.blockReport_num_ops指標(biāo)
Nagios監(jiān)控效果只選取一張圖,Nagios所有主機服務(wù)狀態(tài)詳述(局部)如圖8所示,上面十五項是hadoop集群中host1、host6、host7三臺主機上五個服務(wù)項的狀態(tài)信息,這五個服務(wù)項分別是:GMOND、check-ganglia-heartbeat、check-ganglia-metric disk-free、check-ganglia-metric load-one、check-value-same-everywhere,下面八項是Nagois主機上服務(wù)的狀態(tài)信息,本系統(tǒng)中Nagois主機即為host6。從這些效果圖可以看出,Ganglia和Nagios協(xié)調(diào)工作,實現(xiàn)了對Hadoop系統(tǒng)性能的監(jiān)控。圖8Nagios所有主機服務(wù)狀態(tài)詳述(局部)本系統(tǒng)一般只需設(shè)定Nagios插件返回Critical和Unknown二種狀態(tài)發(fā)出報警,且一小時間隔循環(huán)發(fā)送即可。在系統(tǒng)主機和服務(wù)出現(xiàn)異常情況時,管理員接收飛信的手機會收到報警短信,格式如下:發(fā)信人為“12520139xxxxxxx”,短信內(nèi)容為“XXX:1010098126host7/GMOND is CRITICAL”,最后是接收短信日期時間,“XXX”為接收飛信手機機主的姓名。此時,管理員可在本地或遠(yuǎn)程實時維護(hù)host7主機上的GMOND服務(wù)。
在實際應(yīng)用中,可以根據(jù)具體需求調(diào)整要監(jiān)控的服務(wù)項。利用Hadoop、Ganglia和Nagios良好的可擴展性,動態(tài)增加節(jié)點,以便加入更多的Hadoop應(yīng)用。通過改變Hadoop集群的負(fù)載,或通過調(diào)整VMware虛擬主機的部分參數(shù),使系統(tǒng)負(fù)載達(dá)到均衡。由于系統(tǒng)中使用的端口眾多,因此應(yīng)特別注意iptables防火墻的設(shè)置。
4結(jié) 語
在開源云計算平臺Hadoop環(huán)境下,利用Hadoop系統(tǒng)提供的監(jiān)控接口,將Ganglia和Nagios整合,通過Web可視化工具,強大的圖表展示功能,直觀地了解每個節(jié)點以及整個Hadoop系統(tǒng)的工作狀態(tài),并利用移動飛信進(jìn)行故障報警,對調(diào)整Hadoop系統(tǒng)的運行參數(shù)、提高系統(tǒng)整體資源效率起到重要作用。
參考文獻(xiàn):
[1]袁凱.云計算環(huán)境下的監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[D].武漢:華中科技大學(xué),2012.
[2]張仲妹.云計算環(huán)境下的資源監(jiān)控應(yīng)用研究[D].北京:北方工業(yè)大學(xué),2013.
[3]沈青,董波,肖德寶.基于服務(wù)器集群的云監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[J].計算機工程與科學(xué),2012,34(10):73-77.
[4]Matt M.,Bernard L.,Brad N..陳學(xué)鑫,張誠誠譯.Ganglia系統(tǒng)監(jiān)控[M].北京:機械工業(yè)出版社,2013:12-15,133-135.
[5]陶利軍.掌控:構(gòu)建Linux系統(tǒng)Nagios監(jiān)控服務(wù)器[M].北京:清華大學(xué)出版社,2013.
[6]劉鵬,黃宜華,陳衛(wèi)衛(wèi).實戰(zhàn)Hadoop:開啟通向云計算的捷徑[M].北京:電子工業(yè)出版社,2011:37-38,60,62.
[7]Apache Software Foundation. Hadoop官方網(wǎng)站[EB/OL].
[8]http://ganglia.info/. Ganglia發(fā)布網(wǎng)站[EB/OL].
[9]http://www.nagios.org/. Nagios官方網(wǎng)站[EB/OL].
[10]李超,梁阿磊,管海兵.海量存儲系統(tǒng)的性能管理與監(jiān)測方法研究[J].計算機應(yīng)用與軟件,2012,29(7):78-80.