Ganglia是一個監控服務器,集羣的開源軟件,可以用曲線圖表現最近一個小時,最近一天,最近一週,最近一月,最近一年的服務器或者集羣的cpu負載,內存,網絡,硬盤等指標。php
Ganglia的強大在於:ganglia服務端可以經過一臺客戶端收集到同一個網段的全部客戶端的數據,ganglia集羣服務端可以經過一臺服務端收集到它下屬的全部客戶端數據。這個體系設計表示一臺服務器可以經過不一樣的分層可以管理上萬臺機器。這個功能是其餘mrtg,nagios,cacti所不能比擬。html
Ganglia的擴展插件很是好寫,不管用何種語言(shell,php,pyton)均可以寫,只要把最終結果傳給gmetric就能夠,這樣在web上就能夠看到對應的數據。linux
0. 準備ios
最新的ganglia版本爲3.2.0,可是我推薦安裝ganglia3.0.3,由於這個版本安裝比較簡單,依賴包只有rrdtool。而新版本依賴包太多。web
官方網站:http://ganglia.infoshell
ganglia的下載地址 http://sourceforge.net/projects/ganglia數據庫
windows版windows客戶端版和ganglia 源包:apache
http://www.sajinet.com.pe/ganglia/windows
http://sourceforge.net/project/showfiles.php?group_id=43021&package_id=35280
ganglia的安裝分爲服務端和客戶端和web端安裝瀏覽器
文檔幫助: http://ganglia.sourceforge.net/docs/
1) 服務端依賴包
Ganglia裏的gmetad
Rrdtool(這個依賴不少包,ganglia對於rrdtool的版本不敏感,最好選擇比較好安裝的版本安裝)
2) 客戶端
ganglia裏的gmond
3) Web端:
Apache,php,rrdtool,php-gd(可不用裝,不裝的話只是看不到一張餅圖,不影響使用)
1.服務端安裝 (gmetad)
服務端的服務爲gmetad,安裝前須要先安裝RRDTool(數據庫和繪圖工具,服務端收集的客戶端信息由其來保存),由於要繪製曲線圖,因此安裝RRDTool前,還必須安裝好libpng,freetype,zlib這些庫(也是php的gd庫須要的),下載地址http://www.rrdtool.org/ 。
安裝完了RRDTool,就能夠安裝gmetad了
1 tar –zxvf ganglia3.0.3.tar.gz 2 cd ganglia3.0.3 3 ./configure CFLAGS="-I/usr/local/rrdtool-1.0.50/include" CPPFLAGS="-I/usr/local/rrdtool-1.0.50/include" LDFLAGS="-L/usr/local/rrdtool-1.0.50/lib" --with-gmetad --enable-gexec 4 make 5 make install
將gmetad.init文件拷貝到 /etc/init.d/:
1 cd ganglia-3.0.3/gmetad 2 cp gmetad.init /etc/init.d/gmetad #如果ganglia安裝在別的目錄,則修改gmetad.init裏的gmetad路徑 3 cp gmetad.conf /etc/gmetad.conf 4 chkconfig gmetad on 5 chkconfig --list gmetad 6 GMETAD 0:off 1:off 2:on 3:on 4:on 5:on 6:off
建立rrd數據存儲的文件夾, 修改屬性擁有者爲: "nobody":
1 mkdir /var/lib/ganglia/rrds 2 chown nobody:nobody /var/lib/ganglia/rrds
啓動gmetad:
1 service gmetad start 2 Starting GANGLIA gmetad: [ OK ]
修改 /etc/gmetad.conf文件:
1 data_source "taskcenter" 1.2.3.4 #所要監控的客戶端 能夠寫多個 2 setuid_username "root" #可改成其餘安全用戶 3 # default: "/var/lib/ganglia/rrds" #定義該客戶端的數據保存的路徑 4 # rrd_rootdir "/some/other/place" 5 rrd_rootdir "/var/lib/ganglia/rrds"
從新啓動gmetad:
1 service gmetad start 2 Starting GANGLIA gmetad: [ OK ]
驗證gmetad正常工做:
1 telnet localhost 8651
就能夠獲得監控的各個主機的狀態。
2.安裝客戶端gmond2.1 linux版
在每臺須要監控的機器上,安裝gmond
安裝ganglia:
1 tar zxvf ganglia-3.0.3.tar.gz 2 cd ganglia-3.0.3 3 ./configure --prefix=/usr/local/ganglia 4 make; 5 make install 6 cd gmond 7 ./gmond –t > /etc/gmond.conf
1 vi gmond.init 2 修改裏面的GMOND 改成GMOND=/usr/local/ganglia/sbin/gmond 3 # cp gmond.init /etc/init.d/gmond 4 # chkconfig --add gmond 5 # chkconfig --list gmond 6 gmond 0:off 1:off 2:on 3:on 4:on 5:on 6:off 7 # service gmond start 8 Starting GANGLIA gmond: [ OK ] #若不成功的話,就用/usr/local/ganglia/sbin/gmond手動啓動
啓動失敗有多是由於多播地址沒有路由
1 route add -host 239.2.11.71 dev eth0
驗證gmond正常工做:
1 telnet localhost 8649
就能夠獲取機羣內運行gmond的主機的信息
vi /etc/gmond.conf
配置gmond.conf:
1 /etc/gmond.conf: 2 globals 3 { 4 setuid = no 5 user = nobody 6 cleanup_threshold = 300 /*secs */ 7 } 8 #修改監控組名稱 9 cluster 10 { 11 name = "taskcenter" 12 .......}
配置完成後從新啓動gmond
2.2 window版
下載:http://www.sajinet.com.pe/ganglia/ganglia-3.1.0-bin.zip
解壓後,運行gmond.bat
測試:telnet 127.0.0.1 8649
安裝自啓動:把gmond.bat加到啓動項中
3.web端安裝
web端用於經過web來查看監控狀態。
由於web端程序是php寫的,因此須要安裝apache。同時須要編譯php的gd庫。web端須要和服務器端在一塊。
# cp -a ganglia-3.0.3/web /var/www/html/ganglia
肯定web server支持PHP4
對apache來講,php模塊mod_php的狀態應該是enabled,貌似默認就是的^_^
配製文件是/var/www/html/ganglia/conf.php
1 # Where gmetad stores the rrd archives. 2 $gmetad_root = "/var/lib/ganglia"; 3 $rrds = "/usr/local/rrdtool-1.0.50/"; #數據源路徑 4 # Leave this alone if rrdtool is installed in $gmetad_root, 5 # otherwise, change it if it is installed elsewhere (like /usr/bin) 6 define("RRDTOOL", "/usr/local/rrdtool-1.0.50/bin/rrdtool"); # rrdtool執行路徑 7 # 8 # If you want to grab data from a different ganglia source specify it here. 9 # Although, it would be strange to alter the IP since the Round-Robin 10 # databases need to be local to be read. 11 # 12 $ganglia_ip = "localhost"; 13 $ganglia_port = 8652; 14 #$ganglia_port = 8649;
在瀏覽器地址欄輸入http://localhost/ganglia/應該能夠看到有頁面顯示了。
演示地址 伯克利大學的集羣監控(1000多臺服務器):
http://monitor.millennium.berkeley.edu/
訪問web出現圖片畫不出來的緣由:
1) rrdtool沒有安裝,或者conf.php裏沒有配置
2) gemtad沒有啓動
3) 沒有客戶端數據
4) Selinux限制apache執行rrdtool
另外ganglia還有不少插件能夠監控更多的指標
其中有一個插件,安裝後能夠查看任意時間的曲線圖