Ganglia源码安装

太久没写博客了,突然心血来潮,记录下自己折腾了一个上午的ganglia安装流程。

一、套路
 Ganglia是伯克利开发的一个集群监控软件。可以监视和显示集群中的节点的各种状态信息,比如如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,同时可以将历史数据以曲线方式通过php页面呈现。
 
二、功能简介
这里写图片描述
  Gmetad 这个程序负责周期性的到各个datasource收集各个cluster的数据,并更新到rrd数据库中。 可以把它理解为服务端。
  Gmond 收集本机的监控数据,发送到其他机器上,收集其他机器的监控数据,gmond之间通过udp通信,传递文件格式为xdl。收集的数据供Gmetad读取,默认监听端口8649 ,监听到gmetad请求后发送xml格式的文件。可以把它理解为客户端。

三、部署
环境:Linux COREVM3 3.10.0-229.el7.x86_64,标准化目录结构
/apps/{conf,sh,logs,run,svr,data}
 首先把一堆依赖关系安装上:yum install -y apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpm-build glib2-devel dbus-devel freetype-devel fontconfig-devel gcc-c++ expat-devel python-devel libXrender-devel
 接下来把需要的软件下载:软件版本可以相应选择
apr: http://mirrors.shuosc.org/apache//apr/apr-1.6.2.tar.gz
apr-tuils:http://mirrors.shuosc.org/apache//apr/apr-util-1.6.0.tar.gz
expat:https://sourceforge.net/projects/expat/files/expat/2.1.0/expat-2.1.0.tar.gz/download
libconfuse:http://download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
rrdtool:https://oss.oetiker.ch/rrdtool/pub/rrdtool-1.5.0.tar.gz
pcre:https://sourceforge.net/projects/pcre/files/pcre/8.32/pcre-8.32.tar.gz/download
php:http://php.net/get/php-5.5.38.tar.gz.asc/from/a/mirror
httpd:http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.2.34.tar.bz2
ganglia:https://sourceforge.net/projects/ganglia/files/latest/download?source=files (3.7.2版本)
ganglia-web:https://sourceforge.net/projects/ganglia/files/ganglia-web/3.7.2/ganglia-web-3.7.2.tar.gz/download

安装:

tar -xz -f expat-2.1.0.tar.gz && cd expat-2.1.0
./configure --prefix=/apps/svr/expat-2.1.0
make && make install

tar -xz -f confuse-2.7.tar.gz && cd confuse-2.7
./configure --prefix=/apps/svr/confuse-2.7 CFLAGS=-fPIC --disable-nls
make && make install
#如果系统是64位的还需要(编译ganglia时候需要用到该库):cp -a /apps/svr/confuse-2.7/lib /apps/svr/confuse-2.7/lib64

tar -xz -f apr-1.6.2.tar.gz && cd apr-1.6.2
./configure --prefix=/apps/svr/apr-1.6.2
make && make install
#因为ganglia编译时候会去/apps/svr/apr-1.6.2/include下寻找库文件,所以需要做:cp -a /apps/svr/apr-1.6.2/include/apr-1/* /apps/svr/apr-1.6.2/include/ ,如果系统是64位的还需要:cp -a /apps/svr/apr-1.6.2/lib /apps/svr/apr-1.6.2/lib64

tar -xz -f pcre-8.32.tar.gz && cd pcre-8.32
./configure --prefix=/apps/svr/pcre-8.32
make && make install

tar -xz -f rrdtool-1.5.0.tar.gz && cd rrdtool-1.5.0
./configure --prefix=/apps/svr/rrdtool-1.5.0 --disable-tcl
make && make install 

tar -xz -f httpd-2.2.34.tar.gz && cd httpd-2.2.34
./configure --prefix=/apps/svr/httpd-2.2.34 --enable-so --enable-mods-shared=most
make && make install
#复制源码包(httpd-2.2.34/build/httpd.init)启动脚本去/apps/sh,修改:httpd=${HTTPD-/apps/svr/httpd-2.2.34/bin/httpd}
pidfile=${PIDFILE-/apps/run/httpd/httpd.pid}
CONFFILE=/apps/svr/httpd-2.2.34/conf/httpd.conf
修改/apps/svr/httpd-2.2.34/conf/httpd.conf
User apps
Group apps
#添加index.php
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
#在最后添加下面三行:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PidFile "/apps/run/httpd/httpd.pid"
#做标准化软链接
mv /apps/svr/httpd-2.2.34/log /apps/logs/httpd
ln -s /apps/logs/httpd /apps/svr/httpd-2.2.34/logs
ln -s /apps/svr/httpd-2.2.34/conf /apps/conf/httpd

tar -xz -f php-5.5.38.tar.gz && cd php-5.5.38
./configure --prefix=/apps/svr/php-5.5.38 --with-apxs2=/apps/svr/httpd-2.2.34/bin/apxs
make && make install

tar -xz -f ganglia-3.7.2.tar.gz && cd ganglia-3.7.2
./configure --prefix=/apps/svr/ganglia-3.7.2 --with-librrd=/apps/svr/rrdtool-1.5.0 --with-libapr=/apps/svr/apr-1.6.2 --with-libexpat=/apps/svr/expat-2.1.0 --with-libconfuse=/apps/svr/confuse-2.7 --with-libpcre=/apps/svr/pcre-8.23 --enable-gexec --enable-status --with-gmetad --with-static-modles --sysconfdir=/apps/conf/ganglia
make && make install 
#从源码包复制gmetad服务启动脚本去/apps/sh:cp gmetad/gmetad.init /apps/sh
修改gmetad.init
vim /apps/sh/gmetad.init
将GMETAD=/usr/sbin/gmetad修改为GMETAD=/apps/svr/ganglia-3.7.2/sbin/gmetad
将daemon $GMETAD 修改为daemon $GMETAD -c /apps/conf/ganglia/gmetad.conf
修改/apps/conf/gmetad.conf 的rrd_rootdir "/apps/data/ganglia/rrds" 让收集的监控数据放在/apps/data目录下,
setuid_username "apps" 启动用户

#如果需要在本机启动gmond,从源码包复制gmond服务启动脚本去/apps/sh:cp gmond/gmond.init /apps/sh ,在源码包执行./gmond -t > /apps/conf/ganglia/gmond.conf
修改/apps/sh/gmond.sh:
将GMOND=/usr/sbin/gmond修改为GMOND=/apps/svr/ganglia-3.7.2/sbin/gmond 
将daemon $GMOND 修改为daemon $GMOND -c /apps/conf/ganglia/gmond.conf  

安装ganglia-web: tar -xz -f ganglia-web-3.7.2.tar.gz && cd ganglia-web-3.7.2
修改:Makefile:
GDESTDIR = /apps/svr/httpd-2.2.34/htdocs/ganglia
APACHE_USER = apps
GCONFDIR = /apps/conf/ganglia-web
GWEB_STATEDIR = /apps/lib/ganglia-web
GMETAD_ROOTDIR = /apps/lib/ganglia

make install
#显示:(rsync --exclude "rpmbuild" --exclude "*.gz" --exclude "Makefile" --exclude "*debian*" --exclude "ganglia-web-3.5.2" --exclude ".git*" --exclude "*.in" --exclude "*~" --exclude "#*#" --exclude "ganglia-web.spec" -a . ganglia-web-3.5.2
mkdir -p //apps/lib/ganglia/dwoo/compiled && \
    mkdir -p //apps/lib/ganglia/dwoo/cache && \
    mkdir -p //apps/lib/ganglia && \
    rsync -a ganglia-web-3.5.2/conf/ //apps/lib/ganglia/conf && \
    rsync --exclude "conf" -a ganglia-web-3.5.2/* //apps/svr/httpd-2.2.34/htdocs/ganglia && \
    chown -R apps:apps //apps/lib/ganglia/dwoo //apps/lib/ganglia/conf)
#设置ganglia-web的php读取gmetad数据,cp /apps/svr/httpd-2.2.34/htdocs/ganglia/conf_default.php /apps/svr/httpd-2.2.34/htdocs/ganglia/conf.php,修改其中几项内容:
$conf['gweb_confdir'] = "/apps/lib/ganglia-web"
$conf['gmetad_root'] = "/apps/data/ganglia";
$conf['rrds'] = "${conf['gmetad_root']}/rrds
$conf['rrdtool'] = "/apps/svr/rrdtool-1.5.0/bin/rrdtool"

启动前:chown apps:apps /apps -R && cd /apps/sh
       ./gmond.init start
       ./gmetad.init start
       ./httpd.init start

页面访问:http://ip:port/ganglia/
这里写图片描述

四、总结
  写博客真心累,下篇再写对gmetad,gmond具体配置吧。主要还是,gmond–自定义metrics,单播,多播,高级扩展
向ganglia加入自定义metric有两种方法,一种是通过命令行的方式运行gmetric,另一种是通过ganglia提供的面向c和python的扩展模块,加入自定义的模块支持。

直接读取监控数据:除 了使用ganglia内置的网页页面外,也可以自行得到xml文件去进行自己的分析。通常需要自己编写一个脚本来完成该任务。通过直接telnet gmond或者gmetad的tcp服务监听端口,可以直接得到xml文件,然后我们就可以对该xml文件进行需要的处理了。在单播模式下,应该 telnet那个gmond的中央节点,登录该节点才能得到集群内所有节点的信息,否则只能得到单独节点的信息。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值