Ganglia概述与工作原理

1、概述

Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要 是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,     通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

每台计算机都运行一个收集和发送度量数据的名为 gmond 的守护进程。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。所有这些数据多次收集会影响节点性能。网络中的 “抖动”发生在大量小消息同时出现时,可以通过将节点时钟保持一致,来避免这个问题。

gmetad可以部署在集群内任一台节点或者通过网络连接到集群的独立主机,它通过单播路由的方式与gmond通信,收集区域内节点的状态信息,并以XML数据的形式,保存在数据库中。

由RRDTool工具处理数据,并生成相应的的图形显示,以Web方式直观的提供给客户端。

2、工作原理

     Ganglia包括如下几个程序,他们之间通过XDL(xml的压缩格式)或者XML格式传递监控数据,达到监控效果。集群内的节点,通过运行gmond收集发布节点状态信息,然后gmetad周期性的轮询gmond收集到的信息,然后存入rrd数据库,通过web服务器可以对其进行查询展示。

     Gmetad 这个程序负责周期性的到各个datasource收集各个cluster的数据,并更新到rrd数据库中。可以把它理解为服务端。Gmond 收集本机的监控数据,发送到其他机器上,收集其他机器的监控数据,gmond之间通过udp通信,传递文件格式为xdl。收集的数据供Gmetad读取,默认监听端口8649 ,监听到gmetad请求后发送xml格式的文件。可以把它理解为客户端。

web front-end 一个基于web的监控界面,通常和Gmetad安装在同一个节点上(还需确认是否可以不在一个节点上,因为php的配置文件中ms可配置gmetad的地址及端口),它从Gmetad取数据,并且读取rrd数据库,生成图片,显示出来。

 

Ganglia概述与工作原理

图(1

 

如上所示,gmetad周期性的去gmond节点或者gmetad节点获取数据。一个gmetad可以设置多个datasource,每个datasource可以有多个备份,一个失败还可以去其他host取数据。

如果是muticast模式的话,gmond之间还会通过多播来相互传递数据。Gmond本身具有udp send和receive通道,还有一个tcp recv通道。其中udp通道用于向其他gmond节点发送或接受数据,tcp则用来export xml文件,主要接受来自gmetad的请求。Gmetad只有tcp通道,一方面他向datasource发送请求,另一方面会使用一个tcp端口,发布自身收集的xml文件,默认使用8651端口。所以gmetad即可以从gmond也可以从其他的gmetad得到xml数据。

Gmond节点内部模块图如下所示:

     Ganglia概述与工作原理

图(2

如上所示,Gmond节点内部结构主要由三个模块组成,第一个是collect and publish模块,该模块周期性的调用一些内部指令获得metric data,然后将这些数据通过udp通道发布给其他gmond节点。第二个是Listen Threads模块,监听其他gmond节点的发送的udp数据,然后将数据存放到内存中。第三个是XML export thread模块,它主要负责将数据以xml格式发布出去,比如交给gmetad。

整个Ganglia系统的构成包括以下几个方面:

1、gmetad:收集各结点的数据并保存到数据库中

2、gmond:收集本地机器的信息,并发送数据

3、rrdtool: Round Robin Database Tool是一个强大的绘图的引擎,很多工具例如MRTG都可以调用rrdtool绘图。

4、apache: web服务器

5、php:执行环境,webfrontend使用php开发

6、1台监控服务器

7、n台被监控机

Ganglia概述与工作原理

(图3)

Ganglia整个工作过程如上所示:

1.管理节点通过gmetad.conf 配置文件中的代理节点主机列表地址和代理节点相互通信。

2.管理节点收集每个代理节点的机器运行信息,这些信息是通过XML协议进行传输。

3.管理节点收集到代理节点的XML协议后,解析成管理节点需要的数据格式。

4.再通过管理节点的 PHP 程序 调用 rrdtool 工具,将数据转换成图形。

5.当用户在浏览器上输入管理节点的 url地址 就可以看见图形化的数据了。

 

你可能感兴趣的:(Ganglia概述与工作原理)