針對分布式系統(例如云計算等)設計的可擴展監控系統:GangLia 簡介
Ganglia是一個針對高性能分布式系統(例如,集群、網格、云計算等)所設計的可擴展監控系統。該系統基于一個分層的體系結構,并能夠支持 2000個節點的集群。它允許用戶能夠遠程監控系統的實時或歷史統計數據,包括:CPU負載均衡、網絡利用率等。Ganglia依賴于一個基于組播的監聽 /發布協議來監控集群的狀態。Ganglia系統的實現綜合了多種技術,包括:XML(數據描述)、XDR(緊湊便攜式數據傳輸)、RRDtool(數據存儲和可視化)等。另外,它具有低單節點負載和高一致性的特點并能夠適應不同的操作系統和處理器體系結構,目前唄世界上500個以上的集群所樹勇。
Ganglia由兩個獨立的daemon、一個基于PHP的web前端和其它實用程序所組成。下面我們將分別進行介紹。
一、Gmond監控程序
Gmond監控程序(Ganglia Monitoring Daemon,Gmod)是一個組播守護進程,它運行在每一個被監控的節點上。該程序的安裝并不依賴于網絡文件系統(NFS文件系統)或者數據庫服務器。
Gmond的功能主要以下四項:
1. 監控宿主機狀態的改變
2. 報告相關的改變
3. 通過單播或組播來監控ganglia其它節點的狀態
4. 對集群狀態請求進行應答,該請求通過XML進行描述
Gmond中消息的傳遞包括如下兩種方式:
1.使用UDP協議以外部數據表示(externaldata representation,XDR)格式采用單播或組播的方式傳播宿主機狀態
2. 通過TCP協議傳遞XML描述請求
二、Gmetad節點程序
Ganglia集群在集群代理節點之間使用一個基于P2P連接的樹型結構來收集多個集群的狀態。Ganglia在樹結構的每一個節點上部署一個 Ganglia節點程序(Ganglia Meta Daemon,Gmetad),由該Gmetad所管理的子樹代表一個Ganglia子集群,它定期地輪詢子樹中每個孩子的數據資源、解析收集到的XML 數據、存儲數值、將易失性數據存儲到輪轉數據庫(round-robindatabases)以及向客戶端傳送收集到的XML數據。這些數據來源包括:Gmond監控程序、某個集群、其它Gmetad節點程序或某一個集群集合。數據源通過IP地址來定位(可以使用多個IP來做失效備援)。
三、GangliaPHP Web前端
Ganglia PHP web前端提供了一種可視化動態監控集群的手段,它是一種讓系統管理員有效監控集群狀態的方法。web前端不僅僅是把XML樹以HTML頁面的方式來展現,而且能夠以多種方式展現系統的歷史數據。
Ganglia web前端是為了迎合系統管理員和用戶的愛好而產生的。例如,用戶可以查看過去幾個小時、幾天、幾周、幾個月甚至幾年的使用率。Ganglia web前端可以以統計圖的方式來顯示內存的使用、磁盤的使用、網絡統計數據、正在運行的處理器的數量以及其他Ganglia節點的狀態。
Ganglia web前端依賴于Gmetad,Gmetad能夠為前端提供數據。另外,默認情況下web前端將使用8651端口接收數據(更傾向于接收Ganglia XML樹數據)。由于Ganglia web前端的實時性,因此任何對Ganglia數據的改變可以立刻被顯示。由于該前端的強動態性,它需要到來的數據在每一個頁面進行解析,因此該前端將消耗當量的資源。
Ganglia web前端由PHP腳本語言實現,使用Gmetad生成的圖來顯示歷史信息,并已在各種安裝有Apache webserver和PHP 4.1模塊的Unix(主要是Linux)機上測試通過。
當前Ganglia最新版:3.3.1,下載位置:http://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/
官方wiki(非維基百科):http://sourceforge.net/apps/trac/ganglia
使用Ganglia來監控Hadoop集群:http://wiki.apache.org/hadoop/GangliaMetrics
Ganglia的安裝于配置:http://sourceforge.net/apps/trac/ganglia/wiki/ganglia_configuration