Ganglia安装

本文主要介绍Ganglia部署过程、使用过程中遇到的问题和解决办法,以及实际使用的效果。

1. 工欲善其事,必先利其器!

前段时间在定位项目性能问题时,苦于难以评价系统各参数以及使用情况对性能的影响,调研了一下集群监测系统,发现了一个监测集群系统运行状态的利器:ganglia。

Ganglia是UC Berkeley发起的一个开源集群监视项目,其核心包含gmond、gmetad以及一个Web前端,主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

不仅如此,Ganglia使用者可以在其上二次开发以监控需要的数据,比如组件的请求数、负载、占用的内存CPU、以及运行状态等,并非常直观的显示在Web页面上

2. Ganglia的工作原理

每台计算机都运行一个收集和发送度量数据的名为gmond的守护进程。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得Ganglia可以实现良好的扩展。gmond带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。所有这些数据多次收集会影响节点性能。网络中的"抖动"发生在大量小消息同时出现时,可以通过将节点时钟保持一致,来避免这个问题。

2.1 安装步骤

依赖

1Ganglia依赖 zlib freetype libart_lgpl libpng

安装rrdtool

1tar -xvzf rrdtool-1.4.7.tar.gz
2cd rrdtool-1.4.7
3./configure --prefix=/usr/local/rrdtool
4make
5make install

执行下命令,看是否安装成功

1/usr/local/rrdtool/bin/rrdtool

出现如下结果,则表示成功

1RRDtool 1.4.7 Copyright 1997-2012 by Tobias Oetiker <tobi@oetiker.ch>
2 Compiled Jan 8 2013 11:44:13

如果在configure步骤出现如下错误

1configure: WARNING:
2 ---------------------------------------------------------------------------
3 I could not find a working copy of libxml-2.0. Check config.log for hints on why
4  this is the case. Maybe you need to set LDFLAGS and CPPFLAGS appropriately
5  so that compiler and the linker can find libxml2 and its header files. If
6  you have not installed libxml-2.0, you can get it either from its original home on
7 
9 
10 You can find also find an archive copy on
11 
13 
14 The last tested version of libxml-2.0 is 2.7.8.
15 LIBS=-lm
16  LDFLAGS=
17  CPPFLAGS= -I/usr/include/libxml2
18----------------------------------------------------------------------------
19configure: error: Please fix the library issues listed above and try again.

则说明机器上缺少一些库,需要安装,比如yum -y install libxm2。 如果在时出现如下错误

1EGIN failed--compilation aborted at Makefile.PL line 1.

则执行yum install perl-ExtUtils-MakeMaker 命令安装 perl-ExtUtils-MakeMaker。 安装expat

1tar -xvzf expat-2.1.0.tar.gz
2./configure --prefix=/usr/local/expat
3make
4make install

对于64位操作系统,需要手动的拷贝下动态链接库到lib64下

1mkdir /usr/local/expat/lib64
2cp -a /usr/local/expat/lib/* /usr/local/expat/lib64/

安装apr及apr-util

1tar -xvzf apr-1.4.6.tar.gz
2./configure --prefix=/usr/local/apr
3make
4make install
5tar -xvzf apr-util-1.4.1.tar.gz
6./configure --with-apr=/usr/local/apr --with-expat=/usr/local/expat
7make
8make install

同样64位机器需要拷贝动态链接库

1/bin/cp -f /usr/local/apr/include/apr-1/* /usr/local/apr/include/
2mkdir -p /usr/local/apr/lib64
3/bin/cp -a -f /usr/local/apr/lib/* /usr/local/apr/lib64/

安装confuse

1tar -xvzf confuse-2.7.tar.gz
2./configure CFLAGS=-fPIC --disable-nls --prefix=/usr/local/confuse
3make
4make install

拷贝动态链接库

1mkdir -p /usr/local/confuse/lib64
2/bin/cp -a -f /usr/local/confuse/lib/* /usr/local/confuse/lib64/

安装ganglia 现在才是安装ganglia的开始,如果提示需要pcre的话,安装下 yum install pcre 下载ganglia-3.2.0,解压,安装

1Tar –xvzf ganglia-3.4.0.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
3make
4make install

ganglia服务端 创建rrdtool数据目录,看$ganglia-3.2.0/web/conf.php里面的gmetad_root变量,并根据apache的运行用户创建权限

1mkdir -p /var/lib/ganglia/rrds
2mkdir -p /var/lib/ganglia/dwoo
3chown -R nobody:nobody /var/lib/ganglia

配置一个数据源,修改/etc/ganglia/gmetad.conf文件,同时将运行用户设置为rrdtool的目录权限用户,例如apache用户

1data_source "suc" localhost
2setuid_username "apache"

其中suc是数据源的名称,客户端分组会依赖此名称,后面会提到。 添加自启动脚本

1/bin/cp -f gmetad/gmetad.init /etc/init.d/gmetad
2/bin/cp -f /usr/local/ganglia/sbin/gmetad /usr/sbin/gmetad
3chkconfig -add gmetad

启动gmetad服务

1service gmetad start

看见Starting GANGLIA gmetad: [ OK ]就代表运行正常了。 客户端配置 本机安装如下:

1/bin/cp -f gmond/gmond.init /etc/init.d/gmond
2/bin/cp -f /usr/local/ganglia/sbin/gmond/usr/sbin/gmond
3chkconfig -add gmond
4gmond --default_config > /etc/ganglia/gmond.conf

对于生成的默认配置文件需要做适当的修改

1cluster {
2name="suc"
3owner="apache"
4latlong="unspecified"
5url="unspecified"
6}

其中name是将要在服务端进行的分组,是服务端的数据源。接下来开启服务

1service gmond start

看见Starting GANGLIA gmetad: [ OK ]代表启动成功。如果有失败,可以讲gmond.conf中的debug有0改为100,看更多的日志,然后进行排查。

1globals {
2daemonize = yes
3setuid = yes
4user = nobody
5debug_level = 100
6}

非本机客户端配置需要安装服务端安装一样进行配置,运行,非常麻烦,这里使用本机安装好的文件进行安装。使用下面的脚本进行安装deploy-ganglia.sh

1i=$1
2scp /usr/sbin/gmond $i:/usr/sbin/gmond
3ssh $i mkdir -p /etc/ganglia/
4ssh $i mkdir -p /usr/local/ganglia/lib64
5ssh $i mkdir -p /usr/local/expat/lib
6scp /etc/ganglia/gmond.conf $i:/etc/ganglia/
7scp /etc/init.d/gmond $i:/etc/init.d/
8scp -r /usr/local/ganglia/lib64/* $i:/usr/local/ganglia/lib64/
9scp /usr/local/expat/lib/libexpat.so.1 $i:/usr/local/expat/lib/libexpat.so.1
10scp /usr/lib64/libapr-1.so.0 $i:/usr/lib64/

实际上就是将本机安装好(编译好)的动态链接库拷贝到其它机器上,使用如下命令拷贝即可

1sh deploy-ganglia.sh 10.1.11.2

服务端WEB设置 PHP程序需要依赖Apache来运行,因此需要安装如下依赖

1yum install php-common php-cli php php-gd httpd

安装web程序,这里假定apache的root路径在/var/www/html下面,具体路径可查看/usr/local/apache/conf/httpd.conf文件中的DocumentRoot配置。

1mkdir /var/www/html/ganglia
2cp -a -f ganglia-3.2.0/web/* /var/www/html/ganglia

禁用SELinux setenforce 0 修改rrdtool的路径,文件/var/www/html/ganglia/conf.php中的RRDTOOL,如果不对此配置进行修改,则可能导致访问ganglia时,页面没有图片出现。

1define("RRDTOOL", "/usr/local/rrdtool/bin/rrdtool");

重启httpd服务器即可看到效果 service httpd restart

3.实际使用效果

在项目中主要监控了系统的负载、内存CPU和带宽等四个维度,效果图如下:

3.1 负载

Ganglia记录每一时刻的负载情况,并根据负载轻重显示不同的颜色,红色表示负载过重。

3.2 内存

Ganglia自带了整机器的内存使用情况,其中包括:总内存、物理使用内存、共享内存、交换内存等,使用者可以二次开发监控某一进程的内存使用状态。

3.3 CPU

3.4 带宽

4. 总结

Ganglia是监测集群系统运行状态的利器,能够清晰直观地显示出各个资源的运行状况,如果有必要,可应用于某个项目的实际开发中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值