Ganglia 开源集群监视系统,主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过可视化图形界面,很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能。
本文ganglia工作原理不做介绍,只是从部署的角度出发,安装的过程还是比较繁琐,依赖库太多。
192.168.11.213 CentOs 6.5 x86_64 GNU/Linux --服务主节点
192.168.11.214 CentOs 6.5 x86_64 GNU/Linux --监控节点
192.168.11.215 CentOs 6.5 x86_64 GNU/Linux --监控节点
ganglia安装路径 /usr/local/ganglia
PHP安装路径 /usr/local/php
apache安装路径 /usr/local/apache2
ganglia-web安装路径 /home/ganglia/ganglia-web-3.5.10
RRDTOOL 数据库路径 /export/home/ganglia/rrds
在unbuntu或者CentOS可以连接互联网的情况下安装非常方便直接用apt或者yum工具直接安装即可,一些复杂的依赖包都自动安装好,非常方便,下面我主要介绍下源码安装。
查看源码包ganglia-3.6.0\INSTALL文件,可以清楚知道Ganglia依赖的包。
ganglia安装依赖包
* APR (http://apr.apache.org/)
* libConfuse (http://www.nongnu.org/confuse/)
* expat (http://expat.sourceforge.net/)
* pkg-config (http://www.freedesktop.org/wiki/Software/pkg-config)
* python (http://www.python.org/)
* PCRE (http://www.pcre.org/)
* RRDtool (http://oss.oetiker.ch/rrdtool/)
下面按照官网的方法一步一步的安装
重点介绍下RRDTool的源码安装,这个相对其他的最为复杂。
官方给的文档很有意思,叫OPTIMISTIC BUILD,叫最乐观的状况,下载源码包直接编译OK,一般不大可能。
我们也可以检查一下。
BUILD_DIR=/tmp/ganglia-build
INSTALL_DIR=/usr/local/ganglia
注意:因为我是在虚拟机上执行的所有的权限都有,一般/tmp和/opt目录没有权限需要更换目录。
mkdir -p $BUILD_DIR
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.8.tar.gz
gunzip -c rrdtool-1.4.8.tar.gz | tar xf -
cd rrdtool-1.4.8
./configure --prefix=$INSTALL_DIR && make && make install
不出意外会报缺少一系列依赖库没有,several missing libraries。
Rrdtool安装依赖包
pkgconfig
zlib
libpng
f reetype
LibXML2
fontconfig
Pixman
Cairo
Glib
Pango
也许你觉得很奇怪glibc系统中已经有了,为什么还要安装?因为太老了,在红帽linux系统中可以直接用rpm -qi glibc 看下glibc的版本,我看了下我们环境glibc的版本都是2.12版本的。当然glibc 2.12 的可以直接用,但是为了方便迁移部署还是统一安装一下。
注意:机型不一样,编译方式也是不一样,不一一举例,先以linux系统为例,其他系统如AIX Solaris HPUX 还是有区别的。
Linux
设置环境变量,直接指定动态库搜索路径
export LDFLAGS="-Wl,--rpath -Wl,${INSTALL_DIR}/lib"
export MAKE=make
wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz
gunzip -c pkg-config-0.23.tar.gz | tar xf -
cd pkg-config-0.23
./configure --prefix=$INSTALL_DIR
$MAKE
sudo $MAKE install
export PKG_CONFIG=$INSTALL_DIR/bin/pkg-config
(最好添加到环境变量中,以免打开另外的窗口就失效了。)
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/zlib-1.2.3.tar.gz
gunzip -c zlib-1.2.8.tar.gz | tar xf -
cd zlib-1.2.8
./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" --shared
$MAKE
sudo $MAKE install
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.18.tar.gz
gunzip -c libpng-1.2.18.tar.gz | tar xf -
cd libpng-1.2.18
env CFLAGS="-O3 -fPIC" ./configure --prefix=$INSTALL_DIR
$MAKE
sudo $MAKE install
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/freetype-2.3.5.tar.gz
gunzip -c freetype-2.3.5.tar.gz | tar xf -
cd freetype-2.3.5
./configure --prefix=$INSTALL_DIR
$MAKE
sudo $MAKE install
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/libxml2-2.6.32.tar.gz
gunzip -c libxml2-2.6.32.tar.gz | tar xf -
cd libxml2-2.6.32
./configure --prefix=$INSTALL_DIR
$MAKE
sudo $MAKE install
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/fontconfig-2.4.2.tar.gz
tar -xzvf fontconfig-2.4.2.tar.gz
cd fontconfig-2.4.2
./configure
--prefix=$INSTALL_DIR --with-freetype-config=$INSTALL_DIR/bin/freetype-config
$MAKE
sudo $MAKE install
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/pixman-0.10.0.tar.gz
gunzip -c pixman-0.10.0.tar.gz | tar xf -
cd pixman-0.10.0
./configure --prefix=$INSTALL_DIR
$MAKE
sudo $MAKE install
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/cairo-1.6.4.tar.gz
gunzip -c cairo-1.6.4.tar.gz | tar xf -
cd cairo-1.6.4
./configure --prefix=$INSTALL_DIR \
--enable-xlib=no \
--enable-xlib-render=no \
--enable-win32=no \
CFLAGS="-O3 -fPIC"
$MAKE
sudo $MAKE install
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/glib-2.15.4.tar.gz
gunzip -c glib-2.15.4.tar.gz | tar xf -
cd glib-2.15.4
./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
$MAKE
sudo $MAKE install
cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/pango-1.21.1.tar.bz2
bunzip2 -c pango-1.21.1.tar.bz2 | tar xf -
cd pango-1.21.1
./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" --without-x
$MAKE
sudo $MAKE install
cd $BUILD_DIR/rrdtool-1.4.8
./configure --prefix=$INSTALL_DIR --disable-tcl --disable-python
$MAKE clean
$MAKE
sudo $MAKE install
上面每一步都执行成功,这次执行肯定是成功的,注意安装先$MAKE clean还是必要的,上次安装失败,可能还存在一下垃圾数据。
$INSTALL_DIR/share/rrdtool/examples/ 共享目录下面的例子可以验证是否安装成功
安装RRDtool只是第一步,下面安装一下Ganglia其他依赖包,相对就比较简单一点
cd $BUILD_DIR
tar -xzvf apr-1.5.0.tar.gz
cd apr-1.5.0
./configure --prefix=$INSTALL_DIR
$MAKE
sudo $MAKE install
cd $BUILD_DIR
tar -zxf confuse-2.7.tar.gz
cd confuse-2.7
./configure --prefix=$INSTALL_DIR CFLAGS=-fPIC --disable-nls
$MAKE
sudo $MAKE install
cd $BUILD_DIR
tar -xzvf expat-2.0.1.tar.gz
cd expat-2.0.1
./configure --prefix=$INSTALL_DIR
$MAKE
sudo $MAKE install
cd $BUILD_DIR
tar -jxf Python-2.7.3.tar.bz2
./configure --prefix=$INSTALL_DIR --enable-shared
$MAKE
sudo $MAKE install
cd $BUILD_DIR
tar -xzvf Python-2.7.6.tgz
./configure --prefix=$INSTALL_DIR
$MAKE
sudo $MAKE install
注:Building 时候的一些参数配置说明,请参考源码包里面configure配置文档,有详细的英文说明,此处不做介绍。
cd $BUILD_DIR
tar -zxf ganglia-3.6.0.tar.gz
cd ganglia-3.6.0
./configure --prefix=$INSTALL_DIR --with-gmetad --enable-gexec --with-python --with-librrd=/home1/etl5/ganglia-3.6.0
tar -zxf ganglia-web-3.5.10.tar.gz -C /home/etl/ganglia/
cp conf_default.php conf.php
vi conf.php 调整为如下内容
$conf['gweb_confdir'] = " /home/etl/ganglia//ganglia-web-3.5.10";
$conf['gmetad_root'] = "/export/home/ganglia";
配置临时目录
cd /home/etl/ganglia//ganglia-web-3.5.10/dwoo
mkdir cache
chmod 777 cache
mkdir compiled
chmod 777 compiled
tar -zxf httpd-2.2.23.tar.gz
cd httpd-2.2.23
--./configure --prefix=$INSTALL_DIR/apache2
make && make install
./configure --prefix=$INSTALL_DIR --with-apr=/home1/etl5/ganglia-3.6.0/bin/apr-1-config
tar -zxf php-5.4.10.tar.gz
cd php-5.4.10
./configure --prefix=$INSTALL_DIR/php --with-apxs2=$INSTALL_DIR/apache2/bin/apxs
make && make install
./configure --prefix=/home1/etl5/web-ganglia/php --with-apxs2=/home1/etl5/web-ganglia/apache2/bin/apxs --with-libxml-dir=/home1/etl5/ganglia-3.6.0
vi /usr/local/apache2/conf/httpd.conf
启动httpd服务
$INSTALL_DIR/apache2/bin/apachectl restart
vi /etc/init.d/gmetad 修改如下内容 --添加系统服务
GMETAD=$INSTALL_DIR/ganglia/sbin/gmetad
vi /usr/local/ganglia/etc/gmetad.conf -- 修改如下内容
data_source "my-cluster" 10 node-1 node-2 node-3
xml_port 8651
interactive_port 8652
rrd_rootdir "$INSTALL_DIR/ganglia/rrds"
case_sensitive_hostnames 0
修改rrds数据目录所有者
chown -R nobody:nobody /export/home/ganglia/rrds
启动gmetad服务,并设为开机自动运行
service gmetad restart
chkconfig --add gmetad
cd ganglia-3.6.0
cp ./gmond/gmond.init /etc/init.d/gmond
--添加系统服务
vi /usr/local/ganglia/etc/gmond.conf -- 修改如下内容
cluster {
name = "my-cluster"
启动gmond服务,并设为开机自动运行
service gmond start