由于linux下的office和win下有所區別,我只能把linux下的.dot文件打包成pdf,粘貼發送標出來,但有些圖片還是沒辦法發表,要是有朋友感興趣的話,可加我qq 215687833具體的文檔可供參考,皆來自本人整理 ,扯犢子的請繞行。
ganglia 是分布式的監控系統,有兩個 Daemon, 分別是:客戶端 Ganglia Monitoring
Daemon (gmond)和服務端 Ganglia Meta Daemon (gmetad),還有 Ganglia PHP Web
Frontend(基于 web 的動態訪問方式)組成
是一個 Linux 下圖形化監控系統運行性能的軟件,界面美觀、豐富,功能強大
http://ganglia.sourceforge.net/
軟件下載
環境:RHEL6 x86-64 disable selinux and iptables
2 臺主機的解析分別為
192.168.2.79??? node2.example.com
192.168.2.81??? node3.example.com
ganglia 多播的配置。
配置在 192.168.2.79??? node2.example.com
下載軟件包:
ganglia-3.6.0.tar.gz
ganglia-web-3.5.10.tar.gz
libconfuse-2.6-3.el6.x86_64.rpm
libconfuse-devel-2.6-3.el6.x86_64.rpm
rrdtool-devel-1.3.8-6.el6.x86_64.rpm
yum install -y rpm-build 將 tar 包打壓成 rpm 包。
[root@node2 ~]# rpmbuild -tb ganglia-3.6.0.tar.gz? 打壓的過程中所需要的依賴包。
error: Failed build dependencies:
libart_lgpl-devel is needed by ganglia-3.6.0-1.x86_64
gcc-c++ is needed by ganglia-3.6.0-1.x86_64
python-devel is needed by ganglia-3.6.0-1.x86_64
libconfuse-devel is needed by ganglia-3.6.0-1.x86_64
pcre-devel is needed by ganglia-3.6.0-1.x86_64
expat-devel is needed by ganglia-3.6.0-1.x86_64
rrdtool-devel is needed by ganglia-3.6.0-1.x86_64
apr-devel > 1 is needed by ganglia-3.6.0-1.x86_64
安裝依賴關系。
# yum install -y libart_lgpl-devel gcc-c++ python-devel pcre-devel expat-devel rrdtool-devel apr-devel
安裝完成后再次打壓。
[root@node2 ~]# rpmbuild -tb ganglia-3.6.0.tar.gz
?error: Failed build dependencies:
libconfuse-devel is needed by ganglia-3.6.0-1.x86_64
rrdtool-devel is needed by ganglia-3.6.0-1.x86_64
發現還需要依賴關系,安裝以下依賴包。
[root@node2 ~]# yum localinstall libconfuse-devel-2.6-3.el6.x86_64.rpm rrdtool-devel-1.3.8-
6.el6.x86_64.rpm
發現安裝 上面 2 個包,又產生一個依賴包,還需要安裝依賴 包。
[root@node2 ~]# yum localinstall libconfuse-devel-2.6-3.el6.x86_64.rpm rrdtool-devel-1.3.8-
6.el6.x86_64.rpm libconfuse-2.6-3.el6.x86_64.rpm
再次將 tar 包打壓成 rpm 包,ok
[root@node2 ~]# rpmbuild -tb ganglia-3.6.0.tar.gz
將 tar-web tar 包也打壓成 rpm 包。
[root@node2 ~]# rpmbuild -tb ganglia-web-3.5.10.tar.gz
切換到下面的目錄,ganglia 打壓的 包放在這下面。
/root/rpmbuild/RPMS/x86_64
[root@node2 x86_64]# ls
ganglia-devel-3.6.0-1.x86_64.rpm
ganglia-gmetad-3.6.0-1.x86_64.rpm
ganglia-gmond-3.6.0-1.x86_64.rpm
ganglia-gmond-modules-python-3.6.0-1.x86_64.rpm
libganglia-3.6.0-1.x86_64.rpm
[root@node2 x86_64]# rpm -ivh *
Preparing...??????????????? ########################################### [100%]
?? 1:libganglia???????????? ########################################### [ 20%]
?? 2:ganglia-gmond????????? ########################################### [ 40%]
?? 3:ganglia-gmond-modules-p########################################### [ 60%]
?? 4:ganglia-devel????????? ########################################### [ 80%]
?? 5:ganglia-gmetad???????? ########################################### [100%]
/root/rpmbuild/RPMS/noarch? ganglia-web 打壓的包放在這下面。
[root@node2 noarch]# yum localinstall ganglia-web-3.5.10-1.noarch.rpm -y
ganglia 的主配置文件都放在/etc/ganglia 目錄下。
[root@node2 ganglia]# vim gmetad.conf 修改服務的配置文件。
data_source "my cluster" localhost 改個組名為 my cluster
[root@node2 ganglia]# vim gmond.conf
cluster {
? name = "my cluster"
? owner = "unspecified"
? latlong = "unspecified"
? url = "unspecified"
啟動 ganglia 的服務端/客戶端:
/etc/init.d/gmond start
/etc/init.d/gmetad start
在瀏覽器中輸入:
http://192.168.2.79/ganglia/
這下面放的是通過廣播監控到的 ganglia 服務的信息。
/var/lib/ganglia/rrds/my cluster
[root@node2 my cluster]# ls
192.168.2.125? 192.168.2.138? 192.168.2.56? node2.example.com
192.168.2.133? 192.168.2.207? 192.168.2.71? __SummaryInfo__
192.168.2.134? 192.168.2.220? 192.168.2.85
下面配置另一臺主機的 ganglia 客戶端服務。
首先切換到當下目錄,將 ganglia 包拷貝到遠程主機。
/root/rpmbuild/RPMS/x86_64
scp ganglia-gmond-* libganglia-3.6.0-1.x86_64.rpm 192.168.2.81:/root/ 順便也把 libconfuse-2.6-
3.el6.x86_64.rpm 也拷貝過去,會用到依賴關系。
安裝客戶端的軟件包。
配置在 192.168.2.81??? node3.example.com
[root@node3 ~]# yum localinstall ganglia-gmond-* libganglia-3.6.0-1.x86_64.rpm libconfuse-2.6-
3.el6.x86_64.rpm
一樣 ganglia 的主配置文件也放在/etc/ganglia 目錄下。
[root@node3 ganglia]# vim? gmond.conf 編輯客戶端的配置文件。
cluster {
? name = "my cluster"
? owner = "unspecified"
? latlong = "unspecified"
? url = "unspecified"
}
要是有多臺客戶端的主機,組一樣都使用
cluster {
? name = "my cluster"
? owner = "unspecified"
? latlong = "unspecified"
? url = "unspecified"
}
重啟服務:
# /etc/init.d/gmond start
在主配置的/var/lib/ganglia/rrds 目錄下可以看到 ganglia 所監控到的主機信息。
單播 ganglia 的配置:
配置在 192.168.2.79 這臺主機上。
單播的原理就是各自監控各自的,大家的組/端口都不一樣,每個人起得組名字,端口都不一樣。
首先把上面的 ganglia 服務給停了。
[root@node2 ganglia]# vim gmetad.conf 編輯服務端的配置
組名我改為 linux007? 監控的主機為 192.168.2.79 和 192.168.2.81 端口為 8007
data_source "linux007" 192.168.2.79:8007??????? 192.168.2.81:8007
[root@node2 ganglia]# vim gmond.conf 客戶端主要修改以下幾行
?send_metadata_interval = 30 /*secs */ 發送的更新為 30 秒
cluster {
? name = "linux007"? 客戶端的組名也為 linux007
? owner = "unspecified"
? latlong = "unspecified"
? url = "unspecified"
}
mcast_join = 239.2.11.71
? port = 8007
? ttl = 1
udp_recv_channel {
? mcast_join = 239.2.11.71
? port = 8007? 端口也為 8007
? bind = 239.2.11.71
retry_bind = true
tcp_accept_channel {
? port = 8007? tcp 的端口為 8007
? # If you want to gzip XML output
? gzip_output = no
}
重啟服務:
/etc/init.d/gmond restart
/etc/init.d/gmetad restart
另一臺客戶端的配置;
192.168.2.81 node3 這臺主機:
[root@node3 ganglia]# vim? gmond.conf? 客戶端的配置文件修改以下幾行。
send_metadata_interval = 30 /*secs */
cluster {
? name = "linux007"
? owner = "unspecified"
? latlong = "unspecified"
? url = "unspecified"
}
mcast_join = 239.2.11.71
? port = 8007
? ttl = 1
udp_recv_channel {
? mcast_join = 239.2.11.71
? port = 8007
? bind = 239.2.11.71
? retry_bind = true
tcp_accept_channel {
? port = 8007
? # If you want to gzip XML output
? gzip_output = no
}
重啟服務:
# /etc/init.d/gmond restart
在服務端的/var/lib/ganglia/rrds/linux007 目錄下,會看到一下文件或目錄。
node2.example.com? node3.example.com? __SummaryInfo__
在瀏覽器中會看到:linux007 的信息
[root@node2 contrib]# cp check_ganglia.py /usr/local/nagios/libexec/
[root@node2 contrib]# cd /usr/local/nagios/libexec/
[root@node2 libexec]# ./check_ganglia.py
Usage: check_ganglia -h|--host= -m|--metric= -w|--warning= -c|--critical= [-s|--server=] [-p|--port=]
-h 可以寫主機名,也可以寫 ip,這怎么寫,你在/var/lib/ganglia/rrds/linux007/看到的信息是一樣
的。
[root@node2 libexec]# vim check_ganglia.py
ganglia_port = 8007
這下面的明顯是不對的,我們寫的是 20%警告,10%危險,先面的輸出是危險,磁盤剩余空間
83.04,很明顯是不對的。
[root@node2 libexec]# ./check_ganglia.py -h node3.example.com -m disk_free_percent_rootfs -w 20
-c 10
CHECKGANGLIA CRITICAL: disk_free_percent_rootfs is 83.04
修改腳本 check_ganglia.py,使其符合我們的要求輸出。
[root@node2 libexec]# vim check_ganglia.py
if critical > warning:
? if value >= critical:
??? print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value)
??? sys.exit(2)
? elif value >= warning:
??? print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value)
??? sys.exit(1)
? else:
??? print "CHECKGANGLIA OK: %s is %.2f" % (metric, value)
??? sys.exit(0)
else:
? if critical >= value:
??? print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value)
??? sys.exit(2)
? elif warning >= value:
??? print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value)
??? sys.exit(1)
? else:
??? print "CHECKGANGLIA OK: %s is %.2f" % (metric, value)
??? sys.exit(0)
??
再次輸出發現完全符合要求:
[root@node2 libexec]# ./check_ganglia.py -h node3.example.com -m disk_free_percent_rootfs -w 20
-c 10
CHECKGANGLIA OK: disk_free_percent_rootfs is 83.04
ganglia 擅長監控多臺服務,nagios 擅長警告,現在把他們結合起來。
首先 nagios 沒有 ganglia 的命令,我們添加 nagios 命令。
# cd /usr/local/nagios/etc/objects/
[root@node2 objects]# vim commands.cfg 要是上面的驗證是 ip 則 HOSTADDRESS,我是域
名則
define command{
??????? command_name??? check_ganglia
??????? command_line??? $USER1$/check_ganglia.py -h $HOSTNAME$ -m $ARG1$ -w $ARG2$ -c
$ARG3$
??????? }
??????????????????????????
[root@node2 objects]# vim templates.cfg
define service {
use generic-service
name ganglia-service
hostgroup_name ganglia-servers
service_groups ganglia-metrics
register??????? 0
}
[root@node2 objects]# vim hosts.cfg
define hostgroup {
hostgroup_name ganglia-servers
alias ganglia-servers
members node3.example.com
}
[root@node2 objects]# vim services.cfg
define servicegroup {
servicegroup_name?????? ganglia-metrics
alias?? Ganglia Metrics
}
define service {
use???? ganglia-service
service_description???? 根分區
check_command?? check_ganglia!disk_free_percent_rootfs!20!10
}
define service {
use???? ganglia-service
service_description???? 系統負載
check_command?? check_ganglia!load_one!4!5
}
重啟服務后校驗語發是否錯誤:
[root@node2 etc]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
校驗成后重啟服務:
# /etc/init.d/nagios restart
在瀏覽器輸入
http://192.168.2.79/nagios/
? 點擊 servers 會看到下面:
下面額外的添加一臺客戶端 node4 192.168.2.82,為其添加服務主機,使用 ganglia+nagios 監控:
scp ganglia-gmond-* libconfuse-2.6-3.el6.x86_64.rpm libganglia-3.6.0-1.x86_64.rpm
192.168.2.82:/root/
安裝這些軟件包:
rpm??? -ivh *
把客戶端的配置文件也給 node4 拷貝一份。
# scp gmond.conf 192.168.2.82:/etc/ganglia/
# /etc/init.d/gmond restart
在 node2 也就是服務端的/var/lib/ganglia/rrds/linux007 的目錄下回收到 node4 這臺主機的信息.
192.168.2.82? node2.example.com? node3.example.com? __SummaryInfo__
切換到 node2 這臺主機,也就是 ganglia 和 nagios 這臺主機的目錄下。
/usr/local/nagios/etc/objects
[root@node2 objects]# vim hosts.cfg 額外添加的主機只需以,隔開;添加主機名
define host{
??????? use???????????????????? linux-server
??????? host_name?????????????? node4.example.com
??????? alias?????????????????? node4
??????? address???????????????? 192.168.2.82
??????? }
define hostgroup {
hostgroup_name ganglia-servers
alias ganglia-servers
members node3.example.com,node4.example.com
}
[root@node2 objects]# vim services.cfg 額外添加的服務,所有的主機都可以收到。
define service {
use???? ganglia-service
service_description???? 內存空間
check_command?? check_ganglia!mem_free!100!50
}
重啟服務:
# /etc/init.d/gmond restart
# /etc/init.d/gmetad restart
# /etc/init.d/nagios restart
在瀏覽器中輸入:
http://192.168.2.79/nagios/
??? 得到下圖:
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
