Ganglia監控
一、Ganglia是什麽?
Ganglia是由UC Berkeley發起的一個開源項目,主要通過收集各節點上的度量數據(如處理器速度、內存使用量等)實現系統性能的監控。Ganglia的核心包含gmetad、gmond以及Web前端三部分,這三部分之間通過XDL(xml的壓縮格式)或者XML格式傳遞監控數據,達到監控效果。
二、Ganglia工作原理圖
Ganglia監控的大致過程為:集群內的節點通過運行gmond收集並相互發布節點狀態信息,然後gmetad利用RRDTool工具周期性的輪詢gmond收集到的信息,然後存入rrd數據庫,最後再利用RRDTool工具將收集到的數據創建成圖表,並通過web前端將其顯示出來。
二、Ganglia的組件
(1)Gmetad程序
Gmetad用於輪詢gmond節點存儲的信息,並更新到rrd數據庫中
一個數據源節點就是是一個gmond節點。一個gmetad節點可以設置多個數據源節點,每個數據源節點可以有多個備份,一個數據源節點失敗了還可以從其他節點取數據。可以把Gmetad理解為服務器。
Gmetad只有TCP通道,一方面它向datasource發送請求,獲取數據源節點的XML文件,另一方面會使用一個8651的默認TCP端口發布自身收集的XML文件,因此,Gmetad即可以從Gmond也可以從其他Gmetad節點獲取XML數據。
(2)Gmond程序
Gmond收集:一般用於收集本機的監控數據,用gmond.conf的udp_rev_channel來配置
Gmond存儲:並不是所有的gmond的都用來存儲,可以找出其中的一臺或者幾臺來存儲即可,用gmond.conf的udp_send_channel來配置
Gmond節點之間的信息發送接收主要用udp協議,傳遞文件格式為XDL。
每個Gmond收集到的數據供Gmetad讀取,Gmond通過默認端口8649監聽到Gmetad請求後將XML格式數據發送給Gmetad。可以將Gmond理解為客戶端。
Gmond收集數據有muticast和unicast兩種。Gmond本身具有UDP的發送(send)和接受(recv)通道以及TCP的接收(recv)通道。其中UDP通道用於向其他Gmond節點發送或接收數據,TCP通道主要接受來自Gmetad的請求,向Gmetad發送XML文件。在muticast模式下,Gmond節點之間通過UDP向多播目標相互傳遞數據。
Gmond節點模塊結構主要有三個模塊組成:
1)collect and publish模塊,該模塊周期性的調用一些內部命令獲得metric data,然後將這些數據通過UDP通道發布給其他Gmond節點。
2)Listen Threads監聽其他Gmond節點發送的UDP數據,並將這些數據存放在內存中
3)XML Export Threads負責將數據以XML格式發布出去,比如交給Gmetad。
在unicast模式下,多個Gmond節點通過UDP向單播的目標主機host的Gmond發送數據,Gmetad然後向目標主機的Gmond請求XML文件。
在Unicast模式下,Gmond、Gmetad、rrd數據庫以及web前端通常位於集群內的同一個節點上,該節點負責收集、存儲、顯示被監控的各節點的狀態信息。
(3)Web前端
Web前端通常和Gmetad安裝在同一個節點上,它從Gmetad中取數據,並且讀取rrd數據庫,生成圖片顯示出來。
本文出自 “10620401” 博客,請務必保留此出處http://10630401.blog.51cto.com/10620401/1976444
Ganglia監控