从源码安装gmond,gmetad,gweb

现在有这样的一个应用场景:需要在服务器上搭建一个Ganglia监控框架,但是没有root权限,因此只能采用“从源码编译安装”的方式。接下来分别介绍如何从源码安装Ganglia中的gmond,gmetad和gweb。
一、从源码安装gmond
1.1、软件依赖
需要libconfuse, pkgconfig, PCRE, APR,expat软件依赖
1.2、具体软件版本
confuse-2.7,pkg-config_0.26,pcre-8.37,apr-1.5.2,expat-2.1.0,ganglia-3.7.2
1.3、安装脚本
#!/bin/bash
INSTALLDIR="/home/dsl/bigdisk/testdisk/usr/local"
prefix=$INSTALLDIR
exec_prefix=$INSTALLDIR
oldincludedir=$INSTALLDIR/oldinclude
dependency_path=$INSTALLDIR/lib/pkgconfig

#install confuse
cd confuse-2.7
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir
make
make install
echo "Finish Installing confuse"
cd ..

#install pcre
cd pcre-8.37 
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir
make
make install
echo "Finish Installing pcre"
cd ..

#install apr
cd apr-1.5.2
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir
make 
make install
echo "Finish Installing apr"
cd ..

#install expat
cd expat-2.1.0
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir
make
make install
echo "Finish Installing expat"
cd ..

#install gmond
cd ganglia-3.7.2
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path CFLAGS="-I$INSTALLDIR/include"
make
make install
cd ..
1.4、注意事项
1、在本实践中,pkgconfig已经预先采用APT-GET机制得到安装
2、在编译ganglia-3.7.2项目时,要如上设置CFLAGS环境变量,否则会出现图1所示错误。
                                                                               图1
从源码安装gmond,gmetad,gweb_第1张图片
3、一定要最先安装pkgconfig,安装其他软件的时候依赖于它

二、从源码安装gmetad
需要libconfuse, pkgconfig, PCRE, APR,expat,rrdtool软件依赖。在安装gmond的时候libconfuse, pkgconfig, PCRE, APR,expat这些软件依赖都已经安装好,现在只需要安装rrdtool这个软件依赖。
接下来介绍如何安装rrdtool。
2.1、软件依赖
expat,python,libxml2,pixman,libpng,harfbuzz,zlib,libffi,glib,freetype,fontconfig,cairo,pango
2.2、具体软件版本
expat-2.1.0,python-3.5.0,libxml2-2.9.0,pixman-0.32.6,libpng-1.6.18,harfbuzz-1.0.0,zlib-1.2.8,libffi-3.2.1,glib-2.34.2,freetype-2.6,fontconfig-2.11.94,cairo-1.14.2,pango-1.30.1,rrdtool-1.4.5
2.3、安装脚本
#!/bin/bash
INSTALLDIR="/home/dsl/bigdisk/testdisk/usr/local"
prefix=$INSTALLDIR
exec_prefix=$INSTALLDIR
oldincludedir=$INSTALLDIR/oldinclude
dependency_path=$INSTALLDIR/lib/pkgconfig
PATH=$PATH:$INSTALLDIR/bin

#install expat
cd expat-2.1.0
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir
make
make install
echo "Finish Installing expat"
cd ..

#install python
cd Python-3.5.0
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir
make 
make install
echo "Finish Installing python"
cd ..

#install libxml2
cd libxml2-2.9.0
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir
make 
make install
echo "Finish Installing libxml2"
cd ..

#install pixman
cd pixman-0.32.6
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir
make 
make install
echo "Finish Installing pixman"
cd ..

#install libpng
cd libpng-1.6.18
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir
make 
make install
echo "Finish Installing libpng"
cd ..

#install harfbuzz
cd harfbuzz-1.0.0
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path
make 
make install
echo "Finish Installing harfbuzz"
cd ..

#install zlib
cd zlib-1.2.8
./configure --prefix=$prefix --eprefix=$exec_prefix
make 
make install
echo "Finish Installing zlib"
cd ..

#install libffi
cd libffi-3.2.1
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path
make 
make install
echo "Finish Installing libffi"
cd ..

#install glib
cd glib-2.34.2
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path
make 
make install
echo "Finish Installing glib"
cd ..

#install freetype
cd freetype-2.6
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path --without-harfbuzz
make 
make install
echo "Finish Installing freetype"
cd ..

#install fontconfig
cd fontconfig-2.11.94
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path
make 
make install
echo "Finish Installing fontconfig"
cd ..

#install cairo
cd cairo-1.14.2
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path
make 
make install
echo "Finish Installing cairo"
cd ..

#install pango
cd pango-1.30.1
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path
make 
make install
echo "Finish Installing pango"
cd ..

#install rrdtool
cd rrdtool-1.4.5
./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path
make 
make install
echo "Finish Installing rrdtool"
cd ..
2.4、注意事项
1、freetype依赖zlib,libpng,harfbuzz,需要指定PKG_CONFIG_PATH变量

2、freetype依赖harfbuzz,而harfbuzz又依赖freetype,因而在编译安装freetype时,需要指定"--without-harfbuzz"(当前安装的harfbuzz是在freetype之前安装的,是不完整的),否则会出现如图2所示错误。

                                                                                            图2

从源码安装gmond,gmetad,gweb_第2张图片



最后安装gmetad的脚本如下:

#!/bin/bash
INSTALLDIR="/home/dsl/bigdisk/testdisk/usr/local"
prefix=$INSTALLDIR
exec_prefix=$INSTALLDIR
oldincludedir=$INSTALLDIR/oldinclude
dependency_path=$INSTALLDIR/lib/pkgconfig

cd ganglia-3.7.2
 ./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path CFLAGS="-I$INSTALLDIR/include" LDFLAGS="-L$INSTALLDIR/lib" --with-gmetad
make
make install
cd ..

编译安装ganglia的时候,加上"--with-gmetad"参数,表示编译安装gmond和gmetad,否则表示只编译安装gmond。

三、从源码安装gweb
先搭建"apache httpd + php + php-json"的环境,假定"php + php-json"已经由APT-GET机制预先安装好,参照 《从源码安装apache httpd,并加载对php的支持》,可以从源码编译安装apache httpd,并且配置apache httpd支持php。
接着配置ganglia-web下的Makefile文件中的变量的值,然后在ganglia-web中执行"make install"命令,将ganglia-web的内容复制到apache的Web项目目录下,注意,还要修改被复制到Web项目目录下的ganglia-web内容中conf_default.php文件的$conf['rrdtool']变量值,使得该值为以上安装rrdtool过程中最后安装得到的rrdtool的路径,至此就完成了gweb的搭建。以上可以参照" 《Monitoring with Ganglia》Chapter 2 Installing and Configuring Ganglia",

备注:在以上实践中,以root用户运行安装得到的软件,如果想以普通用户身份运行,参照 《以普通用户运行Ganglia监控框架》。


参考文献:

[1]http://blog.csdn.net/dslztx/article/details/49097977

[2]https://bugs.freedesktop.org/show_bug.cgi?id=75652

[3]http://download.csdn.net/detail/dslztx/9178741

[4]http://download.csdn.net/detail/dslztx/9178745

[5]http://download.csdn.net/detail/dslztx/9178749

[6]http://download.csdn.net/detail/dslztx/9178753


你可能感兴趣的:(从源码安装gmond,gmetad,gweb)