ganglia集群监控工具多cluster搭建采坑指南

ganglia作为大数据监控工具被广泛应用,版本主要讲解 ganglia 多cluster部署方法,和ganglia 文件目录配置方法,以及配置过程中遇到的坑。 至于ganglia原理本文涉的不是很多。后面会有专门文章讲解底层原理。
本文安装的版本如下:

  • Ganglia Web Frontend version 3.7.1
  • Ganglia Web Backend (gmetad) version 3.7.2
  • Ganglia Web Backend (gmond) version 3.7.2

简介

ganglia 架构图 ganglia 架构图

ganglia 多cluster 安装架构图

ganglia 多cluster 安装架构图 如上图所示: 我们在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机器

安装前准备

  • centos6/alios6 机器
  • 关闭所有被监控机器的防火墙
  • 关闭所有被监控机器的 selinux

关于如何关闭防火墙和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

中心节点配置

此时默认的安装目录如下所示:

  • ganglia配置文件目录:/etc/ganglia
  • rrd数据库存放目录:/var/lib/ganglia/rrds(这个需要修改)
  • httpd主站点目录:/var/www/html
  • ganglia-web安装目录:/usr/share/ganglia
  • ganglia-web配置目录:/etc/httpd/conf.d/ganglia.conf
gmetad 配置
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
ganglia-web配置

如下 确保外部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>

被检测节点安装

gmond 安装


yum install -y epel-release
#如果找不到包可以使用yum install -y gmond
install -y ganglia-gmond

gmond配置

本文有两个cluster,我们下面文章讲解cluster-1的配制方法, cluster-2类推。
思路 :

  • 保证ip-1 和ip-1-1, ip-1-n所有的 gmond配置 的cluster中的name保证一直都是 cluster-1
  • 配置 ip-1的 udp_recv_channel部分关闭多播,同时bind配置自己的ip。确保自己是cluster的所有监控的接手机器。 udp_send_channel 禁掉多波,同时host填写自己。
  • ip-1-1,ip-1-n的机器 确保 udp_send_channel的 host写 ip-1, udp_recv_channel 可以随便写,但是默认写自己。

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 启动过程

ganglia启动是要求有一定顺序,否则会遇到坑。

  • gmetad 和 httpd 先启动
  • ip-1的 gmond 确保早于 ip-1-1,ip-1-n机器启动
  • ip-1-1, ip-1-n启动
  • ip-2 的 gmond确保早于 ip-1-1,ip-2-n及其启动
  • ip-2-1,ip-2-n启动
# 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

访问网页

http://ip-0/ganglia

其他功能特性

gmond默认不打印日志,所以想要看日志的话要要自己在启动的时候执行日志级别,具体操作自己可以在网上查资料。
另外gmond 和 gmetad之间相互通信走的是 udp协议。

#在gmetad主机上还行下面命令可以看连上的主机
telnet localhost 8649 | grep HOST


默认gmond监控的主机指标如下,如果想扩展要自己下载相应的so文件然后配置。

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"
  }
}

开启basicAuth

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>

坑1

网页上面只显示集群中一个node的数据

这个问题 主要是 因为 cluster中 gmond启动顺序问题, 请确保 ip-1 一定要早于cluster-1中其他机器的gmond。


坑2

There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error: Connection refused

  • 检查 rrd目录权限是否是 777
  • 检查方 rrd的磁盘是否满了。

下一篇文章会讲解 ganglia如何和hadoophbase集成来监控

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
慷慨打赏