ganglia3.6.0 监控 Hadoop 2.0.0-cdh4.2.0


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监控页面:ganglia3.6.0 监控 Hadoop 2.0.0-cdh4.2.0_第1张图片ganglia3.6.0 监控 Hadoop 2.0.0-cdh4.2.0_第2张图片




你可能感兴趣的:(hadoop,ganglia)