0 前记:
yum安装Ganglia比起make install 安装Ganglia方式要简单很多,因为yum方式安装不用自己去下载编译安装各依赖包。
下面我介绍Ganglia在CentOS7_x86_64上的一个最简单的yum安装与配置的例子,只有1个Hadoop集群:
Hadoop cluster:Hadoop集群,1个name node,20个data node(使用HadoopNameNode作为该集群数据收集节点)
1 Ganglia安装
1.1中心节点的安装
- epel包的安装:yum install -y epel-release(解决不能yum安装某些安装包的问题)
- gmetad的安装:yum install -y ganglia-gmetad ganglia-devel
- gmond的安装:yum install -y ganglia-gmond
- rrdtool的安装:yum install -y rrdtool
- httpd服务器的安装:yum install -y httpd
- ganglia-web及php安装:yum install -y ganglia-web php
1.2 被监测节点的安装
- epel包的安装:yum install -y epel-release(解决不能yum安装某些安装包的问题)
- gmond的安装:yum install -y gmond(提示找不到,感觉应该换成上面那个yum install -y ganglia-gmond)
2 Ganglia配置
2.1 中心节点(HadoopNameNode)的配置
2.1.1 安装目录说明
- ganglia配置文件目录:/etc/ganglia
- rrd数据库存放目录:/var/lib/ganglia/rrds
- ganglia-web安装目录:/usr/share/ganglia
- ganglia-web配置目录:/etc/httpd/conf.d/ganglia.conf
2.1.2 相关配置文件修改
将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数据库存放目录访问权限改为nobody:nobody,否则会报错
$ chown -R nobody:nobody /var/lib/ganglia/rrds
修改ganglia-web的访问权限:
修改/etc/httpd/conf.d/ganglia.conf
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
Require all granted
#Require ip 10.1.2.3
#Require host example.org
</Location>
修改dwoo下面的权限
chmod 777 /var/lib/ganglia/dwoo/compiled
chmod 777 /var/lib/ganglia/dwoo/ cache
配置/etc/ganglia/gmetad.conf
data_source "hadoopcluster" 192.168.26.139:8649(注意是所有节点都加上,如master:8649 slave0x:8649)
setuid_username nobody
配置/etc/ganglia/gmond.conf
cluster {
name = "hadoop cluster"
...
}
udp_send_channel {
# the host who gather this cluster's monitoring data and send these data to gmetad node
#注释掉多播模式的,以下出现这个都要注释掉
#mcast_join = 239.2.11.71
#添加单播模式的
host = 192.168.26.139
port = 8649
}
udp_recv_channel {
port = 8649
}
tcp_accept_channel {
port = 8649
}
2.2 Hadoop cluster被监测节点的配置
配置/etc/ganglia/gmond.conf
cluster {
name = "hadoop cluster"
...
}
udp_send_channel {
# the host who gather this cluster's monitoring data and send these data to gmetad node
host = 192.168.26.139
port = 8649
}
udp_recv_channel {
port = 8649
}
tcp_accept_channel {
port = 8649
}
3 Ganglia启动
3.1 中心节点的启动
start httpd, gmetad, gmond
$ systemctl start httpd.service
$ systemctl start gmetad.service
$ systemctl start gmond.service
$ systemctl enable httpd.service
$ systemctl enable gmetad.service
$ systemctl enable gmond.service
3.2 被监测节点的启动
start gmond
$ systemctl start gmond.service
$ systemctl enable gmond.service
3.3 访问网页
浏览器访问 {namenode的ip}/ganglia即可
效果如图
4 可能会遇到的相关错误
- 以调试模式启动gmetad:gmetad-d 9
- 查看gmetad收集到的XML文件:telnet 192.168.52.105 8649
如果提示没有telneyum install telnet-server 安装 telnet服务
yum install telnet.* 安装 telnet客户端
4.1 如果出现错误:
There was an error collecting ganglia data (127.0.0.1:8652):fsockopen error: Permission denied
- 可能原因1:SELINUX配置问题
关闭selinux,vi /etc/selinux/config,把SELINUX=enforcing改成SELINUX=disable;该方法需要重启机器。
可以使用命令setenforce 0来关闭selinux而不需要重启,刷新页面,即可访问;不过此法只是权宜之计,如果想永久修改selinux设置,还是要使用第一种方法 - 可能原因2:rrds目录的访问权限未正确配置
给/var/lib/ganglia/rrds目录赋予nobody:nobody的可访问权限
4.2 如果出现错误:/ganglia无法访问,但同时,httpd server可以正常访问,则说明是/ganglia站点的访问权限或相关目录的权限配置有问题
可能原因1:/etc/httpd/conf.d/ganglia.conf配置文件未修改正确
注释掉其他内容,添加
“Allow from all”
可能原因2:/var/www/html/ganglia目录没有赋予正确的访问权限
chown -R apache:apache /var/www/html/ganglia
chmod -R 755 /var/www/html/ganglia