Ganglia安装(Centos6.5)

来源:互联网 发布:linux 自启动 编辑:程序博客网 时间:2024/06/06 03:28
前言:

Ganglia是加州伯克利大学千禧计划的其中一个开源项目,以BSD协议分发。是一个集群汇总监控用的的软件,和很多人熟知的Cacti不同,cacti是详细监控集群中每台服务器的运行状态,而Ganglia是将集群中的服务器数据进行汇总然后监控。有时通过cacti或者zabbix看不出来的集群总体负载问题,却能够在Ganglia中体现,其集群的熵图我个人认为是个挺亮点的东西,一眼就明确集群的负载状况。中文翻译叫神经中枢,一目了然,言简意赅。


ganglia是一个用于监控Linux系统集群环境的主机各项性能的开源软件,使用广泛。
装这个东西竟然花了我几天的时间,实在觉得有点浪费了。所以先和大家说,最好不要去解压ganglia某个版本的包和依赖图形软件rrdtool的包,因为他们对版本环境什么的都有各种要求,装起来比较麻烦,并且最后还会出现一些未知的问题,就是我踩过的各种坑。现在给大家贴一个简单的安装方法,全程yum,主要是快而且不容易出问题,也留给以后的自己。


流行的开源服务器集群监控工具有很多,例如Nagios、Cacti、Ganglia、Zenoss、Clumon,它们在底层都利用了RRDTool。国内最常用的就是Cacti+Nagios,但是Ganglia其实也很不错,Ganglia+Nagios的组合也很强大。
Ganglia是一个可伸缩的监控系统,尤其适合用来监计算机集群、网格等。
监控端:由gmetad(主程序)、ganglia-web(web文件)及rrd组成;
被监控端:gmond(收集本机数据,并发送至其他机器上,并非只是监控端;且收集其它被监控端数据,供监控端读取)
Ganglia的收集数据工作可以工作在单播(unicast)或多播(multicast)模式下,默认为多播模式。 
单播:发送自己收集到的监控数据到特定的一台或几台机器上,可以跨网段 
多播:发送自己收集到的监控数据到同一网段内所有的机器上,同时收集同一网段内的所有机器发送过来的监控数据。因为是以广播包的形式发送,因此需要同一网段内。但同一网段内,又可以定义不同的发送通道。


安装:

所有节点:(我这里只要三台虚拟机192.168.205.148、192.168.208.157、192.168.205.158)
以主节点192.168.205.148为例
vi /etc/hosts
192.168.205.148 HUI-01
192.168.205.157 HUI-02
192.168.205.158 HUI-03


vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=HUI-01


三台节点都重启reboot

先查询Centos6.5自带的yum
[root@localhost ~]# rpm -qa |grep yum
yum-utils-1.1.30-14.el6.noarch
yum-plugin-fastestmirror-1.1.30-14.el6.noarch
PackageKit-yum-0.5.8-21.el6.x86_64
yum-3.2.29-40.el6.centos.noarch
PackageKit-yum-plugin-0.5.8-21.el6.x86_64
yum-plugin-security-1.1.30-14.el6.noarch
yum-metadata-parser-1.1.2-16.el6.x86_64
You have mail in /var/spool/mail/root
然后删除自带的yum
[root@localhost ~]# rpm -qa|grep yum|xargs rpm -e --nodeps(不检查依赖,直接删除rpm包)
[root@localhost ~]# rpm -qa |grep yum


根据网易镜像查找相关centos的yum安装包
http://mirrors.163.com/centos/6/os/x86_64/Packages/
它这个网站最后两个rpm包没有相应的版本,有可能是时间的问题,我已经把这四个包上传,地址:http://download.csdn.net/download/m0_37739193/9947144


[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
python-iniparse-0.3.1-2.1.el6.noarch.rpm  yum-3.2.29-40.el6.centos.noarch.rpm  yum-metadata-parser-1.1.2-16.el6.x86_64.rpm  yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm
[root@localhost ~]# rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
warning: python-iniparse-0.3.1-2.1.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
        package python-iniparse-0.3.1-2.1.el6.noarch is already installed
(如果你想去掉Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY这行警告可执行rpm --import /etc/pki/rpm-gpg/RPM*)
[root@localhost ~]# rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:yum-metadata-parser    ########################################### [100%]
[root@localhost ~]# rpm -ivh yum-3.2.29-40.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm
Preparing...                ########################################### [100%]
   1:yum-plugin-fastestmirro########################################### [ 50%]
   2:yum                    ########################################### [100%]


[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
[root@localhost yum.repos.d]# yum clean all 清除原有缓存
[root@localhost yum.repos.d]# yum makecache 获取yum列表


更新安装epel
[root@localhost yum.repos.d]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Retrieving http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.tV5yAh: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]
(你会发现在/etc/yum.repo目录下会多出epel.repo和epel-testing.repo这两个文件)


服务器端192.168.205.148执行:
安装gmetad
yum install -y ganglia-gmetad ganglia-devel


安装依赖图形软件rrdtool,先确认已卸载旧版本
yum erase rrdtool -y
yum install -y rrdtool


安装httpd服务器(用于搭建php网页服务器)
yum install -y httpd


安装ganglia-web及php
yum install -y ganglia-web php


192.168.205.157、192.168.205.158安装gmond(客户端)
yum install -y ganglia-gmond


软件安装目录说明
ganglia配置文件目录:/etc/ganglia
rrd数据库存放目录:/var/lib/ganglia/rrds
httpd主站点目录:/var/www/html
ganglia-web安装目录:/usr/share/ganglia
ganglia-web配置目录:/etc/httpd/conf.d/ganglia.conf


在192.168.205.148配置服务端(gmetad)
将ganglia-web的站点目录连接到httpd主站点目录
ln -s /usr/share/ganglia/ /var/www/html/


修改httpd主站点目录下ganglia站点目录的访问权限
将ganglia站点目录访问权限改为apache:apache
chown -R apache:apache /var/www/html/ganglia/
chmod -R 755 /var/www/html/ganglia/


修改rrd数据库存放目录访问权限
将rrd数据库存放目录访问权限改为ganglia:ganglia,这个是默认权限,也可以在gmetad中修改为root或nobody,这边做相应修改
chown -R ganglia:ganglia /var/lib/ganglia/rrds/
修改ganglia-web的访问权限:
vi /etc/httpd/conf.d/ganglia.conf

Alias /ganglia /usr/share/ganglia  <Location /ganglia>    Order deny,allow    # Deny from all    # Allow from 127.0.0.1    # Allow from ::1    Allow from all    # Allow from .example.com  </Location>

配置/etc/ganglia/gmetad.conf
data_source "my cluster" 1 192.168.205.148 192.168.205.157
gridname "HUI QIANG"
每个data_source由3个字段组成。第一个字段为唯一标识data_source的字符串;第二个字段为指定轮询间隔(单位:秒)的数字;第三个字段为以空格分开的所要轮询数据的主机列表,这些地址以IP地址或DNS主机名的形式指定,并可能添加“:端口号”形式的后缀,该端口号指明gmond的tcp_accept_channel所在位置。如果未指明端口号,gmetad将尝试连接tcp/8649。
注意: gmetad会依次检测指定主机,并从第一台响应主机开始收集状态数据,所以无需在data_source定义里指定集群内的所有主机。假若有节点失效,通常指定两三个主机也就足够保证数据的收集。


case_sensitive_hostnames 1
这个也可以不配置。在gmetad之前版本中,RRD文件区分主机名大小写,但是现在已经有所改变。如果希望继续使用Ganglia 3.2之前版本创建的RRD文件,将该值设置为1。从Ganglia 3.2开始,该值默认设置为0。


service gmetad start


在192.168.205.157、192.168.205.158配置客户端(gmond)
被监控节点配置文件gmond.conf:
按上面的步骤安装完后其实已经存在/etc/ganglia/gmond.conf文件了,但如果你将此配置文件瞎改后想还原默认配置的话可以做这一步:
gmond -t | tee /etc/ganglia/gmond.conf(生成默认配置文件)


gmond.conf包括了几个部分:globals、cluster、udp_send_channel、udp_recv_channel等,如果只是想要Ganglia简单地运行
只需命名一个cluster名称,名称与gmetad.conf中的data_source保持一致。我的命名:name = "my cluster"
把这个gmond.conf配置文件分发到每个被监控的节点服务器上,重启监控端的gmetad和gmond,以及节点端的gmond,即可对节点进行监控。 


service gmond start


如果你修改了rrd数据文件夹的读写权限,下面两处也需要修改一下,假如权限组为nobody

globals {daemonize = yes      #以后台的方式运行setuid = yesuser = nobody        #运行gmond的用户debug_level = 0      #调试级别max_udp_msg_len = 1472mute = no            #哑巴,本节点将不会再广播任何自己收集到的数据到网络上deaf = no            #聋子,本节点将不再接收任何其他节点广播的数据包allow_extra_data = yeshost_dmax = 0 /*secs */cleanup_threshold = 300 /*secs */gexec = no           #是否使用gexecsend_metadata_interval = 0 /*secs */}cluster {name = "my cluster"  #本节点属于哪个clusterowner = "nobody"     #谁是该节点的所有者latlong = "unspecified"url = "unspecified"}

客户端监控安装完成后,配置文件位于安装Ganglia的etc目录下,名称为gmond.conf,这个配置文件稍微复杂,其他内容介绍如下:

host {  location = "unspecified"   } udp_send_channel {       #udp包的发送通道  mcast_join = 239.2.11.71   #多播,工作在239.2.11.71通道下。如果使用单播模式,则要写host = host1,单播模式下也可以配置多个udp_send_channel  port = 8649            #监听端口  ttl = 1} udp_recv_channel {           #接收udp包配置 //如果使用单机广播,要删除“mcast_join”和“bind”  mcast_join = 239.2.11.71   #同样工作在239.2.11.71通道下  port = 8649                #监听端口  bind = 239.2.11.71         #绑定}tcp_accept_channel {  port = 8649               #通过tcp协议监听的端口,远端可以通过链接8649端口得到监控数据}

------------------------------------------
globals段:gmond的全局配置,一般不需要修改
cluster段:这一段是重要的一段,至少需要定义name变量,所有name相同的节点将认为在同一个集群里,其他变量是对该集群的说明。
host段:只有一个变量,location,是对这个节点的一些说明
udp_send_channel段:这也是很重要的一段,可以定义多个这样的段,不过如果在通一局域网内,只有一个集群的环境下,这一段保持默认也可以工作的很好。ganglia默认采用多播发送监控数据,mcast_join变量指定多播组。但是,并非所有环境都适合多播,例如,我的环境就不适合多播,幸运的是,ganglia也支持单播的方式,host变量指定一台gmond服务器接受监控数据。值得注意的是,mcast_join和host不能同时出现在一个channel里。port 指定端口号,ttl指定跳数一般为1,如果需要经过gmond中转,需要修改这个跳数。
udp_recv_channel段:对应于udp_send_channel段,也可以设置多个。如果采用单播的方式,需要注意bind变量指出的ip,你的所有其他gmond可以访问到,事实上,可以使用0.0.0.0
tcp_accept_channel段:指定一个端口,可以通过TCP的的方式,从这个端口读取XML格式的监控数据
modules段和collection_group段:这两段会在下一篇讲扩展gmond的文章中介绍
------------------------------------------


--检查 gmetad 服务
telnet localhost 8651
(有大量xml数据返回,由于过多这里就不粘贴出来了)
--检查 gmond 服务
telnet localhost 8649


主节点192.168.205.148上:
[root@localhost ~]# service httpd restart
Stopping httpd: [  OK  ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[  OK  ]
解决:
vi /etc/httpd/conf/httpd.conf   加入一句  ServerName  localhost:80
但是输入http://192.168.205.148无法打开网页
结果后来发现又败在了防火墙selinux上。。。


我这里测试的机器太少,只有两三台,如果能部署在上百台机器上效果可能会更好




点击上图红色箭头所指位置有




参考:

http://slaytanic.blog.51cto.com/2057708/808981/


原创粉丝点击