架构:
nagios跟ganglia一样可以都是监控软件,但是两个也有不同之处,Ganglia的优势在于实时对监控集群中的机器的各项指标,比如CPU、内存、磁盘、温度等数据,汇总成各种图形化界面,并提供可调用数据。而在出现问题的时候报警提示功能,相对较弱。
Nagios的优势在于出现问题之时可以提供强大的报警提示功能,但是在时间监控上,功能比较弱,即使使用NRPE插件也不足以提供强大的机器监控,所以此处将两者结合起来。实现监控、报警功能。
环境介绍:
1.服务器中已经安装好了Ganglia,安装过程参考:http://9480860.blog.51cto.com/9470860/1746122
2.服务器中已经安装好了Nagios,安装过程详见:http://9480860.blog.51cto.com/9470860/1746124
安装思路:
通过Nagios调用Ganglia的接口,获取整个服务器的监控指标。如果超过设定的指标,则予以报警。
安装过程:
1.Ganglia与naios的结合
# cp ganglia-3.6.0/contrib/check_ganglia.py /usr/local/nagios/libexec/ # chown nagios.nagios check_ganglia.py # /usr/local/nagios/libexec/check_ganglia.py
2.修改gmetad配置,使其shared监控数据
# vim /usr/local/ganglia/etc/gmetad.conf trusted_hosts 127.0.0.1 192.168.235.138 cjx ## vim check_ganglia.py 修改报警脚本 try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((ganglia_host,ganglia_port)) parser = GParser(host, metric) value = parser.parse(s.makefile("r")) s.close() except Exception, err: print "CHECKGANGLIA UNKNOWN: Error while getting value \"%s\"" % (err) sys.exit(3) 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) //报警脚本需要特别注意格式,否则会显示错误提示 # python check_ganglia.py -h cjx -m load_one -w 10 -c 100
3.增加检测ganglia的命令
# vim /etc/nagios/objects/commands.cfg # ‘check_ganglia‘ command definition define command{ command_name check_ganglia command_line $USER1$/check_ganglia.py -h $HOSTADDRESS$ -m $ARG1$ -w $ARG2$ -c $ARG3$ }
4.定义ganglia模板
# vim templates.cfg define service{ name ganglia-service ; The name of this service template use generic-service hostgroup_name gangliaservers service_groups gangliametrics register 0 }
5.定义主机
[root@cjx objects]# vim hosts.cfg define host{ use linux-server host_name cjx alias Manager address 127.0.0.1 icon_image server.gif statusmap_image server.gd2 2d_coords 200,300 3d_coords 200,300,100 } define hostgroup{ hostgroup_name ganglia-servers ; The name of the hostgroup alias ganglia servers ; Long name of the group members *; } ~
5.定义服务
[root@cjx objects]# vim service.cfg define servicegroup { #servicegroup_name ganglia-metrics servicegroup_name gangliametrics alias Ganglia Metrics } define service { use ganglia-service host_name cjx hostgroup_name ganglia-servers service_description load_one check_command check_ganglia!load_one!4!5 } define service{ host_name cjx hostgroup_name ganglia-servers use ganglia-service service_description disk_free check_command check_ganglia!disk_free!0.2!0.1 } //定义服务时一定要定义好主机、主机组、服务组,否则会出现error、warning错误提示,且 网上不好找到答案
6.把文件路径加入到nagios主配置文件里面
[root@cjx objects]# cd .. # vim /etc/nagios/nagios.cfg cfg_file=/etc/nagios/objects/hosts.cfg cfg_file=/etc/nagios/objects/service.cfg
7.验证配置正确性
# /usr/local/nagios/bin/nagios -v /etc/nagios/nagios.cfg
8.重启nagios服务
# service nagios restart
9.打开nagios-web页面可以看到相关信息
这个时候就静静的看着web页面吧。
本文出自 “9470860” 博客,请务必保留此出处http://9480860.blog.51cto.com/9470860/1746129
原文地址:http://9480860.blog.51cto.com/9470860/1746129