http://imyin.xyz/2017/03/23/ganglia-on-CentOS/
今天介绍一下如何在CentOS服务器中部署Ganglia
至于什么是ganglia,就不在这里装逼赘述了,给个官网地址
预装软件
安装ganglia需要不少预装软件,最好自己在本地配置一个yum源,以方便安装。yum源就不在这里描述如何配置了,比较简单,看这里,写的比较全的一篇
yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpmbuild glib2-devel dbus-devel freetype-devel fontconfig-devel gcc-c++ expat-devel python-devel libXrender-devel
装完以上这些还不算完,还有confuse需要用源码安装,rrdtool可以用源码或者rpm包来安装。pcre用源码安装。
部署
创建用户
通常为了和其他服务区分开来,推荐在这里创建一个ganglia用户
groupadd ganglia
useradd -g ganglia ganglia
创建软件安装目录
mkdir /usr/local/src
cd /usr/local/src
源码安装confuse
tar -xzvf confuse-2.7.tar.gz
cd confuse-2.7
./configure CFLAGS=-fPIC --disable-nls
make -j8
make install
安装 rdtool
rpm -ivh rrdtool-1.3.8-6.el6.x86_64.rpm
rpm -ivh rrdtool-devel-1.3.8-6.el6.x86_64.rpm
安装 pcre
tar zxpf pcre-8.12.tar.gz
cd pcre-8.12
./configure
make
make insta
安装 ganglia
cd /usr/local/src
tar zxpf ganglia-3.6.1.tar.gz
cd ganglia-3.6.1
./configure --prefix=/usr/local/ganglia --with-gmetad --enable-gexec --with-python=/usr/bin --with-librrd=/usr/bin
make -j8
make install
注意,当出现以下图像显示时,才表示你configure成功,如果没有configure成功,根据相关提示,安装相关依赖即可。
from IPython.display import Image
Image('configured.PNG')
配置 ganglia
创建 ganglia 的配置目录
mkdir /etc/ganglia
复制 gmetad 的配置文件样本
cp gmetad/gmetad.conf /etc/ganglia/
构建 gmond 的初始配置
gmond -t | tee /etc/ganglia/gmond.conf
Copy the initial startup script, change the binary and config path and enable it on boot:
cp gmetad/gmetad.init /etc/rc.d/init.d/gmetad
cp gmond/gmond.init /etc/rc.d/init.d/gmond
vi /etc/init.d/gmetad
#GMETAD=/usr/sbin/gmetad
GMETAD=/usr/local/sbin/gmetad
#daemon $GMETAD
daemon $GMETAD -c /etc/ganglia/gmetad.conf
vi /etc/init.d/gmond
#GMOND=/usr/sbin/gmond
GMOND=/usr/local/sbin/gmond
# daemon $GMOND
daemon $GMOND -c /etc/ganglia/gmond.conf
chkconfig --add gmetad
chkconfig --add gmond
为rrdtool创建存储目录,并确保有写入权限
mkdir -p /var/lib/ganglia/rrds
chown ganglia:ganglia /var/lib/ganglia/rrds
修改 gmetad 的配置文件参数
vi /etc/ganglia/gmetad.conf
data_source "Ganglia Test Setup" 60 FQDN Name of Ganglia Server:8649
setuid_username "ganglia"
case_sensitive_hostnames 0
注意:将“FQDN Name of Ganglia Server”替换为你的DNS服务名称
修改 gmond 的配置文件参数
vi /etc/ganglia/gmond.conf
user = ganglia
cluster {
name = "Ganglia Test Setup"
owner = "ganglia"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
host = FQDN Name of Ganglia Server
port = 8649
ttl = 1
}
udp_recv_channel {
port = 8649
}
tcp_accept_channel {
port = 8649
}
注意:将“FQDN Name of Ganglia Server”替换为你的DNS服务名称
复制 python 依赖
mkdir -p /usr/local/lib64/ganglia/python_modules
cp ./gmond/python_modules/*/*.py /usr/local/lib64/ganglia/python_modules
至此,有关gmond、gmetad的配置已经完成,启动它们的服务:
service gmond start
service gmetad start
通过以下命令来查看服务是否启动正常
ps -ef | grep -v grep | grep gm
netstat -plane | egrep 'gmon|gme'
会看到一下信息,表示服务正在运行:
ganglia 40661 1 0 11:11 ? 00:00:02 /usr/local/sbin/gmetad -c /etc/ganglia/gmetad.conf
ganglia 41371 1 0 12:52 ? 00:00:01 /usr/local/sbin/gmond -c /etc/ganglia/gmond.conf
#############
tcp 0 0 0.0.0.0:8651 0.0.0.0:* LISTEN 506 10953496 40661/gmetad
tcp 0 0 0.0.0.0:8652 0.0.0.0:* LISTEN 506 10953497 40661/gmetad
tcp 0 0 0.0.0.0:8649 0.0.0.0:* LISTEN 506 10971994 41371/gmond
udp 0 0 172.30.4.252:47764 172.30.4.252:8649 ESTABLISHED 506 10971996 41371/gmond
udp 0 0 0.0.0.0:8649 0.0.0.0:* 506 10971993 41371/gmond
unix 2 [ ] DGRAM 10971950 41371/gmond
部署 ganglia web
安装 httpd、php
使用yum安装会显得非常简单:
yum -y install httpd php
安装 ganglia-web
cd /var/local/src
tar zxpf ganglia-web-3.6.2.tar.gz
cd ganglia-web-3.6.2
修改另外配置文件
vi conf.php
$conf['gweb_confdir'] = "/opt/app/ganglia/ganglia-web";
$conf['gmetad_root'] = "/opt/app/ganglia";
$conf['rrds'] = "${conf['gmetad_root']}/rrds";
vi header.php
ini_set('date.timezone', 'PRC');
cd ./dwoo
mkdir cache compiled
chmod 777 cache
chmod 777 compiled
复制到httpd
cd ../
mkdir /var/www/html/ganglia
cp -r ./* /var/www/html/ganglia/
启动服务
service httpd start
如果想添加节点到监控集群中,只需在机器中按照上面的步骤部署gmond服务即可
之后就可以通过访问http://(your host)/ganglia
查看监控界面:
Image('ganglia-web.PNG')
要启用发送到Ganglia统计信息收集守护程序的Hadoop指标,您需要在其中添加以下选项
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
*.sink.ganglia.supportsparse=true
*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm
另外,你还需要指定sinks 到你的ganglia采集服务器中
namenode.sink.ganglia.servers=gangliahost:8649
datanode.sink.ganglia.servers=gangliahost:8649
jobtracker.sink.ganglia.servers=gangliahost:8649
tasktracker.sink.ganglia.servers=gangliahost:8649
maptask.sink.ganglia.servers=gangliahost:8649
reducetask.sink.ganglia.servers=gangliahost:8649