ganglia监控装配
ganglia监控安装
一、引言
ganglia是一个优秀的分布式集群网络监控系统,起源于UC Berkeley发起的一个开源项目。该项目起初的定位就是开发出一个能监控数千计节点的监控服务系统,把各节点的状态信息汇总一起,以供使用者能够方便集中地观察集群的相关指标。在ganglia里面,采集的指标称之为度量数据。这些度量数据包含有cpu, memory,硬盘使用情况等。当然,我们也可以为ganglia写一些插件,让ganglia能够采集得到用户提供的特定数据。通过这些度量数据,你可以观察到节点的运行状况,分析集群是否存在问题。
二、ganglia安装
现在那些对集群稍有要求的公司都会用到ganglia。如果ganglia事先为你部署好了,那么你就只需要观察你想查看的数据即可。如果需要自己来安装ganglia,那么安装成功ganglia,还是需要了解ganglia的组成,这样便于ganglia来搭建。
ganglia主要包括三个大的功能:
- 采集。ganglia的采集工具是ganglia自带的工具(二进制执行文件)gmond, gmetad。
- 存储。ganglia会把数据存储在以.rrd为扩展名的rrd文件里面。因此这需要安装rrdtool包。
- 展示。ganglia自带一个分析rrd格式数据的展示工具,这个工具是用php写的。可以直接放到apache(或者用轻量级httpd,nginx)等容器的project目录中,通过它们来访问监控页面。
因此,使用ganglia,需要我们安装三个包:ganglia包,rrdtool包,WEB容器apache或者nginx包。
2.1. 安装依赖包
rrdtool包依赖许多的第三方工具,例如pango,freetype,libpng,libart_lgpl等。依赖的所有包可以参考如下页面:
http://oss.oetiker.ch/rrdtool/pub/libs/。
如果不想一个一个的安装,也可以通过如下命令,一劳永逸。
yum install libpng apr* check-devel cairo* pango* libxml2-devel glib2* zlib libdbi dbus-devel freetype* fontconf* gcc* expat-devel python-devel libXrender-devel pcre* pkgconfig pixman libart_lgpl* perl libconfuse下面简单讲一些几个重要包的作用:
- apr:是apache基金会下的apache portable runnable项目。
- confuse:是配置文件解析器。它有强大的功能,并且接口容易理解学习。
- expat:是xml文件解析器,能够边读取xml边解析成数据。(想一想ganglia采集的数据是什么格式的?)
我在安装上述工具包时是通过源码包来安装的。
(cd expat-2.1.0 ; ./configure --prefix=/usr/local/expat-2.1.0;make;make install) && \ (cd apr-1.4.6; ./configure --prefix=/usr/local/apr-1.4.6;make;make install) && \ (cd apr-util-1.4.1; ./configure --with-apr=/usr/local/apr --with-expat=/usr/local/expat --with-apr=/usr/local/apr-1.4.6 --with-expat=/usr/local/expat-2.1.0;make;make install) && \ (cd confuse-2.7; ./configure --prefix=/usr/local/confuse-2.7;make;make install)
2.2. 安装rrdtool包和ganglia包
在安装rrdtool时,有时需要指定一些安装包的路径。在安装ganglia包之前必须先安装rrdtool, 这样--with-gmetad才会起作用,因为该命令依赖rrdtool静态库。ganglia包下面有gmond,gmetad,web三个重要目录。其中web目录下是一些php文件,用于提供给web容器来展示。我们安装的ganglia是3.0.7版本的。
(cd rrdtool-1.2.27; ./configure --prefix=/usr/local/rrdtool CFLAGS="-I/usr/local/freetype-2.1.10/include -I/usr/local/libart_lgpl-2.3.17/include" CPPFLAGS="-I/usr/local/freetype-2.1.10/include -I/usr/local/libart_lgpl-2.3.17/include" LDFLAGS="-L/usr/local/freetype-2.1.10/lib -L/usr/local/libart_lgpl-2.3.17/lib -L/usr/lib64"; make;make install) (cd ganglia-3.0.7; ./configure --prefix=/usr/local/ganglia-3.0.7 --with-libapr="/usr/local/apr-1.4.6" --with-libconfuse="/usr/local/confuse-2.7" CFLAGS="-I/usr/local/rrdtool/include" CPPFLAGS="-I/usr/local/rrdtool/include" LDFLAGS="-L/usr/local/rrdtool/lib" --with-gmetad --enable-gexec --with-librrd=/usr/local/rrdtool/ ; make;make install)
运行上述命令没有出错的话,那么ganglia基本上安装成功。接下来需要配置相关参数并使其正常运行。
2.3 配置ganglia服务器参数
1. 进入ganglia-3.0.7目录,把gmond,gmetad拷到/usr/local/sbin目录下。如果在安装ganglia时的--prefix=/usr/local,就可以略过这一步。
sudo cp gmond/gmond /usr/local/sbin sudo cp gmetad/gmetad /usr/local/sbin
2. 把它加到linux自动启动项中。
sudo cp gmetad/gmetad.init /etc/rc.d/init.d/gmetad #startup script sudo cp gmond/gmond.init /etc/rc.d/init.d/gmond chkconfig --add gmetad chkconfig --add gmond
3. 拷贝gmetad.conf和 生成gmond.conf文件
sudo cp gmetad/gmetad.conf /etc gmond -t | tee /etc/gmond.conf
4. 创建ganglia的配置目录
sudo mkdir /etc/ganglia chown -R nobody:nobody /etc/ganglia
5. 创建rrds存放总目录 (这下面存放的就是rrd文件)
sudo mkdir -p /var/lib/ganglia/rrds sudo chown nobody:nobody /var/lib/ganglia/rrds
6. 修改gmond.conf文件
cluster { name = "hadoopCluster" owner = "unspecified" latlong = "unspecified" url = "unspecified" }
7.修改gmeta.conf文件
data_source "hadoopCluster" localhost 192.168.0.1
2.4. 启动ganglia各节点
完成以上配置,ganglia基本上可以运行了。需要测试ganglia的可用性,可以执行命令:
gmetad -d5
gmond -d5
其中-d5参数是debug模式,让其在前台运行。
2.5. 配置ganglia web服务器
1. 进入ganglia-3.0.7目录,把web目录下的文件拷贝到/var/www/html/ganglia目录下。apache的web工程所放位置都应该放到/var/www/html/目录下。
sudo mkdir -p /var/www/html/ganglia/ sudo cp -a web/* /var/www/html/ganglia/
2. 进入/var/www/html/ganglia/目录,修改conf.php文件。
# Leave this alone if rrdtool is installed in $gmetad_root, # otherwise, change it if it is installed elsewhere (like /usr/bin) #define("RRDTOOL", "/usr/bin/rrdtool"); #注释这一行, define("RRDTOOL", "/usr/local/rrdtool/bin/rrdtool"); //指定rrdtool命令路径
2.6 开启ganglia web服务
开启ganglia web服务,即是启动apache或httpd服务。在启动服务之前,需要在httpd.conf文件中添加 php5_module.so模块,然后再启动。命令如下:
apachectl -k start