集羣監控系統Ganglia應用案例

集羣監控系統Ganglia應用案例

——我們把集羣系統投入生產環境後,這時就需要一套可視化的工具來監視集羣系統,這將有助於我們迅速地瞭解機羣的整體配置情況,準確地把握機羣各個監控節點的信息,全面地察看監控節點的性能指標,使機羣系統具有較高的管理性。監視系統的主要目標是從各個監控節點採集監控信息,如CPU溫度、CPU利用率、用戶數、進程數、內存利用率等,然後將獲取的監控信息彙集起來,便於綜合分析和處理,最後根據分析和處理的結果做出相應的決策。本文以佔用系統資源最少的、開放源代碼的Ganglia爲平臺,詳細講解了如何搭建一個具有更高可靠性的集羣監控系統。

——Ganglia監控系統是由加州大學伯克利分校開發的,用於大規模的機羣和分佈式網格等高性能計算系統。基於XML技術的數據傳遞可以使系統的狀態數據跨越不同的系統平臺進行交互,採用簡潔緊湊的XDR方式,實現監控數據壓縮和傳輸”。

0.Ganglia組成及原理

——Ganglia主要由gmetad和gmond兩部分組成:gmetad主要負責監控數據的彙集,每隔15秒會輪詢gmond,並向下層節點發送和接收用戶所需的監控信息,並對數據出錯做出相應處理,最後使用RRDtool將這些信息存儲在數據庫,並通過Apache Web服務器顯示它收集的信息。gmond則工作在每個集羣節點上,主要負責監控節點信息的獲取,相當於Ganglia的監視守護進程。

——gmond主要負責監控節點信息的獲取。首先,初始化gmond.conf文件配置項信息,同時分配監控信息存儲空間。其次,調用ganglia_metric_cb_define("mem_total",mem_total_func),定義監控信息的採集項,"mem_total"表示信息採集項,mem_total_fun爲信息採集函數,該採集函數從/proc中讀取所需採集項信息,所有獲取的監控信息以hash鏈表的形式存儲。然後,在每個gmond節點上創建UDP通信的Socket端口,並調用connect建立各gmond節點間的通信通道,並啓動監聽進程process_udp_recv_channel,通過recvfrom接收其他各監控節點發來的監控信息。

——Ganglia_udp_send_message通過調用write向各個監控節點發送監控信息,監控信息的傳輸採用XDR數據流格式,每個監控節點包含了區域內所有其他節點的監控信息,如圖所示。當更新週期到來時,各監控節點gmond將其獲取的監控信息發給gmetad端。

圖1  Ganglia監控體系結構

1 安裝準備

——上文我們簡單講解了Ganglia是如何工作的,下面將討論Ganglia Web的安裝配置。首先,在集羣節點上安裝gmond,然後在集羣節點管理器上安裝gmetad和Ganglia Web軟件包。準備工作如下:

安裝Apache、PHP。Ganglia Web軟件包需要Apache、PHP支持,具體安裝方法我們在第一章已詳細討論過。安裝RRDtool。RRDtool可以繪出有用的圖表,用來顯示處理的數據。具體安裝方法我們在討論Ntop時,已詳細講述。

2 集羣節點管理器部署Ganglia

——在準備工作完成以後,我們首先需要在http://sourceforge.net/projects/ganglia/files/下載最新軟件(目前爲3.6)進行安裝,爲方便安裝可以選擇RPM包方式進行安裝,必須安裝的軟件包名稱爲:ganglia-gmetad、ganglia-gmond、ganglia-web以及ganglia-devel。

注意:在安裝上述RPM包時,如果有的系統需要強制安裝,就要用到—nodeps參數。

1).配置Ganglia

——安裝了這些軟件,下面是配置Ganglia的時候了,這裏從集羣節點管理器上的gmetad和gmond開始。在/etc/ganglia目錄下分別有它們的配置文件:gmetad.conf和gmond.conf。

——在集羣節點上的/etc/ganglia/gmetad.conf文件,只須包含指定集羣名稱和集羣內部節點名稱,例如:

Data_source "my cluster" localhos node1 node2 node3

“my cluster”代表集羣名稱,並設置了localhost(集羣節點管理器)和3個名爲node1、node2和node3的節點。由於Ganglia通信使用多播(在配置文件gmond.conf中定義多播地址爲:239.2.11.71),所以列表中的一個節點失敗(有時候很可能是用戶修改了節點名稱)不會影響它連接的下一個節點,因此我們不必在集羣中爲每個data_source項指定每臺主機的信息。

上述配置完成後,記得要重啓gmetad服務:

#service gmetad restart

2).在集羣節點上安裝最新的ganglia-gmond包並配置gmond

#vi /etc/gmond.conf

找到以下部分並按照所給出的例子進行配置:

tcp_accept_channel {

port = 8651/*註釋:此爲端口號,通過它來傳送系統信息。注意要和服務器端監聽的端口一致。*/

acl {

default = "deny"

access {

ip = 192.168.X.X /*註釋:這裏是服務器的IP地址 */

mask = 32

action = "allow"

}

重啓gmond服務

#service gmond restart 完成

注意:在對gmond.conf和gmetad.conf文件做了修改或是修改了節點計算機名都需要重啓這兩個進程。

3).測試gmond進程

——我們可以通過telnet來測試gmond是否工作正常,輸入如下命令,如圖2所示。

#telnet 127.0.0.1 8651

圖2測試gmond

——此時按下回車,將通過端口8651發送XML代碼到集羣節點管理器上的gmond守護進程,而gmetad守護進程使用RRDtool將這些信息存儲在/var/lib/ganglia/rrds目錄下。需要注意的是,rrds目錄下及子目錄比較多,如果監控的集羣節點數大於50個節點,建議將此目錄放在內存文件系統上,以減小磁盤I/O。如果告知gmond壓縮的XML數據(在/etc/ganglia/gmond.conf文件中定義),將需要使用netcat來解壓縮該XML數據,使其可以識別。命令爲:nc localhost 8651 |gunzip。

4).節點機軟件安裝

——在部署節點時,不需要安裝軟件,僅僅執行以下命令將文件複製過去即可。

pscp /usr/sbin/gmond node1:/usr/sbin/gmond

psh node1 mkdir -p /etc/ganglia/

pscp /etc/ganglia/gmond.conf node1:/etc/ganglia/

pscp /etc/init.d/gmond node1:/etc/init.d/

pscp /usr/lib64/libganglia-3.1.7.so.0 node1:/usr/lib64/

pscp /lib64/libexpat.so.0 node1:/lib64/

pscp /usr/lib64/libconfuse.so.0 node1:/usr/lib64/

pscp /usr/lib64/libapr-1.so.0 node1:/usr/lib64/

pscp -r /usr/lib64/ganglia node1:/usr/lib64/

psh node1 service gmond start

5).添加Ganglia頁面到Apache

——ganglia-webfront這個包默認將Web相關的代碼安裝在“/usr/share/ganglia-webfrontend/”路徑下,這樣Apache訪問不到。可以直接將目錄移到“/var/www/”目錄下,或修改Apache的DocumentRoot路徑,一旦完成修改需要重啓Apache。

測試是否成功,可以在瀏覽器地址欄裏輸入http://localhost/ganglia,如圖3和圖4所示。

圖3Ganglia頁面測試結果1

圖4Ganglia頁面測試結果2

6).Ganglia Web軟件包

——Ganglia Web允許你查看存儲在RRDtool循環數據庫中的性能度量的快照。Ganglia Web 軟件包分成兩部分:標題和節點快照,如圖5和圖6所示。下面結合一個集羣的實例進行講解。

圖5 標題

圖6節點快照

——默認情況下,軟件包使用Full View顯示集羣信息,單擊 PhysicalView鏈接以便查看不同格式的相同數據。如果需要刷新數據,單擊Get Fresh Data按鈕,默認的刷新時間是300s,可以編輯config.php文件自行修改。在Last下拉列表中可以選擇長達一年的有價值數據。Metric下拉列表中可以選取手機的性能度量,默認的是load_one,它代表集羣節點上的一分鐘平均負載(Load Average)。除此之外有bootime、byte、cpu、disk、lastsync、mem、network、nfs、swap等度量信息。

3.DEMO:

下面爲大家演示如何安裝配置Ganglia

實戰效果視頻請大家瀏覽這篇文章 http://chenguang.blog.51cto.com/350944/816547

4.總結

——以上內容詳細介紹了Ganglia軟件包的架構、安裝方法以及Ganglia Web的配置,在長期使用中,筆者發現Ganglia也存在一些問題,例如:沒有實現對被監控數據依權限查看;只有監視而沒有必需的控制功能;沒有實現更有彈性的、依據用戶策略監控數據的選擇性提取和彙集等問題。

發佈了155 篇原創文章 · 獲贊 40 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章