监控系统之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的数据显示出来