監控系統之ganglia服務
Ganglia是一個開源叢集監視項目,設計用于測量數以千計的節點,ganglia的核心有gmond,gmetad.web前端,主要用來監控系統性能,包括:cpu,mem,硬碟使用率,i/o負載,網絡流量監控,通過曲線顯示每個節點工作狀态。基本原理為:叢集内的節點通過運作的gmond收集釋出節點的狀态資訊,gmetad周期性的輪詢gmond收集到的資訊,資料傳格式采用xml壓縮格式進行傳輸,然後存入到rrd資料庫,通過web伺服器就可以對其進行查詢結果展示。
材料準備:
ganglia-3.4.0.tar.gz ganglia-web-3.4.2.tar.gz rrdtool-devel-1.3.8-6.el6.x86_64.rpmlibconfuse-devel-2.6-3.el6.x86_64.rpm libconfuse-2.6-3.el6.x86_64.rpm
步驟:
第一步:(ganglia服務的安裝)
#yum install -y rpm-build rpm-build 負責将源碼編譯成二進制檔案
#yum install -y libart_lgpl-devel python-devellibconfuse-devel pcre-devel expat-devel rrdtool-devel apr-devel libtoolautoconf ##解決安裝anglia的依賴性
# yum install -ylibconfuse-devel-2.6-3.el6.x86_64.rpm libconfuse-2.6-3.el6.x86_64.rpm
# yum install -yrrdtool-devel-1.3.8-6.el6.x86_64.rpm
#rpmbuild -tb ganglia-3.4.0.tar.gz ###對這兩個源碼檔案進行編譯為二進制檔案
#rpmbuild -tb ganglia-web-3.4.2.tar.gz
#cd rpmbuild/RPMS/noarch/
# rpm -ivhganglia-web-3.4.2-1.noarch.rpm ## 安裝web展示界面
#(前提先解決相關的依賴性yum install -y php php-gd)
#cd rpmbuild/RPMS/x86_64/
#rpm -ivh *
#scp libganglia-3.4.0-1.x86_64.rpm ganglia-gmond-modules-python-3.4.0-1.x86_64.rpm ganglia-gmond-3.4.0-1.x86_64.rpm libconfuse-devel-2.6-3.el6.x86_64.rpm libconfuse-2.6-3.el6.x86_64.rpm 172.25.45.5: -->用戶端主機ip
#cd/etc/ganglia/ ##編輯主配置檔案
# vimgmetad.conf
44 data_source "liumin cluster"localhost
# vimgmond.conf
24 name = "liumin cluster"
#/etc/init.d/gmondstart ---> # /etc/init.d/gmetad start-----> # /etc/init.d/httpd restart
用戶端: -->安裝資料采集gmond
#rpm-ivh ganglia-gmond-3.4.0-1.x86_64.rpm ganglia-gmond-modules-python-3.4.0-1.x86_64.rpm libconfuse-2.6-3.el6.x86_64.rpmlibconfuse-devel-2.6-3.el6.x86_64.rpm libganglia-3.4.0-1.x86_64.rpm
#vim /etc/ganglia/gmond.conf ###配置檔案,使它能把資料傳給伺服器端gmetad
24 name = "liumin cluster"
##/etc/init.d/gmond start -->netstat -antlpe ##檢視gmond端口打開情況
#Firefox ---> 172.25.45.20/gweb ---->檢視ganglia的顯示界面;

#gmetad收集到的資料全放在/var/lib/ganglia/rrds/liumincluster裡面的各個ip檔案裡面 并且ganglia可以實作将同一網段的主機的資訊收集過來,前提是這些主機裝了gmond采集服務,并且設定好gmond.conf中的name;gmetad就會輪詢采集到這些主機的資料存放到前述的路徑中的檔案夾。
第二步:(內建Nagios報告Ganglia采集的名額)也就是将ganglia與nagios進行結合起來,将ganglia采集到的資料通過nagios進行顯示。
#tar zxf ganglia-3.4.0.tar.gz
#cp /ganglia-3.4.0/contrib/check_ganglia.py /usr/local/nagios/libexec/
#cd /usr/local/nagios/libexec/
#chown nagios.nagios check_ganglia.py
#vim check_ganglia.py #更改ganglia配置檔案,使告警标準與nagios标準一緻
89if critical > warning:
90 ifvalue >= critical:
91 print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value)
92 sys.exit(2)
93 elif value >= warning:
94 print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value)
95 sys.exit(1)
96 else:
97 print "CHECKGANGLIA OK: %s is %.2f" % (metric, value)
98 sys.exit(0)
99else:
100 if critical >= value:
101 print "CHECKGANGLIA CRITICAL: %s is%.2f" % (metric, value)
102 sys.exit(2)
103 elif warning >= value:
104 print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value)
105 sys.exit(1)
106 else:
107 print "CHECKGANGLIA OK: %s is %.2f" % (metric, value)
108 sys.exit(0)
注意:python文法格式,對齊的一行就是一個語句塊。
#cd /var/lib/ganglia/rrds/liumin\cluster/server5.example.com/ #ganglia服務存放采集到主機名為server5.example.com的主機資訊資料的地方,采用環形資料庫存放資料。
#/usr/local/nagios/libexec/check_ganglia.py -h server5.example.com -mdisk_free_percent_rootfs -w 20 -c 10 ##驗證有沒有取道到遠端主機的disk資料
編輯nagios服務的配置檔案,使得nagios能夠得到ganglia采集的名額,并且顯示出來
#vim template.cfg ###編輯模闆
192 define service {
193 use generic-service ##使用通用模闆,
194 name ganglia-service ##模闆别名
195 hostgroup_name ganglia-servers
196 service_groups ganglia-metrics
197 }
#vimcommand.cfg
228 define command{
229 command_name check_ganglia
230 command_line $USER1$/check_ganglia.py -h $HOSTADDRESS$ -m $ARG1$ -w $ARG2$ -c $ARG3$
231 }
#vimhosts.cfg
48define host {
49 use linux-server
50 host_name server5.example.com
51 address 172.25.45.5
52}
71define hostgroup{
72 hostgroup_name ganglia-servers
73 alias ganglia-servers
74 members server5.example.com
75 }
#vim services.cfg
135 define servicegroup {
136 servicegroup_name ganglia-metrics
137 alias Ganglia_Metrics
138 }
139
140 define service{
141 use ganglia-service
142 service_description 根分區空閑百分比
143 check_command check_ganglia!disk_free_percent_rootfs!20!10
144 }
145
146 define service{
147 use ganglia-service
148 service_description 記憶體空閑
149 check_command check_ganglia!mem_free!50000!30000
150 }
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg ##進行錯誤檢查
#/etc/init.d/nagios reload 重新倒入配置
#Firefox 172.25.45.20/nagios 檢視nagios将ganglia采集server5.example.com的資料顯示出來