从源码安装gmond,gmetad,gweb

来源:互联网 发布:文本相似度算法 java 编辑:程序博客网 时间:2024/06/05 06:10
现在有这样的一个应用场景:需要在服务器上搭建一个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/bashINSTALLDIR="/home/dsl/bigdisk/testdisk/usr/local"prefix=$INSTALLDIRexec_prefix=$INSTALLDIRoldincludedir=$INSTALLDIR/oldincludedependency_path=$INSTALLDIR/lib/pkgconfig#install confusecd confuse-2.7./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmakemake installecho "Finish Installing confuse"cd ..#install pcrecd pcre-8.37 ./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmakemake installecho "Finish Installing pcre"cd ..#install aprcd apr-1.5.2./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmake make installecho "Finish Installing apr"cd ..#install expatcd expat-2.1.0./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmakemake installecho "Finish Installing expat"cd ..#install gmondcd ganglia-3.7.2./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path CFLAGS="-I$INSTALLDIR/include"makemake installcd ..
1.4、注意事项
1、在本实践中,pkgconfig已经预先采用APT-GET机制得到安装
2、在编译ganglia-3.7.2项目时,要如上设置CFLAGS环境变量,否则会出现图1所示错误。
                                                                               图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/bashINSTALLDIR="/home/dsl/bigdisk/testdisk/usr/local"prefix=$INSTALLDIRexec_prefix=$INSTALLDIRoldincludedir=$INSTALLDIR/oldincludedependency_path=$INSTALLDIR/lib/pkgconfigPATH=$PATH:$INSTALLDIR/bin#install expatcd expat-2.1.0./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmakemake installecho "Finish Installing expat"cd ..#install pythoncd Python-3.5.0./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmake make installecho "Finish Installing python"cd ..#install libxml2cd libxml2-2.9.0./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmake make installecho "Finish Installing libxml2"cd ..#install pixmancd pixman-0.32.6./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmake make installecho "Finish Installing pixman"cd ..#install libpngcd libpng-1.6.18./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmake make installecho "Finish Installing libpng"cd ..#install harfbuzzcd harfbuzz-1.0.0./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_pathmake make installecho "Finish Installing harfbuzz"cd ..#install zlibcd zlib-1.2.8./configure --prefix=$prefix --eprefix=$exec_prefixmake make installecho "Finish Installing zlib"cd ..#install libfficd libffi-3.2.1./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_pathmake make installecho "Finish Installing libffi"cd ..#install glibcd glib-2.34.2./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_pathmake make installecho "Finish Installing glib"cd ..#install freetypecd freetype-2.6./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_path --without-harfbuzzmake make installecho "Finish Installing freetype"cd ..#install fontconfigcd fontconfig-2.11.94./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_pathmake make installecho "Finish Installing fontconfig"cd ..#install cairocd cairo-1.14.2./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_pathmake make installecho "Finish Installing cairo"cd ..#install pangocd pango-1.30.1./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_pathmake make installecho "Finish Installing pango"cd ..#install rrdtoolcd rrdtool-1.4.5./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir PKG_CONFIG_PATH=$dependency_pathmake make installecho "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




最后安装gmetad的脚本如下:

#!/bin/bashINSTALLDIR="/home/dsl/bigdisk/testdisk/usr/local"prefix=$INSTALLDIRexec_prefix=$INSTALLDIRoldincludedir=$INSTALLDIR/oldincludedependency_path=$INSTALLDIR/lib/pkgconfigcd 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-gmetadmakemake installcd ..

编译安装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


0 0