Ganglia3.1.7安装与配置

wget http://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.1.7/ganglia-3.1.7.tar.gz/download tar -zxvf ganglia-3.1.7.tar.gz cd ganglia-3.1.7 ./configure --with-gmetad --with-lib
 

   wget http://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.1.7/ganglia-3.1.7.tar.gz/download
   tar -zxvf ganglia-3.1.7.tar.gz
   cd ganglia-3.1.7
   ./configure --with-gmetad --with-librrd=/usr/local/lib --sysconfdir=/etc/ganglia
   make
   make install

编译安装成功!
几个重要文件的默认安装位置:
/usr/bin/gstat
/usr/bin/gmetric
/usr/sbin/gmond
/usr/sbin/gmetad
/etc/ganglia/gmetad.conf

需要进一步的操作,添加gmond和gmetad为系统服务:

   cp gmond/gmond.init /etc/rc.d/init.d/gmond
   cp gmetad/gmetad.init /etc/rc.d/init.d/gmetad
   chkconfig --add gmond && chkconfig gmond on
   chkconfig --add gmetad && chkconfig gmetad on

7)Ganglia web前端的安装:

   mkdir /var/www/html/ganglia
   cp -r web/* /var/www/html/ganglia

Ganglia的Wiki特别指出,web前端的运行需要rrdtool,以及gmetad中的rrds/目录,没有这两个东西,无法出图。gmetad中rrd图形默认存储的目录位置为/var/lib/ganglia/rrds:

   mkdir -p /var/lib/ganglia/rrds
   chown nobody:nobody /var/lib/ganglia/rrds  

rrdtool的位置是/usr/local/bin/rrdtool,编译web前端的配置文件时会在那儿进行定义。

是不是觉得编译安装很麻烦?你也可以使用yum安装方式,只是Ganglia版本稍微低一些。Yum安装方式很简单,首先要安装epel源 (什么是epel ?自行google一下 ),然后运行:

   yum install rrdtool httpd php ganglia*   以ganglia开头的几个软件都要安装


三、Ganglia的简单配置:
1)生成gmond默认配置文件:

   gmond -t |tee /etc/ganglia/gmond.conf  

2)服务器端配置文件gmetad.conf,主要是配置data_source参数。它设定了监控服务器的地址及端口,可以指定多个监控服务器:

   data_source “hadoop” 10 192.168.9.45
   grid_name “hadoop cluster status” /*设置一个web前端显示的名称,随意命名。

3)被监控节点配置文件gmond.conf:
gmond.conf包括了几个部分:globals、cluster、udp_send_channel、udp_recv_channel等,如果只是想要Ganglia简单地运行,两个操作就可以了,两个操作都是在cluster配置段中进行修改:
首先,命名你的集群:
命名一个cluster名称,名称与gmetad.conf中的data_source保持一致。我的命名:name = "hadoop"
然后,修改tcp_accept_channel配置段如下:

   tcp_accept_channel {
    port = 8649
    acl {
       default = "deny"
       access {
         ip = 192.168.9.45 /*这里用来监控服务器的地址
         mask = 32
         action = "allow"
         }
      }
   }

把这个gmond.conf配置文件分发到每个被监控的节点服务器上,重启监控端的gmetad和gmond,以及节点端的gmond,即可对节点进行监控。
4)修改web前端配置文件/var/www/html/conf.php,指定gmetad中存储rrd图形的目录,以及rrdtool的位置:

   $gmetad_root = "/var/lib/ganglia";
   $rrds = "$gmetad_root/rrds";
     
   define("RRDTOOL", "/usr/local/bin/rrdtool");

四、启动ganglia,并访问其web页面:
service gmond start
service gmetad start
service httpd restart
访问: http://192.168.9.45/ganglia

五、被监控节点上安装Ganglia:
根据IBM网站上的文章所述,只需要拷贝几个文件到节点机器,即可使用Ganglia对这些机器进行监控。但是我们一般都不允许以root帐户连接远程服务器,所以也比较烦琐,还不如直接安装。
被监控节点服务器不需要安装RRDTOOL,php等,只需要gmond。编译安装方式跟监控节点一样,但configure时要简单一些,下面一条命令即可:

   ./configure --sysconfdir=/etc/ganglia

被监控节点上安装ganglia-gmond完毕后,从监控节点复制gmond.conf文件到被监控节点,然后启动/重启gmond,然后刷新监控web页面即可。
最好重启一下监控节点的gmetad。

然后把被监控端的gmond添加系统为系统服务,前面已经讲过了。略过。

被监控节点也可以使用yum方式安装,也是首先安装epel源,然后只需要运行下面命令:

   yum install ganglia-gmond


六、安装过程中遇到的错误及解决办法:
1)在configure apache时,遇到下列错误:
configure: error: Cannot use an external APR with the bundled APR-util
原因是apr和apr-util版本过低,下载并安装最新版,如下:

   wget http://labs.renren.com/apache-mirror//apr/apr-1.4.5.tar.gz
   tar -zxvf apr-1.4.5.tar.gz
   cd apr-1.4.5
   ./configure && make && make install

调整lib库的位置:
vi /etc/ld.so.conf.d/libapr.conf,添加/usr/local/apr/lib,运行/sbin/ldconfig -v
apr-util的安装参考上述apr的安装过程。
下载地址:wget http://labs.renren.com/apache-mirror//apr/apr-util-1.3.12.tar.gz

2)Ganglia configure失败:
Checking for apr
checking for apr-1-config... no
configure: error: apr-1-config binary not found in path
解决:
yum -y install apr-devel

4)Ganglia make出错:
/usr/bin/ld: /usr/local/lib/libconfuse.a(confuse.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libconfuse.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libganglia.la] Error 1
make[2]: Leaving directory `/usr/local/ganglia-3.1.7/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/ganglia-3.1.7'
make: *** [all] Error 2
解决:
据网上资料,这个错误是因为在编译libconfuse时,需要指定特殊的选项:CFLAGS=-fPIC --disable-nls
重新编译libconfuse,并调整lib库:

   ./configure CFLAGS=-fPIC --disable-nls && make && make install  

5)Ganglia访问失败:
There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error: Permission denied
解决:
需要关闭selinux:vi /etc/selinux/config,把SELINUX=enforcing改成SELINUX=disable;需要重启机器。
可以使用命令setenforce 0来关闭selinux而不需要重启,刷新页面,即可访问!但此方法只是一权宜之计。要想永久修改selinux设置,还是要使用第一种方法。