Ganglia源码安装
最近学习Ganglia的源代码,打算编写一段调试代码,以kill -s 10 pid(gmond进程号),gmond接到信号后,打印hosts全局哈希表中的主机和metric信息,需要建立ganglia的编译开发环境
1. 安装rrdtool
1.1. 安装依赖包
可以将相关的依赖包下载到/tmp/soft_code/下,或者使用yum下载
Ø 安装zlib开发包
zlib-devel-1.2.3-3.x86_64.rpm
Ø 安装freetype开发包:
freetype-devel-2.2.1-21.el5_3.x86_64.rpm
Ø 安装libart开发包:
libart_lgpl-devel-2.3.17-4.x86_64.rpm
Ø 安装libpng开发包:
libpng-devel-1.2.10-7.1.el5_3.2.x86_64.rpm
1.2. 安装rrdtool
Ø 准备rrdtool源码包
rrdtool-1.4.5.tar.gz
tar -zxvf rrdtool-1.4.5.tar.gz
cd rrdtool-1.4.5
Ø 编译安装
./configure –prefix=/usr/local/rrdtool
make
make install
Ø 验证是否安装成功
运行命令/usr/local/rrdtool/bin/rrdtool
如果出现以下文字说明安装成功:
RRDtool 1.4.5 Copyright 1997-2010 by Tobias Oetiker<tobi@oetiker.ch>
Compiled Jul 26 2011 18:27:11
...
Ø 可能出现的问题
pkg-config找不到lib包,不用纠结于pkg-config,一定是某些lib没装好。
在configure rrdtool时会提升哪些包未装好,记得安装这些lib的源码包
2. 安装ganglia
2.1. 安装依赖软件
ganglia依赖以下软件:、
apr-1.2.8.tar.gz apr-util-1.2.8.tar.gz confuse-2.6.tar.gz expat-2.0.1.tar.gz
Ø 安装expat-2.0.1.tar
tar zxvf expat-2.0.1.tar.gz
./configure --prefix=/usr/local/expat
make
make install
mkdir /usr/local/expat/lib64
cp -a /usr/local/expat/lib/*/usr/local/expat/lib64/
32位操作系统不用做上面两步
Ø 安装apr-1.2.8.tar.gz
tar -zxvf apr-1.2.8.tar.gz
./configure --prefix=/usr/local/apr
make
make install
Ø 安装apr-util-1.2.8.tar.gz
tar -zxvf apr-util-1.2.8.tar.gz
./configure –with-apr=/usr/local/apr–with-expat=/usr/local/expat
make
make install
cp /usr/local/apr/include/apr-1/*/usr/local/apr/include/
因为ganglia安装时默认会去/usr/local/apr/include下寻找apr的库文件
mkdir /usr/local/apr/lib64
cp -a /usr/local/apr/lib/*/usr/local/apr/lib64/
32位操作系统不用做上面两步
Ø 安装confuse-2.6.tar.gz
tar zxvf confuse-2.6.tar.gz
./configure CFLAGS=-fPIC --disable-nls--prefix=/usr/local/confuse
make
make install
mkdir /usr/local/confuse/lib64
cp -a /usr/local/confuse/lib/*/usr/local/confuse/lib64/
32位操作系统不用做上面两步
2.2. 安装ganglia管理端(gmetad)
(1)解压
tar -zxvf ganglia-3.1.7.tar.gz
(2)配置
./configure --prefix=/usr/local/ganglia--with-librrd=/usr/local/rrdtool --with-libapr=/usr/local/apr--with-libexpat=/usr/local/expat --with-libconfuse=/usr/local/confuse--with-gmetad --enable-gexec --enable-status --sysconfdir=/etc/ganglia
如果出现: libpcre not found, specify --with-libpcre=no to build without PCRE support 可以: wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.02.tar.gz tar -xzvf pcre-8.02.tar.gz cd pcre-8.02 ./configure make make install |
(3)编译,安装
make
make install
(4)为rrdtool创建数据存放目录
mkdir -p /var/lib/ganglia/rrds
chown -R nobody:nobody /var/lib/ganglia/rrds
(5)将gmetad添加到系统服务
cp {ganglia解压目录}gmetad/gmetad.init/etc/init.d/gmetad
(6)将gmetad命令加入到/usr/sbin/目录
cp /usr/local/ganglia/sbin/gmetad/usr/sbin/
(7) gmetad给 chkconfig托管
chkconfig --add gmetad
(8)开启gmetad服务
service gmetad start
StartingGANGLIA gmetad: [ OK ]
见到[OK]字样说明启动成功。
2.3. 安装ganglia节点(gmond)
(1)解压同gmetad
(2)配置:比gmetad时少“–with-gmetad”参数
(3) ./configure –prefix=/usr/local/ganglia –with-librrd=/usr/local/rrdtool–with-libapr=/usr/local/apr –with-libexpat=/usr/local/expat–with-libconfuse=/usr/local/confuse –enable-gexec –enable-status--sysconfdir=/etc/ganglia
make
make install
(4)将gmond加入系统服务
cp {ganglia解压目录}gmond/gmond.init/etc/init.d/gmond
(5)将gmond命令加入到/usr/sbin/目录
cp /usr/local/ganglia/sbin/gmond /usr/sbin/
(9)生成gmond的默认配置文件
gmond--default_config>/etc/ganglia/gmond.conf
(10)将gmond给 chkconfig托管
chkconfig --add gmond
(11)修改gmond配置文件/etc/ganglia/gmond.conf
cluster {
name = "test cluster"
owner = "nobody"
latlong = "unspecified"
url = "unspecified"
}
(12)开启gmond服务
service gmond start
StartingGANGLIA gmetad: [ OK ]
(6)见到[OK]字样说明启动成功。
2.4. 安装ganglia web页面
2.4.1. 安装php
(1)安装php-common
rpm -ivh/root/CentOS/php-common-5.1.6-27.el5.x86_64.rpm
(2)安装php-cli
rpm -ivh /root/CentOS/php-cli-5.1.6-27.el5.x86_64.rpm
(3)安装php
rpm -ivh/root/CentOS/php-5.1.6-27.el5.x86_64.rpm
(4)安装php-gd
rpm -ivh/root/CentOS/php-gd-5.1.6-27.el5.x86_64.rpm
2.4.2. 构建web服务器
(1)创建ganglia的web目录
mkdir /var/www/html/ganglia
(2)拷贝ganglia的web目录下文件到httpd服务器
cp -a {ganglia解压目录}/web/*/var/www/html/ganglia/
(3)禁用 SELinux
setenforce 0 (如果不禁用会报错:Forbidden,You don’t havepermission to access /ganglia/ on this server)
(4)修改conf.php为ganglia指定rrdtool命令路径
define("RRDTOOL","/usr/local/rrdtool/bin/rrdtool");
(5)重启httpd服务器
service httpd restart
(6)查看web页面
http://web服务器ip/ganglia/
3. 集群式部署
集群的部署依靠配置文件:
Ø/etc/ganglia/gmetad.conf
这里需要配置的是集群名称和server端地址
data_source "my cluster"localhost
Ø/etc/ganglia/gmond.conf
这里需要配置cluster下的name和owner属性与gmetad端一致
cluster {
name = "my cluster"
owner = "nobody"
latlong = "unspecified"
url = "unspecified"
}
Ø 如果修改owner,同时也要修改Rrdtool的数据文件目录的owner:
chown -R nobody:nobody/var/lib/ganglia/rrds
4. 安装过程中遇到的问题
Ø 安装rrdtool过程中提示pkg-config错误
一般是库没有装全,记得要安装dev库
Ø 安装ganglia过程中找不到confuse,expat,apr等库
如果是64位机,ganglia会在依赖库的lib64目录下去查找文件,所以需要将lib目录下文件拷贝到lib64目录下
Ø gmetad启动失败:
查看gmetad状态:service gmetad status
gmetad dead but subsys locked
在gmetad.conf中修改了用户
setuid_username "root" 这里需要username和rrd数据目录的owner一致
Ø gmond启动失败:
查看gmond状态:service gmond status
gmond dead but subsys locked
可能是没有配置网关或者cluster的owner配置有问题
Ø 访问网页保错:
Ganglia cannotfind a data source. Is gmond running?
There was anerror collecting ganglia data XML error : Invalid document
现象是页面只有一行错误信息
解决办法是修改conf.php中的$ganglia_ip = "127.0.0.1";这里不能使用机器的ip,原因还不清楚。
Ø 图片无法显示:
一般是php-gd没有安装或者/var/www/html/ganglia/conf.php中rrdtool的配置有问题
Ø 访问网页保错Forbidden,You don’t havepermission to access /ganglia/ on this server
是SELinux没有禁用