Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要 是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。
gmetad可以部署在集群内任一台节点或者通过网络连接到集群的独立主机,它通过单播路由的方式与gmond通信,收集区域内节点的状态信息,并以XML数据的形式,保存在数据库中,由RRDTool工具处理数据,并生成相应的的图形显示,以Web方式直观的提供给客户端。
Ganglia包括如下几个程序,他们之间通过XDR(xml的压缩格式)或者XML格式传递监控数据,达到监控效果。集群内的节点,通过运行gmond收集发布节点状态信息,然后gmetad周期性的轮询gmond收集到的信息,然后存入rrd数据库,通过web服务器可以对其进行查询展示。
检查安装ganglia依赖包
rpmbuild命令生成rpm包
[root@hadoop228 ~]# rpmbuild -tb ganglia-3.6.1.tar.gz
命令执行成功,如上图所示,执行以下命令查看生成的rpm文件;我再执行过程中出现“错误:发现已安装(但未打包)文件:”(Installed (but unpackaged) file(s) found),如图所示:
解决方法:
找到 /usr/lib/rpm/macros 中
%__check_files %{_rpmconfigdir}/check-files %{buildroot} 注释掉该行
[root@hadoop228 ~]# cd /root/rpmbuild/RPMS/x86_64/
[root@hadoop228 x86_64]# rpm -ivh *,执行命令安装ganglia相关软件包
配置ganglia
本例只在一台机器上安装配置ganglia,如果是集群环境
在主节点配置gmetad.conf
data_source "hadoop_cluster" 10 10.120.20.228:8649 10.120.20.229:8649 ...
data_source属性是gmetad配置的核心。每一行data_source描述一个gmetad收集信息的gmond集群或gmetad网格
data_source由3个字段组成。第一个字段为唯一标识data_source的字符串;第二个字段为指定轮询间隔(单位:秒)的数字;第三个字段 为以空格分开的所要轮询数据的主机列表,这些地址以IP地址或DNS主机名的形式指定,并可能添加“:端口号”形式的后缀,该端口号指明gmond的 tcp_accept_channel所在位置。如果未指明端口号,gmetad将尝试连接tcp/8649。
在主节点及其它节点配置gmond.conf
cluster {
name = "hadoop_cluster"
owner = "nobody"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
#mcast_join = 239.2.11.71
host = 10.120.20.228 #gmetad主节点
port = 8649
ttl = 1
}
udp_recv_channel {
#mcast_join = 239.2.11.71
port = 8649
#bind = 239.2.11.71
#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
}
tcp_accept_channel {
port = 8649
# If you want to gzip XML output
gzip_output = no
}
cluster中的name属性值与主节点gmetad.conf文件中data_source配置的hadoop_cluster一致
安装ganglia-web
首先安装httpd PHP
[root@hadoop228 ~]# yum install httpd php
下载并解压缩ganglia-web-3.6.2.tar.gz
[root@hadoop228 ~]# tar -zxf ganglia-web-3.6.2.tar.gz
进入ganglia-web-3.6.2目录修改ganglia-web安装参数
[root@hadoop228 ganglia-web-3.6.2]# vim Makefile
修改默认配置:
GDESTDIR=/var/www/html/ganglia
APACHE_USER = apache
GDESTDIR 和 APACHE_USER 属性值与/etc/httpd/conf/httpd.conf(APACHE配置文件)中的DocumentRoot和User对应
执行make install安装
[root@hadoop228 ganglia-web-3.6.2]# make install
修改ganglia-web访问权限[根据具体情况可选]
[root@hadoop228 ~]# chown -R apache:apache /var/www/html/ganglia
[root@hadoop228 ~]# chown -R 755 /var/www/html/ganglia
[root@hadoop228 ~]# chown -R nobody:nobody /var/lib/ganglia/rrds
新建/etc/httpd/conf.d/ganglia.conf配置文件,并添加如图配置:
启动httpd、gmetad、gmond服务
访问ganglia-web监控页面http://localhost/ganglia
Ganglia 监控 Hadoop集群
HADOOP_PATH/etc/hadoop/目录下有两个配置文件:hadoop-metrics.properties和hadoop-metrics2.properties
hadoop-metrics.properties 用于hadoop与3.1版本以前的ganglia集成做监控的配置文件
hadoop-metrics2.properties 用于hadoop与3.1版本以后的ganglia集成做监控的配置文件,本文使用hadoop2.5.1,因此使用hadoop-metrics2.properties配置文件
[hadoop@hadoop228 ~]$ vim hadoop-2.5.1-single/etc/hadoop/hadoop-metrics2.properties
加入以下配置信息,如图所示:
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
namenode.sink.ganglia.servers=10.120.20.228:8649
resourcemanager.sink.ganglia.servers=10.120.20.228:8649
datanode.sink.ganglia.servers=10.120.20.228:8649
nodemanager.sink.ganglia.servers=10.120.20.228:8649
maptask.sink.ganglia.servers=10.120.20.228:8649
reducetask.sink.ganglia.servers=10.120.20.228:8649
启动hadoop
在ganglia-web监控页面选择某个hadoop节点,进入节点监控页面,如果能看到如下图所示的监控内容表示配置成功
Nagios与Ganglia整合
本文使用的Nagios版本:
nagios-4.0.8.tar.gz
nagios-plugins-2.0.3.tar.gz
安装方法参考官网安装文档Installing_Nagios_Core_From_Source.pdf
配置方式可参考:
http://www.ibm.com/developerworks/cn/linux/l-ganglia-nagios-2/
http://quenlang.blog.51cto.com/4813803/1571635
按照上述文档和文章的步骤可以正确配置,这里就不再累述了;整合成功,访问http://localhost/nagios如下图所示: