Ganglia是UC Berkeley發起的一個開源集羣監視項目,設計用於測量數以千計的節點。Ganglia的核心包含gmond、gmetad以及一個Web前端。主要是用來監控系統性能,如:cpu 、mem、硬盤利用率,I/O負載、網絡流量狀況等,經過曲線很容易見到每一個節點的工做狀態,對合理調整、分配系統資源,提升系統總體性能起到重要做用。php
看下ganglia監控的一個圖:前端
能夠很只直觀的觀察系統的各個指標,特別是對於分佈式系統來講,無疑很是重要,並且Hadoop,Hbase提供了集成了ganglia的配置文件。web
在了ganglia的組成以前,先來看下一張圖數據庫
從上圖能夠很直觀的看到,一個監控系統大概包括:apache
Gmond,gmetad,rrdtool,Apache,PHP以及一個展現的web服務器
監控的集羣節點的步驟以下:網絡
第一步:在要收集的數據的每一個節點安裝gmond,主要用來收集節點的信息以及存儲信息(這裏的存儲信息在後面會講解)app
第二步:只要部署在一臺機器就能夠了(部署在咱們須要經過web訪問的機器上),主要用來輪詢收集gmond的信息,並以某種形式存儲到磁盤上。tcp
第三步:安裝apache web服務器,以及php(因爲gweb是php開發的),構建gweb的執行環境分佈式
第四步:安裝gweb,以web的形式更清晰的展現剛剛收集的歷史數據。
固然其中會用一些插件,後面會講解怎麼用以及怎麼安裝。
1)gmond用於節點信息的收集和存儲
收集:通常用於收集本節點,用gmond.conf的udp_rev_channel來配置
存儲:並非全部的gmond的都用來存儲,能夠找出其中的一臺或者幾臺來存儲便可,用gmond.conf的udp_send_channel來配置。
各個gmond節點之間的信息發送接收主要用udp協議
2)gmetad 用於輪詢gmond節點存儲的信息
Gmetad能夠配置輪詢的gmond節點,經過source 參數配置。
這裏的個gmond節點就是上面udp_send_channel所配置的節點,能夠是hostname或者ip
3)rrdtool 用於存儲數據,和畫圖
rrdtool把gmetad輪詢收集到的數據持久化磁盤文件中,而且還能夠利用這些數據畫圖,更好的展現這些數據
1)gmond
位置 /etc/ganglia/gmond.conf
配置
Globals
[plain] view plain copy
daemonize(布爾類型)
當值爲true時,gmond將在後臺分散運行。當在守護進程管理器(如daemontool)下運行gmond時,將此值設置爲false。
setuid(布爾類型)
當值爲true時,gmond將user屬性指定的特定用戶的UID做爲有效UID;當值爲false時,gmond將不會改變其有效用戶。
debug_level(整數值)
當值爲0時,gmond將正常運行。當debug_level大於0時,gmond將在前臺運行並輸出調試信息。debug_level值越大,輸出越詳細。
max_udp_msg_len(整數值)
該值是gmond發送包所能包含的最大長度。通常狀況下該值默認不變。
mute(布爾類型):
當值爲true時,無論其餘配置指令如何,gmond將不能發送數據。「單收」(mute)gmond節點只不向其餘gmond守護進程發送數 據,但仍然會響應諸如gmetad的外部輪詢器。
deaf(布爾類型):
當值爲true時,無論其餘配置指令如何,gmond將不能接收數據。在每一個集羣內擁有成千上萬節點的大型網格中,或者在細緻優化 的HPC網格中(例如充分利用CPU的空閒週期),爲減小匯彙集羣狀態的相關開銷,常常將普通的計算節點設置爲單發。在這些 情形下,某些特色的節點被預置爲單收,此時這些節點的性能指標將不會被測量,由於這些節點將不會用做網格的運算。由於這 些節點的任務是匯聚,因此它們的性能數據會「污染」集羣內其餘的功能部分。
allow_extra_data(布爾類型)
當值爲false時,gmond將不會發送XML的EXTRA_ELEMENT和EXTRA_DATA部分。該值主要應用於用戶使用本身的前端並但願 節省帶寬時。
host_dmax(以秒爲單位的整數值)
dmax是delete max的縮寫。當值爲0時,即便遠程主機中止報告,gmond也不會從列表裏刪除該主機。若是host_dmax設置爲正值, 當gmond在「host_dmax」秒內接收不到某臺主機的數據,gmond將刪除該主機。
host_tmax(以秒爲單位的整數值)
tmax是timeout max的縮寫,表明gmond等待一臺主機更新的最長時間。由於消息可能在網絡中丟失,因此若是在4倍的host_tmax時 間內接收不到某臺主機的任何消息,gmond就認爲該主機已經崩潰。
cleanup_threshold(以秒爲單位的整數值)
gmond清除過時數據的最小時間間隔。
gexec(布爾類型)
當值爲true時,gmond將容許主機運行gexec任務。這種方式須要運行gexecd並安裝合適的驗證碼。
send_metadata_interval(以秒爲單位的整數值)
該值設置gmond兩次發送元數據包的時間間隔。元數據包是用來描述全部激活指標的數據包。該指令默認設置爲0,表示gmond只 有在初始啓動和收到其餘遠程運行的gmond節點請求時纔會發送元數據包。若是向集羣內添加一臺運行gmond的主機,則該主機節 點須要向其餘節點公佈自身信息,並告知目前支持的指標標準。在多播模式下,因爲任何一個節點均可以向集羣內的其餘節點請 求發送元數據,所以該問題並不存在。然而,在單播模式下必須設置重發間隔。間隔值是兩次重發之間的最少秒數
cluster
[plain] view plain copy
每一個gmond守護進程會使用在cluster section中定義的屬性來報告它所屬集羣的信息,使用默認值系統便可正常工做。
name(文本格式)
指定集羣名稱。當輪詢節點的集羣狀態的XML集合時,把該名稱插入CLUSTER元素內。輪詢該節點的gmetad會使用該值來命名存 儲集羣數據的RRD文件。該指令將取代gmetad.conf配置文件中指定的集羣名稱。
owner(文本格式)
指定集羣管理員。
latlong(文本格式)
指定該集羣在地區上的GPS座標的經緯度。
url(文本格式)
指定攜帶集羣特定信息(如集羣用途和使用細節)的URL。
host
host section提供運行gmond主機的相關信息。目前只支持地址字符串屬性。默認host section爲:
[plain] view plain copy
location(文本格式)
udp_send_channel
UDP通道是經過udp_(send|receive)_channel section建立的。下面給出默認的UDP發送通道:
[plain] view plain copy
bind_hostname(布爾類型;可選;多播或單播)
通知gmond使用源地址解析主機名。
mcast_join(IP;可選;僅多播)
當指定該選項時,gmond將建立UDP套接字並加入由IP地址指定的多播組。該選項建立一個多播通道,並與host相互排斥。
mcast_if(文本格式;可選;僅多播)
當指定該選項時,gmond將發送來自指定接口(例如eth0)的數據。
host(文本格式或IP;可選;僅單播)
當指定該選項時,gmond將向已命名主機發送數據。該選項建立一個單播通道,並與mcast_join相互排斥。
port(數字;可選;多播或單播)
該選項指定gmond發送數據的端口號。若是未指定,則默認爲端口8649。
udp_recv_channel
[plain] view plain copy
接受渠道.
TCP Accept Channel
TCP Accept Channel。TCP接收通道(TCP Accept Channel)是gmond節點建立向gmetad或其餘外部輪詢器彙報集羣狀態的通 道。用戶能夠配置任意多選項。
默認TCP接收通道爲:
[plain] view plain copy
bind(IP;可選)
當指定該選項時,gmond將捆綁到指定的本地地址。
port(數字)
gmong接收鏈接的端口號。
2)Gmetad
Gmetad 這個程序負責週期性的到各個datasource收集各個cluster的數據,並更新到rrd數據庫中。能夠把它理解爲服務 端。Gmond 收集本機的監控數據,發送到其餘機器上,收集其餘機器的監控數據,gmond之間經過udp通訊,傳遞文件格式爲xdl。 收集的數據供Gmetad讀取,默認監聽端口8649 ,監聽到gmetad請求後發送xml格式的文件。能夠把它理解爲客戶端。
gmetad默認將指標數據直接寫入文件系統上的RRD文件,在有I/O限制的大型裝置中,rrdcached充當gmetad和RRD文件之間的緩 存,以下圖
經常使用配置
gridname(文本格式)
能惟一標識網格的字符串。
data_source
每一個data_source由3個字段組成。第一個字段爲惟一標識data_source的字符串;第二個字段爲指定輪詢間隔(單位:秒)的數字; 第三個字段爲以空格分開的所要輪詢數據的主機列表,這些地址以IP地址或DNS主機名的形式指定,並可能添加「:端口號」形 式的後綴,該端口號指明gmond的tcp_accept_channel所在位置。若是未指明端口號,gmetad將嘗試鏈接tcp/8649
setuid_username(UID)
gmetad設置UID的用戶名。默認爲nobody
rrd_rootdir(路徑)
指定RRD文件在本地文件系統存儲的基本目錄。
3)Gweb
gweb是最容易配置,也是須要配置最少就能工做的守護進程。實際上,無需改變gweb的任何默認配置,gweb就能夠啓動並運行功 能齊全的Web客戶端。
一個基於web的監控界面,一般和Gmetad安裝在同一個節點上(還需確認是否能夠不在一個節點上,由於php的配置文件中ms可配 置gmetad的地址及端口),它從Gmetad取數據,而且讀取rrd數據庫,生成圖片,顯示出來。