1. Ganglia简介
Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。
2. Ganlia结构
Ganglia在结构上由三种守护进程组成gmond 、gmetad和gweb。在操作上,每种守护进程都是独立的,运行时只需要自己的配置文件来操作即可,任意守护进程在缺少其他两种守护进程的情况下也可以正常启动和运行。然而,三者在结构上又是相互协作的,需要同时使用才能发挥功效。
2.1. gmond
gmond和普通代理一样,安装在每一台需要监控的主机上,负责与操作系统交互以获得需要关注的指标数据,例如CPU负载和硬盘容量。
gmond在内部采用模块化设计,采用基于C语言编写的、根据操作系统定制的插件进行监控。和其他监控系统采用的客户端代理软件不同,gmond不需要等待外部轮询引擎的数据监测请求,也不将监控数据直接上传至集中式轮询器,而是根据自己本地配置文件定义的调度方案进行轮询。监测数据时使用简单的监听/通告协议,通过 XDR (External Data Representation)在集群内的主机之间共享。因此,Ganglia集群内的每个节点都知道同一集群内所有主机的当前指标数据。远程轮询器可以通过端口8649向集群内任意节点请求获得该集群XML格式的所有数据。
gmond并不是消极等待被监控系统服务器唤醒,而总是处于激活态,以便进行测量、传输和共享。轮询器不再需要知道从哪些主机获取哪些服务,而只需要一个包含每个集群内至少一台主机名称的列表即可。
2.2. gmetad
gmetad的作用是整合所有信息。
gmeted是一个简单的轮询器,对网络中每个集群进行轮询,并将每台主机上返回的所有指标数据写入各个集群对应的轮询数据库RRD。
作为数据存储的一种流行的解决方案,RRDtool是很好的选择。指标数据存储于轮询数据库(Round Robin Database),这种数据库包含了多个时间块内静态分配的数值。如果每10秒进行一次轮询,每次数据都进行存储,一天将需要8640次存储。考虑到数据保留需求, RRDtool内部以“循环覆盖”的方式管理数据,将新数据的值叠加到原来的数值上来覆盖原有数据。
2.3. gweb
Ganglia可视化工具——gweb无需用户进行任何自定义设置即可便捷、及时地访问网络中任意一台主机的任意一种指标数据。
3. 主节点安装配置
ganglia是一个集群监控项目,要分主节点和从节点。首先,我们来完成主节点的安装配置。
1、更新软件源中的软件列表sudo apt-get update
2、安装gmond、gmetad和gwebsudo apt-get install ganglia-monitor rrdtool gmetad ganglia-webfrontend
3、配置gmondsudo vi /etc/ganglia/gmond.conf
分别找到:
1 | cluster { |
修改为:
1 | cluster { |
4、配置gmetadsudo vi /etc/ganglia/gmetad.conf
查找cluster
,注释掉该行,修改为:
1 | # data_source "my cluster" localhost |
data_source后面有三个参数,第一个参数”my cluster”是集群名称;第二个参数10是轮询时间(单位:秒);第三个参数192.168.56.103:8649是要监听的机器的IP和端口(可写多个,用空格隔开)。
5、配置gwebsudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf
6、重启服务
1 | sudo /etc/init.d/ganglia-monitor restart |
7、测试访问
ubuntu测试:curl http://192.168.56.103/ganglia/
浏览器访问测试:http://192.168.56.103/ganglia/
4. 从节点安装配置
以上,已经完成了ganglia主节点的安装配置,但是往往我们要监控的是一个集群。接下里,我们就来研究一下从节点的配置。
Ganglia结构一节中,我们了解到,gmond要安装在每一个节点,负责监控主机情况;gmetad(包括rrdtool)只要安装在主节点就可以,负责收集各个节点的数据;gweb只要安装在主节点,负责显示gmetad收集的数据。
综上,从节点只要安装gmond就可以了。
4.1. 从节点
假设我们有一个从节点,IP为192.168.56.104,那么它的安装配置步骤如下:
1、更新软件源中的软件列表sudo apt-get update
2、安装gmondsudo apt-get install ganglia-monitor
3、配置gmondsudo vi /etc/ganglia/gmond.conf
分别找到:
1 | cluster { |
修改为:
1 | cluster { |
没错,从节点的gmond配置和主节点完全相同。
4、重启服务sudo /etc/init.d/ganglia-monitor restart
4.2. 主节点
配置完从节点就好了吗?并没有,主节点也要做相应修改,主要是修改下gmetad配置。
1、sudo vi /etc/ganglia/gmetad.conf
查找cluster
,修改为:
1 | # data_source "my cluster" localhost |
这样,就添加好了192.168.56.104这个从节点。
注意:gmetad会依次检测指定主机,并从第一台响应主机开始收集状态数据,而每一台主机上的gmond都知道所在集群的所有状态数据,所以无需在data_source定义里指定集群内的所有主机。假若有节点失效,通常指定两三个主机也就足够保证数据的收集。
2、重启gmetadsudo /etc/init.d/gmetad restart
3、测试访问
等待10秒,再次访问 http://192.168.56.103/ganglia/ ,就能看到新加入的从节点。
5. 删除数据
由于重设了管理机的系统时间,发现所有的机器状态都变成了Hosts down,这时我们需要删除数据重新开始统计。
1、管理机删除rrds目录下所有文件cd /var/lib/ganglia/rrds && sudo rm -rf ./*
2、管理机重启gmond和gmetadsudo /etc/init.d/ganglia-monitor restart
sudo /etc/init.d/gmetad restart
3、客户机重启gmondsudo /etc/init.d/ganglia-monitor restart
6. 删除机器
ganglia默认服务器down机也不会在web前端清除该设备,官方文档介绍的办法如下:
1、登录管理机
2、编辑gmond.conf,sudo vim /etc/ganglia/gmond.conf
在globals中找到host_dmax,它的默认值为0,意思是不清除节点。host_dmax的单位为秒,我们把host_dmax的值修改为7天,就是60x60x24x7=604800,即超过7天未汇报数据的节点会从前端清除。