Ganglia 是 UC Berkeley 發起的一個開源監視項目,設計用於測量數以千計的節點。每臺計算機都運行一個收集和發送度量數據(如處理器速度、內存使用量等)的名爲 gmond 的守護進程。它將從操做系統和指定主機中收集。接收全部度量數據的主機能夠顯示這些數據而且能夠將這些數據的精簡表單傳遞到層次結構中。正由於有這種層次結構模式,才使得 Ganglia 能夠實現良好的擴展。gmond 帶來的系統負載很是少,這使得它成爲在集羣中各臺計算機上運行的一段代碼,而不會影響用戶性能。php
1、Ganglia組件
Ganglia 監控套件包括三個主要部分:gmond,gmetad,和網頁接口,一般被稱爲ganglia-web。
Gmond :是一個守護進程,他運行在每個須要監測的節點上,收集監測統計,發送和接受在同一個組播或單播通道上的統計信息 若是他是一個發送者(mute=no)他會收集基本指標,好比系統負載(load_one),CPU利用率。他同時也會發送用戶經過添加C/Python模塊來自定義的指標。 若是他是一個接收者(deaf=no)他會聚合全部從別的主機上發來的指標,並把它們都保存在內存緩衝區中。
Gmetad:也是一個守護進程,他按期檢查gmonds,從那裏拉取數據,並將他們的指標存儲在RRD存儲引擎中。他能夠查詢多個集羣並聚合指標。他也被用於生成用戶界面的web前端。
Ganglia-web :顧名思義,他應該安裝在有gmetad運行的機器上,以便讀取RRD文件。 集羣是主機和度量數據的邏輯分組,好比數據庫服務器,網頁服務器,生產,測試,QA等,他們都是徹底分開的,你須要爲每一個集羣運行單獨的gmond實例。html
通常來講集羣中每一個節點須要一個接收的gmond,每一個網站須要一個gmetad。
2、安裝依賴
注:建議使用超級用戶安裝
1.#yum install –y gcc gcc-c++ libpng freetype zlib libdbi apr* libxml2-devel pkg-config glib pixman pango pango-devel freetye-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel pcre* rrdtool*
3、安裝expat依賴
1.#cd /root
2.#wget http://jaist.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz
3.#tar -xf expat-2.1.0.tar.gz && cd expat-2.1.0 && ./configure --prefix=/usr/local/expat && make && make install && cd ..前端
對於64位操做系統,須要手動的拷貝下動態連接庫到lib64下
1.#mkdir /usr/local/expat/lib64 && cp -a /usr/local/expat/lib/* /usr/local/expat/lib64/
4、安裝confuse
1.#wget http://ftp.twaren.net/Unix/NonGNU//confuse/confuse-2.7.tar.gz
2.#tar -xf confuse-2.7.tar.gz && cd confuse-2.7 && ./configure CFLAGS=-fPIC --disable-nls --prefix=/usr/local/confuse && make && make install && cd ..linux
64bit機器須要拷貝動態連接庫:
1.#mkdir -p /usr/local/confuse/lib64 && cp -a -f /usr/local/confuse/lib/* /usr/local/confuse/lib64/
5、安裝ganglia
1.#wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.6.0/ganglia-3.6.0.tar.gz
2.#tar -xf ganglia-3.6.0.tar.gz && cd ganglia-3.6.0 && ./configure --with-gmetad --enable-gexec --with-libconfuse=/usr/local/confuse --with-libexpat=/usr/local/expat --prefix=/usr/local/ganglia --sysconfdir=/etc/ganglia && make && make install && cd ..
6、服務端配置
建立rrdtool數據目錄,看$ganglia-3.2.0/web/conf.php裏面的gmetad_root變量,並根據apache的運行用戶建立權限,例如apache運行於apache用戶上 。
1.#mkdir -p /var/lib/ganglia/rrds && mkdir -p /var/lib/ganglia/dwoo && chown -R root:root /var/lib/ganglia
配置一個數據源,修改/etc/ganglia/gmetad.conf文件,同時將運行用戶設置爲rrdtool的目錄權限用戶,例如apache用戶
1.data_source "Hadoop" 192.168.1.108:8649
2.setuid_username "root"
說明:這裏的 " hadoop " 表示的是集羣的名稱,後面的內容是這個集羣中所包含的主機信息,也就是要監控的主機ip。
添加自啓動腳本
1.#cp -f ganglia-3.6.0/gmetad/gmetad.init /etc/init.d/gmetad && cp -f /usr/local/ganglia/sbin/gmetad /usr/sbin/gmetad && chkconfig --add gmetad
啓動gmetad服務
1.#service gmetad start
看見Starting GANGLIA gmetad: [ OK ]就表明運行正常了。 經過telnet localhost 8651驗證gmetad是否正常c++
7、客戶端配置(gmond節點)
本機安裝以下:
1.#cp -f ganglia-3.6.0/gmond/gmond.init /etc/init.d/gmond && cp -f /usr/local/ganglia/sbin/gmond /usr/sbin/gmond && chkconfig --add gmond && gmond --default_config > /etc/ganglia/gmond.confweb
對於生成的默認配置文件/etc/ganglia/gmond.conf須要作適當的修改
globals {
user = root /*運行Ganglia的用戶*/
host_dmax = 120 /*secs */
send_metadata_interval = 15 /*發送數據的時間間隔*/
}數據庫
cluster {
name = "hadoop" /*集羣名稱*/
owner = "root" /*運行Ganglia的用戶*/
}apache
udp_send_channel {
# mcast_join = 239.2.11.71 /*註釋掉組播*/
host = 192.168.1.108/*發送給安裝gmetad的機器*/
}瀏覽器
udp_recv_channel { #接受UDP包配置
# mcast_join = 239.2.11.71
# bind = 239.2.11.71
}
其中name是將要在服務端進行的分組,是服務端的數據源。接下來開啓服務
1.#service gmond start
看見Starting GANGLIA gmetad: [ OK ]表明啓動成功。若是有失敗,能夠講gmond.conf中的debug從0改成100,看更多的日誌,而後進行排查。服務器
8、服務端的WEB配置
PHP程序須要依賴Apache來運行,所以須要安裝以下依賴
1.# yum -y install php httpd
2.# service httpd start //啓動httpd 服務
9、測試安裝是否成功
1.# vi /var/www/html/index.php
輸入:
<?php phpinfo();?>
保存,而後瀏覽器 master/index.php
正常是看到php的信息。
1.#cd /root
2.#wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia-web/3.5.10/ganglia-web-3.5.10.tar.gz
3.#tar -xf ganglia-web-3.5.10.tar.gz && cd ganglia-web-3.5.10 && make install && cd ..
這樣 在/var/www/html/下 生成了 ganglia 目錄
注:
Ganglia訪問失敗:
There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error: Permission denied
解決:
須要關閉selinux:vi /etc/selinux/config,把SELINUX=enforcing改爲SELINUX=disable;須要重啓機器。
可使用命令setenforce 0來關閉selinux而不須要重啓,刷新頁面,便可訪問。但此方法只是一權宜之計。要想永久修改selinux設置,仍是要使用第一種方法。
重啓httpd服務器便可看到效果
1.#service httpd restart
使用http://master/ganglia查看對應的ganglia信息。(注:master爲運行gmetad的主機的hostname)