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

 
  
  1. cluster { 
  2. name = "my cluster" 
  3. owner = "unspecified" 
  4. latlong = "unspecified" 
  5. 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 中是这样),则需要修改代码。我更改了文件的最后部分,如下所示:

 
  
  1. if critical > warning: 
  2.   if value >= critical: 
  3.     print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value) 
  4.     sys.exit(2) 
  5.   elif value >= warning: 
  6.     print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value) 
  7.     sys.exit(1) 
  8.   else: 
  9.     print "CHECKGANGLIA OK: %s is %.2f" % (metric, value) 
  10.     sys.exit(0) 
  11. else: 
  12.   if critical >= value: 
  13.     print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value) 
  14.     sys.exit(2) 
  15.   elif warning >= value: 
  16.     print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value) 
  17.     sys.exit(1) 
  18.   else: 
  19.     print "CHECKGANGLIA OK: %s is %.2f" % (metric, value) 
  20.     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

 
  
  1. define command{ 
  2. command_name check_ganglia 
  3. command_line $USER1$/check_ganglia.py -h $HOSTNAME$ -m $ARG1$ -w $ARG2$ -c $ARG3$ 

//(注意写的时候不要落下什么点什么比如:$)
(8) cd /usr/local/nagios/etc/objects
vi hosts.cfg

 
  
  1. define host{ 
  2. use linux-server 
  3. host_name desktop85.example.com 
  4. alias Manager 
  5. address 127.0.0.1 
  6. icon_p_w_picpath server.gif 
  7. statusmap_p_w_picpath server.gd2 
  8. 2d_coords 200,300 
  9. 3d_coords 200,300,100 
  10.  
  11. define host{ 
  12. use linux-server 
  13. host_name  server25.example.com 
  14. alias mysql 
  15. address 192.168.0.125 
  16. icon_p_w_picpath server.gif 
  17. statusmap_p_w_picpath server.gd2 
  18. 2d_coords 500,300 
  19. 3d_coords 500,300,100 
  20. 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)

 
  
  1. define servicegroup{ 
  2. servicegroup_name 数据库 
  3. alias mysql数据库 
  4. members server25.example.com,mysql数据库(与数据库有关的因为再被监控的主机上,所以写成25的。这里的server25.example.com与/var/lib/ganglia/rrds/my cluster 
  5. /下面有解析的) 
  6. define servicegroup { 
  7. servicegroup_name ganglia-metrics 
  8. alias Ganglia Metrics 
  9.  
  10. define service { 
  11. use generic-service 
  12. name ganglia-service 
  13. hostgroup_name linux-servers 
  14. service_groups ganglia-metrics 
  15. notifications_enabled 0 
  16.  
  17.  
  18. define service { 
  19. use ganglia-service 
  20. service_description load_one 
  21. check_command check_ganglia!load_one!4!5 
  22.  
  23. define service { 
  24. use ganglia-service 
  25. service_description disk_free 
  26. check_command check_ganglia!disk_free!0.2!0.1 
  27.  
  28.  
  29. define service{ 
  30. use local-service ; Name of service template to use 
  31. host_name server25.example.com 
  32. service_description mysql数据库 
  33. 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,您可以监视任何内容。您可以控制整个云!