綜合利用Nagios、Ganglia和Splunk搭建起的云計(jì)算平臺(tái)監(jiān)控體系,具備錯(cuò)誤報(bào)警、性能調(diào)優(yōu)、問(wèn)題追蹤和自動(dòng)生成運(yùn)維報(bào)表的功能。有了這套系統(tǒng),就可輕松管理Hadoop/HBase云計(jì)算平臺(tái)。
云計(jì)算早已不是停留在概念階段了,各大公司都購(gòu)買了大量的機(jī)器,開(kāi)始正式的部署和運(yùn)營(yíng)。而動(dòng)輒上百臺(tái)的性能強(qiáng)勁的服務(wù)器,為運(yùn)營(yíng)管理帶來(lái)了巨大的挑戰(zhàn)。
如果沒(méi)有方便的監(jiān)控報(bào)警平臺(tái),對(duì)于管理員而言猶如噩夢(mèng),每天都將如救火隊(duì)員一樣,飛快地敲擊鍵盤(pán),用原始的Unix命令在多臺(tái)機(jī)器中疲于奔命。
如果沒(méi)有好的日志管理平臺(tái),對(duì)于開(kāi)發(fā)者Troubleshooting更是一件淚流滿面的事情。
而如果你是運(yùn)維團(tuán)隊(duì)的總負(fù)責(zé)人,簡(jiǎn)潔清晰的Report則非常重要。Stakeholder們動(dòng)不動(dòng)就可能問(wèn)起系統(tǒng)的SLA、機(jī)器的利用率等諸多問(wèn)題,畢竟,公司為此投入了巨大的資金和人力。
朋友們,當(dāng)我們管理起公司寄予厚望的云計(jì)算平臺(tái)時(shí),當(dāng)我們面對(duì)如此多充滿挑戰(zhàn)的實(shí)際問(wèn)題時(shí),該怎么辦?
概述
我們?cè)诖罱ㄚ厔?shì)云計(jì)算平臺(tái)時(shí),遇到了很多的問(wèn)題和挑戰(zhàn)。開(kāi)始搭建時(shí),第一次來(lái)了那么多性能強(qiáng)勁的機(jī)器,我們?cè)诟械脚d奮的同時(shí),也不免有些顧慮。大家坐在一起討論,問(wèn)題就列了滿滿一白板。
出了問(wèn)題怎么辦,有沒(méi)有預(yù)警機(jī)制?
有沒(méi)有可視化的管理界面?
管理平臺(tái)需要自己開(kāi)發(fā)嗎?開(kāi)發(fā)難度有多大?
紅色部分清楚地標(biāo)注有問(wèn)題的機(jī)器,點(diǎn)開(kāi)鏈接,就可以得到有問(wèn)題機(jī)器的情況。雖然在HBase中,幾臺(tái)Region Server宕機(jī)不會(huì)對(duì)整體服務(wù)產(chǎn)生大的影響,但多少會(huì)影響到系統(tǒng)的Performance。而且,如果某幾臺(tái)Region Server頻繁宕機(jī),對(duì)整個(gè)系統(tǒng)的穩(wěn)定性也會(huì)產(chǎn)生不好的影響。有了Nagios,我們可以快速定位有問(wèn)題的機(jī)器,及時(shí)地將一些機(jī)器移除出HBase系統(tǒng),待調(diào)整好了再上線運(yùn)行,以保證系統(tǒng)的穩(wěn)定性。
現(xiàn)在,Nagios已經(jīng)成為了很多公司必備的監(jiān)控工具。只需要簡(jiǎn)單地配置,就可以實(shí)現(xiàn)強(qiáng)大的功能,將管理員從日常煩瑣的工作中解放出來(lái)。
有了Nagios,哪怕就是管理上千臺(tái)機(jī)器,也不會(huì)手忙腳亂,而是有一種統(tǒng)領(lǐng)千軍、運(yùn)籌帷幄的感覺(jué)。
Ganglia:看到云計(jì)算平臺(tái)的方方面面
Nagios的確不錯(cuò),但你是不是真的可以喝茶、釣魚(yú)、睡大覺(jué)呢?顯然還不行。有了Nagios,你基本上可以做個(gè)優(yōu)秀的救火隊(duì)員,能在事發(fā)第一時(shí)間到達(dá)現(xiàn)場(chǎng)、處理事故。但如何防患于未然,真正做到運(yùn)籌帷幄、游刃有余呢?
我們需要更加精確的數(shù)據(jù),能夠看到云計(jì)算平臺(tái)的方方面面,能根據(jù)這些數(shù)據(jù),做出性能調(diào)整、升級(jí)、擴(kuò)容等的決策,從而保證Service能夠滿足不斷增長(zhǎng)的業(yè)務(wù)需求。
這時(shí)候,你需要Ganglia。
Ganglia是UC Berkeley發(fā)起的一個(gè)開(kāi)源實(shí)時(shí)監(jiān)視項(xiàng)目,用于測(cè)量數(shù)以千計(jì)的節(jié)點(diǎn),為云計(jì)算系統(tǒng)提供系統(tǒng)靜態(tài)數(shù)據(jù)以及重要的性能度量數(shù)據(jù)。Ganglia系統(tǒng)基本包含以下三大部分。
Gmond:Gmond運(yùn)行在每臺(tái)計(jì)算機(jī)上,它主要監(jiān)控每臺(tái)機(jī)器上收集和發(fā)送度量數(shù)據(jù)(如處理器速度、內(nèi)存使用量等)。
Gmetad:Gmetad運(yùn)行在Cluster的一臺(tái)主機(jī)上,作為Web Server,或者用于與Web Server進(jìn)行溝通。
Ganglia Web前端:Web前端用于顯示Ganglia的Metrics圖表。
Hadoop和HBase本身對(duì)于Ganglia的支持非常好。通過(guò)簡(jiǎn)單的配置,我們可以將Hadoop和HBase的一些關(guān)鍵參數(shù)以圖表的形式展現(xiàn)在Ganglia的Web Console上。這些對(duì)于我們洞悉Hadoop和HBase的內(nèi)部系統(tǒng)狀態(tài)有很大的幫助。
在Hadoop的conf文件夾下面,找到hadoop-metrics.properties,配置好Ganglia的Server即可。這里要注意,Ganglia 3.0和Ganglia 3.1的區(qū)別,它們使用了不同的class。
dfs.class=org.apache.hadoop.metrics.ganglia.GangliaContext31 dfs.period=10 dfs.servers={Ganglia_Server}:8649
有了這些圖表,Hadoop和HBase就不再是一個(gè)黑盒。無(wú)論是Hadoop的Namenode、Datanode,還是HBase的 MasterServer、RegionServer任何時(shí)刻的情況,都會(huì)一目了然。由于圖標(biāo)的跨度可以是小時(shí)、天、月甚至是年,這樣,就可以非常方便地定期生成周報(bào)、月報(bào)和年報(bào)。同時(shí),根據(jù)圖中Metrics的狀況,我們可以通過(guò)調(diào)整參數(shù)、增加內(nèi)存和硬盤(pán)、增加機(jī)器等的方法調(diào)整單個(gè)機(jī)器或者整個(gè) Service的性能。
有沒(méi)有開(kāi)源的管理工具?
那么多日志分布在各個(gè)機(jī)器上,有沒(méi)有更有效的方法管理?
能否生成好的報(bào)表?
機(jī)器宕機(jī),管理員能否收到短信通知?
如何做性能調(diào)優(yōu)?
擴(kuò)容升級(jí)時(shí),能否給出依據(jù)?
帶著這些問(wèn)題,我們開(kāi)始了自己的云計(jì)算平臺(tái)管理和運(yùn)營(yíng)之旅,一路走來(lái),收獲頗豐?,F(xiàn)在基本上形成了如圖1所示的一整套云計(jì)算平臺(tái)監(jiān)控體系。
圖1 云計(jì)算平臺(tái)監(jiān)控架構(gòu)
在這個(gè)系統(tǒng)中,我們綜合利用了Nagios、Ganglia和Splunk,搭建起云計(jì)算平臺(tái)監(jiān)控體系,使其具備錯(cuò)誤報(bào)警、性能調(diào)優(yōu)、問(wèn)題追蹤和自動(dòng)生成運(yùn)維報(bào)表的功能。有了這套系統(tǒng),我們終于能夠輕松管理Hadoop/HBase云計(jì)算平臺(tái)了。接下來(lái)將簡(jiǎn)單介紹它們的特點(diǎn)和功能。
Nagios:云計(jì)算平臺(tái)的智能報(bào)警器
總不能天天盯著機(jī)器看吧,因此我們首先關(guān)心的是機(jī)器的監(jiān)控與報(bào)警。最理想的境界是:如果機(jī)器出故障了,我能第一時(shí)間處理;如果機(jī)器沒(méi)有問(wèn)題(最好永遠(yuǎn)沒(méi)有問(wèn)題),我能去喝茶、釣魚(yú)和睡大覺(jué)。
發(fā)現(xiàn)機(jī)器有沒(méi)有問(wèn)題,對(duì)我們而言不是什么難事。寫(xiě)個(gè)腳本,Ping一下IP,Telnet每臺(tái)機(jī)器的Service端口,如果增加了新機(jī)器就改改配置即可。但這樣也太原始了吧,可視化效果差,不好維護(hù),沒(méi)有層次,不好管理,出不來(lái)報(bào)表,總不能老是用Excel人工寫(xiě)報(bào)表吧。有沒(méi)有更好的方法呢?
有,你可以用Nagios。
Nagios是一個(gè)可運(yùn)行在Linux/Unix平臺(tái)之上的開(kāi)源監(jiān)視系統(tǒng),可以用來(lái)監(jiān)視系統(tǒng)運(yùn)行狀態(tài)和網(wǎng)絡(luò)信息。Nagios可以監(jiān)視所指定的本地或遠(yuǎn)程主機(jī)以及服務(wù),同時(shí)提供異常通知功能。
Nagios可以提供以下幾種監(jiān)控功能。
監(jiān)控網(wǎng)絡(luò)服務(wù)(SMTP、POP3、HTTP、NNTP、Ping等)。
監(jiān)控主機(jī)資源(處理器負(fù)荷、磁盤(pán)利用率等)。
簡(jiǎn)單的插件設(shè)計(jì)使得用戶可以方便地?cái)U(kuò)展自己服務(wù)的檢測(cè)方法。
并行服務(wù)檢查機(jī)制。
具備定義網(wǎng)絡(luò)分層結(jié)構(gòu)的能力,并使用“parent”主機(jī)定義來(lái)表達(dá)網(wǎng)絡(luò)主機(jī)間的關(guān)系,這種關(guān)系可被用來(lái)發(fā)現(xiàn)和明晰主機(jī)宕機(jī)或不可達(dá)狀態(tài)。
當(dāng)服務(wù)或主機(jī)問(wèn)題產(chǎn)生與解決時(shí)將告警發(fā)送給聯(lián)系人(通過(guò)電子郵件、短信、用戶定義方式)。
具備定義事件處理功能,可以在主機(jī)或服務(wù)的事件發(fā)生時(shí)獲取更多問(wèn)題定位。
自動(dòng)的日志回滾。
可以支持并實(shí)現(xiàn)對(duì)主機(jī)的冗余監(jiān)控。
可選的Web界面用于查看當(dāng)前的網(wǎng)絡(luò)狀態(tài)、通知和故障歷史、日志文件等。
Nagios最好用的地方就是它將這些每天管理員做的工作自動(dòng)化,你只需設(shè)定好要監(jiān)聽(tīng)的端口即可,它會(huì)默默地工作,幫忙定時(shí)地去檢測(cè)服務(wù)端口的狀態(tài),一旦發(fā)現(xiàn)問(wèn)題,會(huì)及時(shí)發(fā)出報(bào)警。報(bào)警可以是電子郵件也可以是手機(jī),從而使得管理員第一時(shí)間就能收到系統(tǒng)的狀況。
Nagios的報(bào)表功能也很強(qiáng)大。管理員可以很容易地得到每天、每周和每月的Service運(yùn)行狀況。