CentOS6.8 安装Ganglia监控系统

引言

最近研究了一下与Hadoop结合很好的监控工具Ganglia,在做hadoop平台的时候这个工具对于系统的监控有非常好的帮助。
最近部署了30台机器的环境,使用状况还是不错的。
参考了网络文章进行安装,其中发生了很多问题,逐一解决后,形成了这篇文章,这篇文章可以知道安装ganglia,如果安装碰到问题可以留言,共同探讨。

Hadoop版本:2.7.3

ganglia的介绍

ganglia主要由三部分组成,gmond,gmetad,web。
gmond可以理解成数据采集工具。主要的工作方式是:采集当前机器的数据,送到目标的gmond上(这个gmond很重要),目标gmond将数据放到内存,等待gmetad过来拉数据。
gmetad可以理解成数据收集工具。主要的工作方式是:去目标gmond拉数据,然后执行本地存储(rrds)。

过程大致理解为:

gmond(很多个)———upd发送————> 目标gmond <—–tcp拉数据——–gmetad—存储–>rrds

web主要就是将gmetad收集的数据进行展示的工具。

注意:我目前演示的配置是单播,单播方便理解,可以更好的了解ganglia的工作机制。

开始安装

安装yum源

1:epel 源

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
这个源可能已经安装到了你的系统中,但是可能目标地址有些改变,建议删除。
删除命令

>rpm -e --nodeps epel-release-6-8.noarch

验证是否删除

>rpm -qa|grep epel

然后在执行安装

2:remi源

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
如果已经安装,按照上面的步骤删除,重新安装。

验证加入的源工作正常
清楚本地的yum缓存

>yum clean all

验证所有的yum源

>yum list

在安装的时候可能出现如下错误:
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
/etc/yum.repos.d/epel.repo
如果机器没有证书会导致yum失败,这个时候需要修改https为http。如果没有报上面的错误,忽略就OK了。
修改内容,共有三个(这是其中一个):
mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

然后执行

>yum clean all
>yum list

注:这两个yum源所有的机器都需要安装,无论是gmond还是gmetad。

服务器说明

所有的操作都是root
共3台机器
192.168.248.130(gmetad,web,gmond-master)
192.168.248.131(gmond)
192.168.248.132(gmond)

服务端安装与配置

(192.168.248.130)

1:安装php支持

>yum install php-common php-cli php-gb php

2:安装依赖库

>yum install rrdtool rrdtool-devel httpd apr-devel zlib-devel libconfuse-devel expat-devel pcre-devel 

3:安装ganglia

>yum install ganglia-web ganglia-gmetad ganglia-gmond ganglia-gmond-python 

安装完成后ganglia的相关文件所在的目录为一下三个路径:

/etc/ganglia/ (conf)
/usr/share/ganglia (web)
/var/lib/ganglia (rrds,dwoo)

4:配置gmetad
修改/etc/ganglia/gmetad.conf
修改data_source,改成:

data_source "MyCluster” 192.168.248.130:8650 #gmetad采集数据的目标gmond地址和端口(tcp_accept_channel)

5:配置gmond
/etc/ganglia/gmond.conf,修改以下内容(这个gmond节点作为收集节点,这个节点可以是多个,最后需要在gmetad.conf上进行配置):

cluster {
  name = "MyCluster" #设置集群的名称
  #owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}
#发送到目标gmond的地址和端口(单播)
udp_send_channel {
  host=192.168.248.130
  port = 8649
  ttl = 1
}

#接收udp的端口
udp_recv_channel {  
  port = 8649  
}

#gmetad如果过来收集数据请求的端口
tcp_accept_channel {
  port = 8650
  gzip_output = no
}

6:配置web
做这步之前最好进行备份

>cp -R /usr/share/ganglia /usr/share/ganglia_bak 
>ln -s /usr/share/ganglia /var/www/ganglia

以下这个建议是其他作者建议的,我没有碰到情况,没有进行测试。
若有问题,可以将/usr/share/ganglia的内容直接复制到/var/www/ganglia

修改/etc/httpd/conf.d/ganglia.conf,改成:

#  
# Ganglia monitoring system php web frontend  
#  

Alias /ganglia /usr/share/ganglia  

  
    Order deny,allow  
    Allow from all  
    Allow from 127.0.0.1  
    Allow from ::1  
    # Allow from .example.com  
  

7:关闭SELINUX
如果已经关闭,忽略以下操作

>vi /etc/selinux/config

把SELINUX=enforcing改成SELINUX=disable;

需要重启机器。

8:启动服务
目前服务器的配置已经完成,接下来需要启动服务了。
启动前需要关闭防火墙,否则数据送不上来

>service iptables stop

>service gmetad start  
>service gmond start  
>service httpd restart

客户端安装与配置

192.168.248.131(gmond)
192.168.248.132(gmond)
添加yum源的操作和服务端一样

1:安装

>yum install ganglia-gmond
>yum install ganglia-gmond-python 

2:配置gmond
/etc/ganglia/gmond.conf,修改以下内容:

cluster {
  name = "MyCluster" #设置集群的名称
  #owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

#发送到收集服务器和端口
udp_send_channel {
  host=192.168.248.130
  port = 8649
  ttl = 1
}
#接收端口,可以整个注释掉
udp_recv_channel {  
  port = 8649  
}

#这个端口也可以注释掉
tcp_accept_channel {
  port = 8649
  gzip_output = no
}

需要注意的地方

1:忘记关闭selinux

There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error: Permission denied

>vi /etc/selinux/config

把SELINUX=enforcing改成SELINUX=disable;
需要重启机器。

2:自启动

>chkconfig gmond --level 3,4,5 on
>chkconfig gmetad --level 3,4,5 on
>chkconfig httpd --level 3,4,5 on

3:监控udp端口

开始的时候拉不到其他机器的数据,所以我检测了一下upd端口,发现我们网络设置有问题。监控upd端口用tcpdump

>tcpdump -nn -vv -X udp port 8649

访问

http://192.168.248.130/ganglia

配置Hadoop的Metrics

修改hadoop-2.7.3/etc/hadoop/hadoop-metrics2.properties这个文件。
主要是配置各种metrics的收集地址
因为这里只有一个ganglia集群,因此配置了一个收集节点,如果是多个集群需要单独配置。

*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10

# default for supportsparse is false
# *.sink.ganglia.supportsparse=true

*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40

# Tag values to use for the ganglia prefix. If not defined no tags are used.
# If '*' all tags are used. If specifiying multiple tags separate them with
# commas. Note that the last segment of the property name is the context name.
#
#*.sink.ganglia.tagsForPrefix.jvm=ProcesName
#*.sink.ganglia.tagsForPrefix.dfs=
#*.sink.ganglia.tagsForPrefix.rpc=
#*.sink.ganglia.tagsForPrefix.mapred=

namenode.sink.ganglia.servers=192.168.248.130:8649

datanode.sink.ganglia.servers=192.168.248.130:8649

resourcemanager.sink.ganglia.servers=192.168.248.130:8649

nodemanager.sink.ganglia.servers=192.168.248.130:8649

mrappmaster.sink.ganglia.servers=192.168.248.130:8649

jobhistoryserver.sink.ganglia.servers=192.168.248.130:8649

部分参考

http://blog.csdn.net/knowledgeaaa/article/details/23352797
https://my.oschina.net/HIJAY/blog/497933
http://blog.csdn.net/kafeiflynn/article/details/6634380
http://blog.csdn.net/xxd851116/article/details/21369163
http://jingyan.baidu.com/article/29697b913c4a2cab20de3cd9.html
http://blog.chinaunix.net/uid-11121450-id-3147002.html
http://blog.csdn.net/cywosp/article/details/39701141
http://blog.csdn.net/xugen12/article/details/48230617
http://ramosli.iteye.com/blog/1485992

你可能感兴趣的:(大数据,分布式,云计算)