ganglia作为大数据监控工具被广泛应用,版本主要讲解 ganglia 多cluster部署方法,和ganglia 文件目录配置方法,以及配置过程中遇到的坑。 至于ganglia原理本文涉的不是很多。后面会有专门文章讲解底层原理。
本文安装的版本如下:
如上图所示: 我们在ganglia中有两个cluster需要搭建名字分别是 cluster-1和cluster-2,其中 gmond通信方式使用单播。
cluster-1 的所有监控数据 gmetad通过 ip-1获取, cluster的所有其他机器(ip-1-1, ip-1-n)都把自己的监控数据发送给 ip-1
cluster-2 的所有监控数据 gmetad通过 ip-2获取, cluster的所有其他机器(ip-2-1, ip-2-n)都把自己的监控数据发送给 ip-2
机器ip | 进程 | 角色 |
---|---|---|
ip-0 | gmetad, ganglia-web, httpd, gmond(中心节点也要被监控) | 中心节点,ganglia 元数据管理和web程序 |
ip-1 | gmond | ip-1信息采集器和cluster-1的接受机器 |
ip-1-1 | gmond | 采集ip-1-1的信息发送到ip-1机器 |
ip-1-n | gmond | 采集ip-1-n的信息发送到ip-1机器 |
ip-2 | gmond | ip-2信息采集器和cluster-2的接受机器 |
ip-2-1 | gmond | 采集ip-2-1的信息发送到ip-2机器 |
ip-2-n | gmond | 采集ip-2-n的信息发送到ip-2机器 |
关于如何关闭防火墙和selinux见hadoop2.8.5安装采坑指南 一文中有详细介绍。
在 ip-0机器上我们需要安装如下程序, 注意中心节点磁盘尽量大一点,因为后面所有的监控数据会议rrds的形式存放在磁盘上。非常耗费磁盘。
yum install -y epel-release
# 如果下面找不到包,可以使用 yum install -y gmetad
yum install -y ganglia-gmetad ganglia-devel
#渲染工具
yum install -y rrdtool
# web服务器
yum install -y httpd
#ganglia web代码安装
yum install -y ganglia-web php
#如果找不到包,可以使用 yum install -y gmond
yum install -y ganglia-gmond
此时默认的安装目录如下所示:
vi /etc/ganglia/gmetad.conf
#因为使用单播,所以只用指定一个ip就好了
data_source "cluster-1" ip-1
data_source "cluster-2" ip-2
# hostname 大小写敏感,防止出现问题
case_sensitive_hostnames 1
# 注意修改rrd 目录,这个目录尽量 大一点。
rrd_rootdir "/data/ganglia/rrds/"
gridname "mygrid"
### 修改 ganglia web rrds读取目录配置
vi etc/ganglia/conf.php
$conf['gmetad_root'] = "/data/ganglia";
$conf['rrds'] = "${conf['gmetad_root']}/rrds";
创建rrd目录
# root身份执行
mkdir -p /data/ganglia/rrds
#
chown -R ganglia:ganglia /data/ganglia/rrds
确保rrd目录权限如下:
#/data/ganglia权限
drwxr-xr-x 3 root root 4096 Mar 20 10:26 ganglia
# /wzdata/ganglia/rrds 权限
ls -al /wzdata/ganglia
drwxr-xr-x 3 root root 4096 Mar 20 10:26 .
drwxr-xr-x 7 admin admin 4096 Mar 20 10:26 ..
drwxr-xr-x 7 ganglia ganglia 4096 Mar 20 15:12 rrds
如下 确保外部ip可以访问到ganglia web
vim /etc/httpd/conf.d/ganglia.conf
<Location /ganglia>
Order deny,allow
# Deny from all
Allow from all
# Allow from ::1
# Allow from .example.com
</Location>
yum install -y epel-release
#如果找不到包可以使用yum install -y gmond
install -y ganglia-gmond
本文有两个cluster,我们下面文章讲解cluster-1的配制方法, cluster-2类推。
思路 :
ip-1 配置如下
cluster {
name = "cluster-1"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
# mcast_join = 239.2.11.71
port = 8649
host=ip-1
ttl = 1
}
udp_recv_channel {
#mcast_join = 239.2.11.71
port = 8649
bind = ip-1
retry_bind = true
# buffer = 10485760
}
ip-1-1, ip-1-n 配置如下
cluster {
name = "cluster-1"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
# mcast_join = 239.2.11.71 #禁止多波
port = 8649
host=ip-1
ttl = 1
}
udp_recv_channel {
#mcast_join = 239.2.11.71 #禁止多波
port = 8649
#bind = 172.16.217.68
retry_bind = true
# buffer = 10485760
}
ganglia启动是要求有一定顺序,否则会遇到坑。
# 1. 启动 gmetad httpd
service gmetad start
service httpd start
# 2. ip-1 和 ip-2 启动
service gmond start
# 3. ip-1-1, ip-1-n, ip-2-1, ip-2-n 启动
service gmond start
gmond默认不打印日志,所以想要看日志的话要要自己在启动的时候执行日志级别,具体操作自己可以在网上查资料。
另外gmond 和 gmetad之间相互通信走的是 udp协议。
#在gmetad主机上还行下面命令可以看连上的主机
telnet localhost 8649 | grep HOST
modules {
module {
name = "core_metrics"
}
module {
name = "cpu_module"
path = "modcpu.so"
}
module {
name = "disk_module"
path = "moddisk.so"
}
module {
name = "load_module"
path = "modload.so"
}
module {
name = "mem_module"
path = "modmem.so"
}
module {
name = "net_module"
path = "modnet.so"
}
module {
name = "proc_module"
path = "modproc.so"
}
module {
name = "sys_module"
path = "modsys.so"
}
}
htpasswd -c /etc/httpd/auth.basic userName
vi /etc/httpd/conf.d/ganglia.conf
<Location /ganglia>
Order deny,allow
# Deny from all
Allow from all
# Allow from ::1
# Allow from .example.com
## 增加如下配置支持 basic auth
AuthType Basic
AuthName "userName"
AuthBasicProvider file
AuthUserFile /etc/httpd/auth.basic
Require valid-user
</Location>
这个问题 主要是 因为 cluster中 gmond启动顺序问题, 请确保 ip-1 一定要早于cluster-1中其他机器的gmond。
下一篇文章会讲解 ganglia如何和hadoop和hbase集成来监控