Ganglia配置

ganglia工作原理 ganglia主要有两个角色,gmond(ganglia monitor daemons)和gmetad(ganglia metadata daemons)。gmond是agent,需要在被监控的每台机器上部署,负责采集所在机器的系统状态,信息都是存储在内存里面的。

ganglia-icm ganglia有一种工作模式是组播,顾名思义,以组播的形式发出自己采集到的信息。这时候集群内所有配置成组播的都可以接收数据,也就是说在组播的情形下,集群内的数据都是共享并且一致的(和路由协议很像),gmetad的功能就是从采集集群内所有系统状态信息,在组播的工作模式下,gmetad可以从任一台gmond上采集集群信息。但是组播的局限性就是在于集群要在一个网段内,并且网络负载提高。 ganglia还有一种工作模式是单播,每个agent上的gmond采集好各自的信息,然后通过udp汇总到一台gmond上,然后这台gmond汇总所有来自其他gmond的信息并且联合本机信息也发送给ganglia,单播的模式就是push,gmetad等待从gmond中心节点上过来的信息。 gmetad会把从gmond收集到的信息写入rrdtool里面,rrdtool是一个环形数据库,用来存储集群信息,然后在ganglia-web可以去读取rrdtool,并且绘图呈现给前端。

ganglia安装配置 在gmetad上得安装gmond和gmetad

for package in ganglia ganglia-devel ganglia-gmetad ganglia-gmond
do
    sudo yum -y install $package
done    

配置gmetad $ vim /etc/ganglia/gmetad.conf

data_source "Hadoop" gmond_ip
这里设置的gmetad去哪里取数据
rrd_rootdir "/var/lib/ganglia/rrds"
    

$ 配置gmond $ vim /etc/ganglia/gmond.conf

...
globals {
    daemonize = yes
    setuid = yes
    user = nobody
    debug_level = 0
    max_udp_msg_len = 1472
    mute = no //设置本节点将不会再广播任何自己收集到的数据到网络上
    deaf = no //本节点将不再接收任何其他节点广播的数据包
    host_dmax = 0 /*secs */
    cleanup_threshold = 300 /*secs */
    gexec = no
    send_metadata_interval = 30
}
...
cluster {
    name = "Hadoop"
    owner = "unspecified"
    latlong = "unspecified"
    url = "unspecified"
}
...
udp_send_channel {
    port = 8649
    ttl = 1
    host = gmond_host_ip ==>> 因为是单播,需要指定IP,这个IP就是gmond中心的IP,gmetad就是从这里拉取数据
}
...

rrdtool安装配置 rrdtool用来存取gmetad收集到的所有gmond的数据

for package in rrdtool rrdtool-devel
do
    sudo yum -y install $package
done

mkdir -p /var/lib/ganglia/rrds      ==>> 数据就会存在这下面
chown nobody:nobody -R  /var/lib/ganglia

ganglia-web安装配置

for package in httpd php php-gd php-common php-cli php-devel
do
    yum install $package
done

vim /etc/http/conf/httpd.conf
DocumentRoot "/var/www/"

$ wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia-web/3.5.10/ganglia-web-3.5.10.tar.gz
$ tar -zxvf ganglia-web-3.5.10.tar.gz
$ mkdir -p /var/www/ganglia-web
$ cp -raf ganglia-web-3.5.10/* /var/www/ganglia-web
$ cd /var/www/ganglia-web
$ vim conf_default.php
$conf['gweb_root'] = dirname(__FILE__);
$conf['gweb_confdir'] = "/var/www/ganglia-web";
...
$conf['gmetad_root'] = "/var/lib/ganglia";
$conf['rrds'] = "/var/lib/ganglia/rrds";

启动ganglia $ service httpd start $ service gmond start $ service gmetad start * 访问 http://ip/ganglia-web

安装过程中碰到几个问题

One 呈现ganglia-web的时候出现
RRDs directory '/var/lib/ganglia/rrds' is not readable

**解决方案 **

1.chown nobody:nobody -R RRDs /var/lib/ganglia
2.chmod 777 -R /var/lib/ganglia
3.vim /etc/php.ini
    safe_mode = Off

Two 呈现web的时候部分jss和css加载失败 * ganglia web使用graph.php来生成rrd图,调用的函数为passthru,而默认的php.ini限制了passthru的执行。 解决方案

vim /etc/php.ini
disable_functions = exec,passthru,popen,proc_open
把这个函数去了就行。  

标签:Linux, Server, Ganglia