1 背景
随着移动电信网络技术的蓬勃发展,越来越多的业务和系统增多,这些业务系统给人们带来了诸多便捷。但是随着用户量的增多、数据量的增大,业务系统的压力也越来越大,其运行也需要专门的管理人员进行管理,很有必要对其运行状态进行监控。Ganglia 是UC Berkeley 发起的一个开源集群监视项目,广泛用于hadoop 监控,设计用于测量数以千计的节点。Ganglia 的核心包含gmond 、gmetad 以及一个Web 前端。主要 是用来监控系统性能,如:cpu 、mem 、硬盘利用率, I/O 负载、网络流量、hadoop 及hbase 指标情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。
Ganglia 由gmond 、gmetad 和gweb 三部分组成
gmond (Ganglia Monitoring Daemon )是一种轻量级服务,安装在每台需要收集指标数据的节点主机上。gmond 在每台主机上完成实际意义上的指标数据收集工作,并通过侦听/ 通告协议和集群内其他节点共享数据。使用gmond ,你可以很容易收集很多系统指标数据,如CPU 、内存、磁盘、网络和活跃进程的数据等。
gmetad (Ganglia Meta Daemon )是一种从其他gmetad 或gmond 源收集指标数据,并将其以RRD 格式存储至磁盘的服务。gmetad 为从主机组收集的特定指标信息提供了简单的查询机制,并支持分级授权,使得创建联合监测域成为可能。
gweb (Ganglia Web )gweb 是一种利用浏览器显示gmetad 所存储数据的PHP 前端。在Web 界面中以图表方式展现集群的运行状态下收集的多种不同指标数据。

2 环境准备
2.1 部署环境规划
这三台机器都部署了hadoop 组件,我们将Ganglia 主节点规划到namenode01 机,Ganglia 从节点规划到两台datanode 节点。
|
主机名 |
IP 地址 |
操作系统 |
Hadoop 组件 |
服务节点 |
监控软件 |
|
namenode01 |
192.168.73.100 |
RedHat 6.4 x86_64 |
Zookeeper NameNode SecondaryNameNode HMaster JobTracker |
监控服务主节点 |
Ganglia ganglia-web php apache |
|
datanode01 |
192.168.73.101 |
RedHat 6.4 x86_64 |
TaskTracker Zookeeper HRegionServer DataNode |
被监控从节点 |
ganglia |
|
datanode02 |
192.168.73.101 |
RedHat 6.4 x86_64 |
TaskTracker Zookeeper HRegionServer DataNode |
被监控从节点 |
ganglia |
2.2 软件下载地址
1 、 ganglia -3.6.0 下载地址
https://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/
2 、 ganglia-web -3.5.10 下载地址
http://jaist.dl.sourceforge.net/project/ganglia/ganglia-web/
3 、 httpd-2.2.23 下载地址
http://archive.apache.org/dist/httpd/
4 、 php -5.4.10 下载地址
http://cn2.php.net/downloads.php
2.3 软件包检查
安装Ganglia 监控软件前需要提前安装如下软件包,如检查 以下软件包未安装的,可以通过操作镜像文件来安装。
|
rpm -q gcc \ glibc \ glibc-common \ rrdtool \ rrdtool-devel \ apr \ apr-devel \ expat \ expat-devel \ pcre \ pcre-devel \ dejavu-lgc-sans-mono-fonts \ dejavu-sans-mono-fonts |
2.4 安装confuse
libconfuse 是一个用C 实现配置文件解析器库,授权的ISC 许可的条件下,它支持段(列表)和值(字符串,整数,浮点数,布尔值或其他部分),以及一些其他功能(如单/ 双引号字符串,环境变量扩展,功能嵌套include 语句)。它可以添加配置文件的能力,使用简单的API 使程序读取配置文件非常容易
|
tar -zxf /usr/local/confuse-2.7.tar.gz cd confuse-2.7 ./configure CFLAGS=-fPIC --disable-nls make && make install |
2.5 安装python
Ganglia 指标监控可以通过 Python 模块来自定义的指标,因此我们这边需要安装 python 。
|
tar -jxf /usr/local/Python-2.7.3.tar.bz2 ./configure --prefix=/usr/local --enable-shared make && make install
配置共享库 vi /etc/ld.so.conf -- 增加如下内容 /usr/local/lib 启用配置 ldconfig |
3 Ganglia 安装
3.1 安装 ganglia( 所有节点都要安装 )
|
tar -zxf /usr/local/ganglia-3.6.0.tar.gz cd ganglia-3.6.0 ./configure --prefix=/usr/local/ganglia --with-gmetad --enable-gexec --with-python=/usr/local make && make install |
3.2 安装 ganglia-web ( 主节点安装 )
|
tar -zxf ganglia-web-3.5.10.tar.gz -C /opt/ganglia/ cd /opt/ganglia/ganglia-web-3.5.10 cp conf_default.php conf.php |
3.2.1 修改配置
1 、/opt/ganglia/ganglia-web-3.5.10/ conf.php ,修改以下变量
|
$conf['gmetad_root'] = "/opt/ganglia/ganglia-web-3.5.10"; |
2 、/opt/ganglia/ganglia-web-3.5.10/header.php ,修改以下变量
|
session_start(); ini_set('date.timezone','PRC'); -- 修改时区为本地时区 if (isset($_GET['date_only'])) { $d = date("r"); echo $d; exit(0); } |
3 、新建临时目录
|
mkdir –p /opt/ganglia/ganglia-web-3.5.10/dwoo/cache mkdir –p /opt/ganglia/ganglia-web-3.5.10/dwoo/compiled chmod 777 /opt/ganglia/ganglia-web-3.5.10/dwoo/cache chmod 777 /opt/ganglia/ganglia-web-3.5.10/dwoo/compiled |
3.3 安装 apache ( 主节点安装 )
|
tar -zxf httpd-2.2.23.tar.gz cd httpd-2.2.23 ./configure --prefix=/usr/local/apache2 make && make install |
3.4 安装 php ( 主节点安装 )
|
tar -zxf php-5.4.10.tar.gz cd php-5.4.10 ./configure --prefix=/usr/local/php--with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr make && make install |
3.5 使用 apache 发布 ganglia-web ( 主节点安装 )
|
vi /usr/local/apache2/conf/httpd.conf
DirectoryIndex index.html index.php AddType application/x-httpd-php .php
# 在文件最后增加如下内容 # ganglia Alias /ganglia "/opt/ganglia/ganglia-web-3.5.10"
AuthType Basic Options None AllowOverride None Order allow,deny Allow from all
|
启动 httpd 服务
|
/usr/local/apache2/bin/apachectl restart |
4 配置Ganglia
4.1 配置gmetad ( 主节点配置)
|
cd ganglia-3.6.0 cp ./gmetad/gmetad.init /etc/init.d/gmetad cp ./gmetad/gmetad.conf /usr/local/ganglia/etc/
vi /etc/init.d/gmetad GMETAD=/usr/local/ganglia/sbin/gmetad |
vi /usr/local/ganglia/etc/gmetad.conf
|
data_source "duangr-cluster" 10 namenode01 datanode01 datanode02 xml_port 8651 interactive_port 8652 rrd_rootdir "/opt/ganglia/rrds" case_sensitive_hostnames 0 |
chown -R nobody:nobody /export/home/ganglia/rrds
启动 gmetad 服务 , 并设为开机自动运行
|
service gmetad restart chkconfig --add gmetad |
4.2 配置 gmond ( 所有节点配置 )
|
cd ganglia-3.6.0 cp ./gmond/gmond.init /etc/init.d/gmond ./gmond/gmond -t > /usr/local/ganglia/etc/gmond.conf
vi /etc/init.d/gmond GMOND=/usr/local/ganglia/sbin/gmond |
vi /usr/local/ganglia/etc/gmond.conf
|
cluster { name = "duangr-cluster" owner = "nobody" latlong = "unspecified" url = "unspecified" } |
复制python module到ganglia部署目录
|
mkdir /usr/local/ganglia/lib64/ganglia/python_modules cp ./gmond/python_modules/*/*.py /usr/local/ganglia/lib64/ganglia/python_modules cp ./gmond/python_modules/conf.d/*.pyconf /usr/local/ganglia/etc/conf.d |
启动gmond服务,并设为开机自动运行
|
service gmond restart chkconfig --add gmond |
5 监控配置
5.1 监控 hadoop 配置 (hadoop 集群所有节点 )
1 、/opt/hadoop/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=239.2.11.71:8649 resourcemanager.sink.ganglia.servers=239.2.11.71:8649 datanode.sink.ganglia.servers=239.2.11.71:8649 nodemanager.sink.ganglia.servers=239.2.11.71:8649 maptask.sink.ganglia.servers=239.2.11.71:8649 reducetask.sink.ganglia.servers=239.2.11.71:8649 |
2 、其它节点直接将配置文件 COPY 过去
|
Scp /opt/hadoop/etc/Hadoop/hadoop-metrics2.properties datanode01: /opt/hadoop/etc/Hadoop/ Scp /opt/hadoop/etc/Hadoop/hadoop-metrics2.properties datanode02: /opt/hadoop/etc/Hadoop/ |
5.2 监控 hbase 配置 (hbase 集群所有节点 )
1 、/opt/hbase/conf/hadoop-metrics2-hbase.properties 在配置文件末尾新增以下配置
|
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 *.sink.ganglia.period=10 hbase.sink.ganglia.period=10 hbase.sink.ganglia.servers=239.2.11.71:8649 |
2 、其它节点直接将配置文件 COPY 过去
|
Scp /opt/hbase/conf/hadoop-metrics2-hbase.properties datanode01: /opt/hbase/conf/ Scp /opt/hbase/conf/hadoop-metrics2-hbase.properties datanode02: /opt/hbase/conf/ |
6 服务重启
1、 重启hbase 、hadoop 服务
/opt/hbase/bin/stop-hbase.sh
/opt/Hadoop/sbin/stop-all.sh
/opt/Hadoop/sbin/satrt-all.sh
/opt/hbase/bin/start-hbase.sh
2、 重启Ganglia
Service gmond restart
Service gmetad restart
7 监控界面
Ganglia 监控登录地址 http://192.168.73.100/ganglia
1 、节点信息

2、 主机资源监控界面
(包含 cpu 、 network 、 memory )

3 、hdfs 监控界面

4 、HBASE 监控界面
有需要的朋友可以关注我的公众号,文章每日一更
