1.集成 Nagios 报告 Ganglia 指标
ganglia监听8649端口,注意不要被你的防火墙挡住了,可以执行telnet localhost 8649 命令,可以
看到XML输出滚动显示在屏幕中
现在可以重新启动 gmetad,刷新 Web 浏览器,然后应当会看到节点现在出现在列表中
进入/var/lib/ganglia/rrds目录,可以看到每个主机的度量指标,生成了易于查看的图形.(可以参考资料ganglia分布式监控.pdf lftp 192.168.0.254 /pub/docs/ganglia/update/)
cp /root/ganglia-3.1.7/contrib/check_ganglia.py /usr/loca/nagios/libexec 注:ganglia与nagios可以部署在不同的主机。在你安装了ganglia,http://192.168.0.85.
实验一:(假设现在你的服务器的IP:192.168.0.85.被监控的主机的IP:192.168.0.125)
现在你先部署IP:192.168.0.125.被监控的主机。
cd ~
lftp 192.168.0.254
cd /pub/docs/ganglia/x86_64
get ganglia-gmond-3.2.0-1.x86_64.rpm ganglia-gmond-3.2.0.tar.gz libconfuse-2.6-3.el6.x86——64.rpm libganglia-3.2.0-1.x86_64.rpm(lib---那两个rpm包是 安装ganglia-gmond-3.2.0-1.x86_64.rpm的依赖文件)
rpm -ivh *.rpm
(2)安装好软件之后 vi /etc/ganglia/gmond.conf
/etc/init.d/gmond start
- cluster {
- name = "my cluster"
- owner = "unspecified"
- latlong = "unspecified"
- url = "unspecified"
- }
或者有的时候也需要用到:
mcast_join = 239.2.11.71
需要将这个地址加到route中去,大多是不需要改得。
(3)/etc/init.d/gmond restart
netstat -anlpt 可以看到8649端口开着呢。。
(4)
cd ~
tar zxf ganglia-3.2.0.tar.gz
cd ganglia-3.2.0/contrib
scp check_ganglia.py desktop85.example.com:/usr/local/nagios/libexec/
以上是在被监控的主机上做的修改。接下来要在监控主机上作修改了。。。
参考网站:nagios ganglia site:www.ibm.com
http://www.ibm.com/developerworks/cn/linux/l-ganglia-nagios-2/
(5)再主机192.168.0.85机子上:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
检查文件的正确与否。
/etc/init.d/nagios reload
(6)cd /usr/local/nagios/libexec
ll check_ganglia.py
chown +x check_ganglia.py
chown nagios.nagios check_ganglia.py
vi check_ganglia.py
注:check_ganglia.py 命令仅在阈值过高时发出警告。如果希望在阈值过低时发出警告(在
disk_free 中是这样),则需要修改代码。我更改了文件的最后部分,如下所示:
- 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)
注意格式.对齐,如有错误详见参考:ganglia分布式监控.pdf
(7)
cd /var/lib/ganglia/rrds/my cluster
ls会有解析。
检测是否正确:
./check_ganglia.py -h server25.example.com -m disk_free -w 0.2 -c 0.1
显示:CHECKGANGLIA OK: disk_free is 1.05说明正确。显示OK就可以了。这个显示的是被监控主机的df -H,是一致的。
(8)cd /usr/local/nagios/etc/objects
vi commands.cfg
- define command{
- command_name check_ganglia
- command_line $USER1$/check_ganglia.py -h $HOSTNAME$ -m $ARG1$ -w $ARG2$ -c $ARG3$
- }
//(注意写的时候不要落下什么点什么比如:$)
(8) cd /usr/local/nagios/etc/objects
vi hosts.cfg
- define host{
- use linux-server
- host_name desktop85.example.com
- alias Manager
- address 127.0.0.1
- icon_p_w_picpath server.gif
- statusmap_p_w_picpath server.gd2
- 2d_coords 200,300
- 3d_coords 200,300,100
- }
- define host{
- use linux-server
- host_name server25.example.com
- alias mysql
- address 192.168.0.125
- icon_p_w_picpath server.gif
- statusmap_p_w_picpath server.gd2
- 2d_coords 500,300
- 3d_coords 500,300,100
- }
- define hostgroup{
hostgroup_name linux-servers ; The name of the hostgroup
alias Linux Servers ; Long name of the group
members *;
}
(9)cd /usr/local/nagios/etc/objects
vi servers.cfg
:%s/Manager/desktop85.example.com(与服务器有关的写成85)
- define servicegroup{
- servicegroup_name 数据库
- alias mysql数据库
- members server25.example.com,mysql数据库(与数据库有关的因为再被监控的主机上,所以写成25的。这里的server25.example.com与/var/lib/ganglia/rrds/my cluster
- /下面有解析的)
- }
- define servicegroup {
- servicegroup_name ganglia-metrics
- alias Ganglia Metrics
- }
- define service {
- use generic-service
- name ganglia-service
- hostgroup_name linux-servers
- service_groups ganglia-metrics
- notifications_enabled 0
- }
- define service {
- use ganglia-service
- service_description load_one
- check_command check_ganglia!load_one!4!5
- }
- define service {
- use ganglia-service
- service_description disk_free
- check_command check_ganglia!disk_free!0.2!0.1
- }
- define service{
- use local-service ; Name of service template to use
- host_name server25.example.com
- service_description mysql数据库
- check_command check_mysql
- }
(注意:将 define servicegroup{ .... members server25.example.com,mysql数据库} 中再members中删除的要在servers中也删除)
(10)检查配置文件的正确与否再服务器上: /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 显示0错误0警告的时候正确。继续向下执行。
(11)服务器上service nagios reload
/etc/init.d/gmetad restart
在被监控的机子上(这里是192.168.0.125上):/etc/init.d/gmond restart
如果一切正常,您应该看到 Ganglia 数据现在已经在 Nagios 的监视之下
结合使用 Ganglia 和 Nagios,您可以监视任何内容。您可以控制整个云!