最近研究了一下ganglia监控hadoop集群,大致可以监控hadoop集群中节点的性能。比如CPU、内存、IO、交换分区等。这里就不一一介绍!网上部署监控的文档很多,乱起八糟的也很多,主要是每个人的环境都不一样导致,但是我自己看的还是比较头晕,以至于有的人还直接发布安装脚本,结果可笑的就是脚本拿下来后运行直接报错。这里就不说别人不好的地方了,分享技术是种好事,但是不正确的文档肯定会导致初学者盲目的。所以切记分享技术的时候记得说清楚当时的环境,这里说下我的这个环境吧!
hadoop集群所有节点加起来四台机器,这里我挑slave1作为监控机,另外三台为被监控机。请看下图:
主机名 IP地址 用途 系统版本 软件包安装情况
msater 192.168.15.95 namenode RedHat4.8(64位) 安装系统所有软件包都已安装
slave1 192.168.15.72 datanode 同上 同上
slave2 192.168.15.71 datanode 同上 同上
slave3 192.168.15.132 datanode 同上 同上
其实ganglia主要分为两个守护进程:
监控机主要跑gmetad进程,apache进程,当然如果你要本机监控本机的话还得跑一个gmond进程。而被监控机主要跑一个gmond进程了。因为监控画面需要画面rrdtool,所以监控机要比被监控机多两个软件,一个是rrdtool,一个是gmetad。
下面是我部署监控端的脚本(经过多次试验肯定问题,随着时间的关系可能有的下载链接失效,这里就烦请各位童鞋自己找链接了哈),提醒下各位如果用系统自带的apache的话,必须是软件包默认都安装好的,你可以在/var/www/html目录下新建php测试页,如果能看见一些信息,就说明apache已经加载了php。这里是linux+apache+php环境。还有记得把你的apache主目录指向/var/www/html目录。
[root@slave1 ~]# more ganglia.sh
#!/bin/bash
#############################################################################################################
mkdir /root/software
cd /root/software
#!/bin/bash
#############################################################################################################
mkdir /root/software
cd /root/software
#下载rrdtool并编译安装
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.27.tar.gz
tar zxvf rrdtool-1.2.27.tar.gz
cd rrdtool-1.2.27
./configure --prefix=/usr/local/rrdtool
make && make install
#############################################################################################################
cd /root/software
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.27.tar.gz
tar zxvf rrdtool-1.2.27.tar.gz
cd rrdtool-1.2.27
./configure --prefix=/usr/local/rrdtool
make && make install
#############################################################################################################
cd /root/software
#下载expat并编译安装
wget http://downloads.sourceforge.net/project/expat/expat/2.0.1/expat-2.0.1.tar.gz?use_mirror=cdnetworks-kr-2
tar zxvf expat-2.0.1.tar.gz
cd expat-2.0.1
./configure --prefix=/usr/local/expat
make && make install
wget http://downloads.sourceforge.net/project/expat/expat/2.0.1/expat-2.0.1.tar.gz?use_mirror=cdnetworks-kr-2
tar zxvf expat-2.0.1.tar.gz
cd expat-2.0.1
./configure --prefix=/usr/local/expat
make && make install
#我的是64位操作系统,所以需要拷贝一些链接库文件
mkdir /usr/local/expat/lib64
cp -a /usr/local/expat/lib/* /usr/local/expat/lib64/
#############################################################################################################
cd /root/software
mkdir /usr/local/expat/lib64
cp -a /usr/local/expat/lib/* /usr/local/expat/lib64/
#############################################################################################################
cd /root/software
#下载apr并编译安装
wget http://labs.renren.com/apache-mirror/apr/apr-1.4.6.tar.gz
tar zxvf apr-1.4.6.tar.gz
cd apr-1.4.6
./configure --prefix=/usr/local/apr
make && make install
cd /root/software
#下载apr-util并编译安装
wget http://labs.renren.com/apache-mirror/apr/apr-1.4.6.tar.gz
tar zxvf apr-1.4.6.tar.gz
cd apr-1.4.6
./configure --prefix=/usr/local/apr
make && make install
cd /root/software
#下载apr-util并编译安装
wget http://labs.renren.com/apache-mirror/apr/apr-util-1.4.1.tar.gz
tar zxvf apr-util-1.4.1.tar.gz
cd apr-util-1.4.1
./configure --with-apr=/usr/local/apr --with-expat=/usr/local/expat
make && make install
tar zxvf apr-util-1.4.1.tar.gz
cd apr-util-1.4.1
./configure --with-apr=/usr/local/apr --with-expat=/usr/local/expat
make && make install
#我的是64位操作系统,所以需要拷贝一些链接库文件
cp -f /usr/local/apr/include/apr-1/* /usr/local/apr/include/
mkdir -p /usr/local/apr/lib64
cp -a -f /usr/local/apr/lib/* /usr/local/apr/lib64/
#############################################################################################################
cd /root/software
cp -f /usr/local/apr/include/apr-1/* /usr/local/apr/include/
mkdir -p /usr/local/apr/lib64
cp -a -f /usr/local/apr/lib/* /usr/local/apr/lib64/
#############################################################################################################
cd /root/software
#下载confuse并编译安装
wget http://download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
tar zxvf confuse-2.7.tar.gz
cd confuse-2.7
./configure CFLAGS=-fPIC --disable-nls --prefix=/usr/local/confuse
make && make install
wget http://download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
tar zxvf confuse-2.7.tar.gz
cd confuse-2.7
./configure CFLAGS=-fPIC --disable-nls --prefix=/usr/local/confuse
make && make install
#我的是64位操作系统,所以需要拷贝一些链接库文件
mkdir -p /usr/local/confuse/lib64
cp -a -f /usr/local/confuse/lib/* /usr/local/confuse/lib64/
#####################################################################################################################
cd /root/software
mkdir -p /usr/local/confuse/lib64
cp -a -f /usr/local/confuse/lib/* /usr/local/confuse/lib64/
#####################################################################################################################
cd /root/software
#下载ganglia并编译安装
wget http://cdnetworks-kr-1.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.1.7/ganglia-3.1.7.tar.gz
tar zxvf ganglia-3.1.7.tar.gz
cd ganglia-3.1.7
./configure --prefix=/usr/local/ganglia --with-librrd=/usr/local/rrdtool --with-libapr=/usr/local/apr --with-libexpat=/usr/local/expat --with-libconfuse=/usr/local/confuse --with-gmetad --enable-gexec --enable-status -sysconfdir=/etc/ganglia
make && make install
#####################################################################################################################
#新建ganglia程序目录。
wget http://cdnetworks-kr-1.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.1.7/ganglia-3.1.7.tar.gz
tar zxvf ganglia-3.1.7.tar.gz
cd ganglia-3.1.7
./configure --prefix=/usr/local/ganglia --with-librrd=/usr/local/rrdtool --with-libapr=/usr/local/apr --with-libexpat=/usr/local/expat --with-libconfuse=/usr/local/confuse --with-gmetad --enable-gexec --enable-status -sysconfdir=/etc/ganglia
make && make install
#####################################################################################################################
#新建ganglia程序目录。
mkdir /var/www/html/ganglia
#将ganglia网页程序放入到新建的文件夹中
cp -r web/* /var/www/html/ganglia
cp -r web/* /var/www/html/ganglia
#新建rrdtool放入图像的地方(程序默认的)
mkdir -p /var/lib/ganglia/rrds
mkdir -p /var/lib/ganglia/rrds
#修改属主属组,如果你不改的话,则页面会显示不出来,一会咱们可以看看!
chown nobody:nobody /var/lib/ganglia/rrds
chown nobody:nobody /var/lib/ganglia/rrds
#拷贝启动脚本到系统默认的路径
cp gmond/gmond.init /etc/rc.d/init.d/gmond
cp gmetad/gmetad.init /etc/rc.d/init.d/gmetad
cp gmond/gmond.init /etc/rc.d/init.d/gmond
cp gmetad/gmetad.init /etc/rc.d/init.d/gmetad
#拷贝启动文件到系统默认路径
cp -f /usr/local/ganglia/sbin/gmetad /usr/sbin/gmetad
cp -f /usr/local/ganglia/sbin/gmond /usr/sbin/gmond
cp -f /usr/local/ganglia/sbin/gmetad /usr/sbin/gmetad
cp -f /usr/local/ganglia/sbin/gmond /usr/sbin/gmond
#生成默认的gmond.conf文件
gmond -t | tee /etc/ganglia/gmond.conf
#脚本结束
gmond -t | tee /etc/ganglia/gmond.conf
#脚本结束
#####################################################################################################################
下面开始修改配置文件了,主要是gmetad.conf和gmond.conf文件
vi /etc/ganglia/gmetad.conf
将这一行修改为你自己定义的源和主机IP
data_source "my cluster" localhost
改为
data_source "Hadoop" 192.168.15.72
保存退出!
vi /etc/ganglia/gmond.conf
将这一行name的值修改为刚刚自己定义的源
cluster {
name = "unspecified"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
改为
name = "unspecified"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
改为
cluster {
name = "Hadoop"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
保存退出!
name = "Hadoop"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
保存退出!
最后我们修改/var/www/html/ganglia/conf.php
将这行改为我们rrdtool编译的路径,默认是/usr
define("RRDTOOL", "/usr/bin/rrdtool");
改为
define("RRDTOOL", "/usr/local/rrdtool/bin/rrdtool");
基本配置就完成了哈!
下面我们启动看看效果!
[root@slave1 ~]# /etc/init.d/httpd start
Starting httpd: httpd: Could not determine the server's fully qualified domain name, using 192.168.15.72 for ServerName
[ OK ]
[root@slave1 ~]# /etc/init.d/gmetad start
Starting GANGLIA gmetad: [ OK ]
[root@slave1 ~]# /etc/init.d/gmond start
Starting GANGLIA gmond: [ OK ]
测试用浏览器输入http://IP地址/ganglia
Starting httpd: httpd: Could not determine the server's fully qualified domain name, using 192.168.15.72 for ServerName
[ OK ]
[root@slave1 ~]# /etc/init.d/gmetad start
Starting GANGLIA gmetad: [ OK ]
[root@slave1 ~]# /etc/init.d/gmond start
Starting GANGLIA gmond: [ OK ]
测试用浏览器输入http://IP地址/ganglia
这样就基本完成了本机监控本机了!
下面来说两个常见的错误:
这个错误就是rrds属主属组导致的。修改为nobody则重启apache、gmetad、gmond三个服务。
chown nobody:nobody /var/lib/ganglia/rrds
另外一个错误就是图片显示不出来
这个问题就是conf.php文件没有修改导致。把路径指向自己rrdtool编译后安装的目录就OK了!我这里则是/usr/local/rrdtool/bin/rrdtool路径!
大致本机安装ganglia监控本机就这样吧!下节将介绍被监控机部署ganglia脚本。