Ganglia监控

一、Ganglia是什么?


     Ganglia是由UC Berkeley发起的一个开源项目,主要通过收集各节点上的度量数据(如处理器速度、内存使用量等)实现系统性能的监控。Ganglia的核心包含gmetad、gmond以及Web前端三部分,这三部分之间通过XDL(xml的压缩格式)或者XML格式传递监控数据,达到监控效果。


二、Ganglia工作原理图

    Ganglia监控的大致过程为:集群内的节点通过运行gmond收集并相互发布节点状态信息,然后gmetad利用RRDTool工具周期性的轮询gmond收集到的信息,然后存入rrd数据库,最后再利用RRDTool工具将收集到的数据创建成图表,并通过web前端将其显示出来。



Ganglia监控


二、Ganglia的组件


(1)Gmetad程序

         Gmetad用于轮询gmond节点存储的信息,并更新到rrd数据库中

          一个数据源节点就是是一个gmond节点。一个gmetad节点可以设置多个数据源节点,每个数据源节点可以有多个备份,一个数据源节点失败了还可以从其他节点取数据。可以把Gmetad理解为服务器。

          Gmetad只有TCP通道,一方面它向datasource发送请求,获取数据源节点的XML文件,另一方面会使用一个8651的默认TCP端口发布自身收集的XML文件,因此,Gmetad即可以从Gmond也可以从其他Gmetad节点获取XML数据。


(2)Gmond程序

         Gmond收集:一般用于收集本机的监控数据,用gmond.conf的udp_rev_channel来配置

         Gmond存储:并不是所有的gmond的都用来存储,可以找出其中的一台或者几台来存储即可,用gmond.conf的udp_send_channel来配置

         Gmond节点之间的信息发送接收主要用udp协议,传递文件格式为XDL。


        每个Gmond收集到的数据供Gmetad读取,Gmond通过默认端口8649监听到Gmetad请求后将XML格式数据发送给Gmetad。可以将Gmond理解为客户端。

         Gmond收集数据有muticast和unicast两种。Gmond本身具有UDP的发送(send)和接受(recv)通道以及TCP的接收(recv)通道。其中UDP通道用于向其他Gmond节点发送或接收数据,TCP通道主要接受来自Gmetad的请求,向Gmetad发送XML文件。在muticast模式下,Gmond节点之间通过UDP向多播目标相互传递数据。

Ganglia监控


Gmond节点模块结构主要有三个模块组成:

1)collect and publish模块,该模块周期性的调用一些内部命令获得metric data,然后将这些数据通过UDP通道发布给其他Gmond节点。

2)Listen Threads监听其他Gmond节点发送的UDP数据,并将这些数据存放在内存中

3)XML Export Threads负责将数据以XML格式发布出去,比如交给Gmetad。

Ganglia监控

在unicast模式下,多个Gmond节点通过UDP向单播的目标主机host的Gmond发送数据,Gmetad然后向目标主机的Gmond请求XML文件

在Unicast模式下,Gmond、Gmetad、rrd数据库以及web前端通常位于集群内的同一个节点上,该节点负责收集、存储、显示被监控的各节点的状态信息。


(3)Web前端

          Web前端通常和Gmetad安装在同一个节点上,它从Gmetad中取数据,并且读取rrd数据库,生成图片显示出来。



     本文转自西鼠 51CTO博客,原文链接:http://blog.51cto.com/10630401/1976444,如需转载请自行联系原作者





上一篇:UDP"打洞"原理


下一篇:InnoDB解决幻读的方案--LBCC&MVCC