您的位置:首页 > 运维架构

ganglia3.6.0 监控 Hadoop 2.0.0-cdh4.2.0

2014-07-10 18:18 411 查看
1. 安装软件包,yum方式,源码方式以后再研究, 注意主节点master与从节点安装的软件包不一致.

主节点: sudo yum install -y ganglia-gmetad ganglia ganglia-web rrdtool-devel rrdtool expat expat-devel pcre pcre-devel apr-util-ldap libconfuse php httpd

从节点: sudo yum install -y ganglia-gmond rrdtool-devel rrdtool expat expat-devel pcre pcre-devel apr-util-ldap libconfuse

2. 配置文件:

a:主节点 安装ganglia-gmetad, 向从节点gmond发送请求,获取监控信息数据

httpd: /etc/httpd/conf.d/*.conf 不用修改,默认即可

gmetad: /etc/ganglia/conf.php 默认即可

/etc/ganglia/gmetad.conf 文件内容改动如下, 修改data_source, fc20_namenode是集群的名字,随意命名,fc20是监控信息所在的机器host名字即gmond所在节点的名字,gmetad要从这里(gmond所在节点)请求收集监控信息,8649是默认端口.

data_source "fc20_namenode" fc20:8649

rrd_rootdir "/var/lib/ganglia/rrds" rrd数据存放目录安装完rrdtool包之后会自动创建,就是默认目录,去掉注释即可,这个目录的用户和组默认都是ganglia,有点说要修改为nobody,我修改后在启动gmetad服务时,提示这个目录的用户必须为ganglia, 改回来就可以了, 打开ganglia监控页面http://fc20/ganglia
时提示无法访问的错误:

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

另外也要把selinux特性关掉,否则也提示这个错误, sudo setenforce 0

b:从节点, 安装ganglia-gmond, 收集本节点监控信息数据,以单播(仅一个中央节点保存监控信息数据)或多播形式向其它节点(每个节点都保存监控信息数据)发送监控信息数据, gmetad既可以从gmond多播节点(任意gmond节点,端口为udp端口 8049),也可以从中央节点(指定一个gmond节点,端口为仍然是8649)请求获取监控数据.

gmond: /etc/ganglia/gmond.conf :

/*

* The cluster attributes specified will be used as part of the <CLUSTER>

* tag that will wrap all hosts collected by this instance.

*/

cluster {

name = "fc20_namenode" 修改name为data_source中的名字

owner = "unspecified"

latlong = "unspecified"

url = "unspecified"

}

我的配置为单播方式,即只有一个中央节点收集监控信息数据:

/* Feel free to specify as many udp_send_channels as you like. Gmond

used to only support having a single channel */

udp_send_channel {

#bind_hostname = yes # Highly recommended, soon to be default.

# This option tells gmond to use a source address

# that resolves to the machine's hostname. Without

# this, the metrics may appear to come from any

# interface and the DNS names associated with

# those IPs will be used to create the RRDs.

#mcast_join = 239.2.11.71 ganglia默认的多播地址,手动注释掉了.

host = 192.168.0.100 单播使用的地址和端口, 意思是这个节点的gmond会将监控数据发送这台节点上, 以后gmetad就可以直接去这个节点查询监控数据,如果所有节点的gmond都将数据发送到这个节点, 那么这个节点就是中心节点,收集监控数据, gmetad就可以从这个节点获取所有节点的监控数据.

port = 8649

ttl = 1

}

以上单播方式也可以配置多个udp_send_channel, 那就变成多个数据收集中心了,

/* You can specify as many udp_recv_channels as you like as well. */

udp_recv_channel {

#mcast_join = 239.2.11.71 ganglia默认的多播地址,手动注释掉即可,单播的话只需要在gmond的所有节点中配置一个节点作为数据收集中心即可,不需要所有gmond节点都配置udp_recv_channel,

port = 8649

#bind = 239.2.11.71 注释掉即可, 如果这个节点作为数据收集中心,那么配置bind绑定到本地ip地址即可,其它的gmond节点的udp_send_channel就要配置host = 这个节点的ip地址了,哈哈.

#retry_bind = true 注释掉即可

# Size of the UDP buffer. If you are handling lots of metrics you really

# should bump it up to e.g. 10MB or even higher.

# buffer = 10485760

}

修改配置文件就到这里完成了.

3. 启动服务:

systemctl start httpd

systemctl start gmond

systemctl start gmetad

systemctl
status -l gmetad 查看gmetad启动时的状态信息是否有错误.

如果hadoop的相关ganglia配置没问题,那么/var/lib/ganglia/rrds/目录应该会生成以data_source中的集群名字为名字的目录:fc20_namenode,
该目录下又会生成以被监控节点的主机为名字的目录,比如我的rrds目录:

[ljq@fc20
~]$ ll /var/lib/ganglia/rrds/fc20_namenode/

总用量 20

drwxr-xr-x. 2 ganglia ganglia 4096 7月 9 16:43 fc20

drwxr-xr-x. 2 ganglia ganglia 4096 7月 9 15:50 localhost

drwxr-xr-x. 2 ganglia ganglia 12288 7月 9 16:43 __SummaryInfo__

fc20是从节点, localhost是本地机器,不知道为什么这个localhost也会出现在这里.

4. 总结:

gmetad既可以通过默认udp端口8649从gmond获取数据,也可以通过默认tcp端口8651为其它gmetad提供数据,总之,gmetad和gmond的配置相当灵活,有空了画一张图传上来.

5. hadoop配置文件中的ganglia配置请参考:
http://blog.csdn.net/ljq32/article/details/37662665
附ganglia web监控页面:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: