最近在學習Ganglia,記錄一下學習的具體過程和心得。
一 相關資源
官網:提供了demos和代碼下載。
book: 《Monitoring with Ganglia》,Ganglia作者寫的書,深入淺出。
paper: 《The Ganglia Distributed Monitoring System: Design, Implementation, and Experience》可以快速瞭解Ganglia的基本原理。
二 Ganglia整體架構
Ganglia是用C實現的一個分佈式監控系統,主要由gweb,gmetad,gmond三個模塊構成,整體架構如下圖所表示
Gmond(Ganglia monitoring daemon): 主要負責數據採集
Gmond可以理解爲一個數據採集的Agent,最終會部署到每個需要監控的節點上。Gmond比較有意思的地方在於,既可以發送數據,又可以接受數據。Gmond採集到本機的數據後,可以把數據通過多播或單播的方式發送出去。單播比較容易理解,對應的節點會收到數據。多播,又稱組播,同一組內的節點都會收到數據。
對應規模較小的集羣,所以節點可以部署在同一個網段。如果使用多播方式,Gmond發送數據後,集羣內所以的節點(包括自己)都會收到數據。這樣,每個節點上都會有整個集羣的監控數據。也就是說,通過訪問任何一個節點都可以獲取到整個集羣的監控數據。如果節點個數很多,不能部署在同一個網段,可以將劃分爲多個集羣。集羣內部使用多播,集羣之間使用單播。
Gmond使用XDR存儲採集到的監控數據,並對外提供了數據查詢的接口。通過訪問制定的端口,可以獲取到監控數據,監控數據傳輸時使用XML格式。
Gmetad(Ganglia Meta daemon):主要負責數據的存儲
Gmetad用於輪詢Gmond獲取監控數據,並對數據進行入庫。Gmond的數據是存儲在內存中的,Gmetad通過制定端口獲取數據,然後將數據寫入RRD數據庫中。
Gweb(Ganglia web): 負責監控數據的展示
Gweb調用RRD的接口獲取並展示數據。