ganglia分布式監控部署
一.介紹
Ganglia是由UC Berkeley發起的一個開源監控項目,設計用於監控數以千幾的節點。每臺服務器都運行一個收集和發送監控數據名為gmond的守護進程。它將從操作系統和指定主機中收集。接收所有監控數據的主機可以顯示這些數據並且可以將這些數據的精簡表單傳遞到層次結構中。正因為有這種層次架構模式,使ganglia可以實現良好的擴展。Gmond帶來的系統負載非常小,這使得它成為集群中各個服務器上運行一段代碼而不會影響用戶性能。
Ganglia主要用來監控系統性能的軟件,通過曲線很容易見到每個節點的工作狀態,對合理調整,分配系統資源,提高系統整體性能起到重要作用,支持瀏覽器方式訪問,但不能監控節點硬件技術指標。Ganglia是分布式的監控系統。
Ganglia的組件:
Ganglia包括如下程序,它們之間通過xml格式傳遞監控數據。
服務端ganglia meta daemon(gmetad):負責收集各個cluster的數據,並更新到rrd數據庫中
客戶端ganglia monitoring daemon(gmond):收集本機的監控數據,發送到其他服務器上,收集其他服務器的監控數據,供gmetad讀取。
基於web的動態訪問方式ganglia PHP web Frontend:一個基於web的監控界面,需要和gmetad安裝在同一個節點上,從gmetad取數據,並且讀取rrd數據庫,生成圖片顯示。
Ganglia工作模式:
Ganglia收集數據可以工作在單播或多播模式下,默認為多播模式
單播:發送自己收集到的監控數據到特定的一臺或幾臺服務器上,可以跨網段。
多播:發送自己收集到的監控數據到同一網段所有的服務器上,同時收集同一網段的所有服務器發送過來的監控數據。因為是以廣播包的形式發送,因此需要在同一網段內,但同一網段內,又可以定義不同的發送通道。
二。ganglia的安裝和配置:
1.直接使用epelyum源進行安裝即可,或者編譯安裝
1.1 安裝所需軟件包:
yum install -y rrdtool rrdtool-devel apr-devel expat-devel dejavu-lgc-sans-mono-fonts dejavu-sans-mono-fonts glibc glibc-common apr apr-devel apr-util expat expat-devel pcre pcre-devel zlib zlib-devel
1.2 安裝confuse
wget http://ftp.twaren.net/Unix/NonGNU//confuse/confuse-2.7.tar.gz tar -zxf confuse-2.7.tar.gz cd confuse-2.7 ./configure CFLAGS=-fPIC --disable-nls make && make install
1.3 設置python 模塊的環境變量
echo "/usr/local/lib" /etc/ld.so.conf ldconfig ldconfig -v |grep "python"
1.4 安裝ganglia 服務端 gmetad
wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.7.1/ganglia-3.7.1.tar.gz tar zxf ganglia-3.7.1.tar.gz cd ganglia-3.7.1 ./configure --prefix=/usr/local/ganglia --with-gmetad --enable-gexec make make install
1.5 安裝ganglia的agent端
wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.7.1/ganglia-3.7.1.tar.gz tar zxf ganglia-3.7.1.tar.gz cd ganglia-3.7.1 ./configure --prefix=/usr/local/ganglia --enable-gexec make make install
1.6 安裝ganglia-web 前端展示
2. 配置ganglia gmetad端
2.1 復制服務控制腳本
cp -fr ganglia/gmetad/gmetad.init /etc/init.d/gmetad
並修改腳本下面內容
GMETAD=/usr/local/ganglia/sbin/gmetad
2.2 修改gmetad的配置文件更改下面參數:(參數的具體含義請參考gmetad.conf配置文件解釋)
data_source "my cluster" 10.10.211.6 setuid_username "nobody" xml_port 8651 interactive_port 8652 rrd_rootdir “/var/lib/ganglia/rrds” case_sensitive_hostnames 0
創建rrd_rootdir文件,並授權nobody
mkdir /var/lib/ganglia/rrds
chown -R nobody.nobody /var/lib/ganglia/rrds
2.3 啟動gmetad 服務,檢查服務端口和進程
[[email protected] ~]#/etc/init.d/gmetad start Starting GANGLIA gmetad: [確定] [[email protected] ~]#netstat -lnpt | grep gmetad tcp 0 0 0.0.0.0:8651 0.0.0.0:* LISTEN 4529/gmetad tcp 0 0 0.0.0.0:8652 0.0.0.0:* LISTEN 4529/gmetad [[email protected] ~]#ps -ef | grep gmetad nobody 4529 1 0 23:38 ? 00:00:00 /usr/local/ganglia/sbin/gmetad root 4545 20744 0 23:38 pts/3 00:00:00 grep gmetad
3.配置ganglia gmond 端
globals { daemonize = yes #以後臺的方式運行 setuid = yes user = nobody #運行gmond的用戶 debug_level = 0 #調試級別 max_udp_msg_len = 1472 mute = no #啞巴,本節點將不會再廣播任何自己收集到的數據到網絡上 deaf = no #聾子,本節點將不再接收任何其他節點廣播的數據包 allow_extra_data = yes host_dmax = 0 /*secs */ cleanup_threshold = 300 /*secs */ gexec = no #是否使用gexec send_metadata_interval = 0 } cluster { name = "Cluster1" #本節點屬於哪個cluster owner = "junfeng" #誰是該節點的所有者 latlong = "unspecified" #在地球上的坐標,經度、緯度? url = "unspecified" } host { location = "unspecified" } udp_send_channel { #udp包的發送通道 mcast_join = 239.2.11.71 #多播,工作在239.2.11.71通道下。如果使用單播模式,則要寫host = host1,單播模式下也可以配置多個udp_send_channel port = 8649 #監聽端口 ttl = 1 } udp_recv_channel { #接收udp包配置 mcast_join = 239.2.11.71 #同樣工作在239.2.11.71通道下 port = 8649 #監聽端口 bind = 239.2.11.71 #綁定 } tcp_accept_channel { port = 8649 #通過tcp協議監聽的端口,遠端可以通過鏈接8649端口得到監控數據 }
4.配置gmond web
gmond-web 是用php寫的,所以需要web+php進行解析
4.1 下載軟件包
wget http://heanet.dl.sourceforge.net/project/ganglia/ganglia-web/3.5.10/ganglia-web-3.5.10.tar.gz
4.2 配置
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
ganglia分布式監控部署