分布式监控系统Ganglia学习------(1)基本原理

最近在学习Ganglia,记录一下学习的具体过程和心得。

一 相关资源

官网:提供了demos和代码下载。

book: 《Monitoring with Ganglia》,Ganglia作者写的书,深入浅出。

paper: 《The Ganglia Distributed Monitoring System: Design, Implementation, and Experience》可以快速了解Ganglia的基本原理。

二 Ganglia整体架构

Ganglia是用C实现的一个分布式监控系统,主要由gwebgmetadgmond三个模块构成,整体架构如下图所表示


分布式监控系统Ganglia学习------(1)基本原理_第1张图片

Gmond(Ganglia monitoring daemon): 主要负责数据采集

Gmond可以理解为一个数据采集的Agent,最终会部署到每个需要监控的节点上。Gmond比较有意思的地方在于,既可以发送数据,又可以接受数据。Gmond采集到本机的数据后,可以把数据通过多播或单播的方式发送出去。单播比较容易理解,对应的节点会收到数据。多播,又称组播,同一组内的节点都会收到数据。

对应规模较小的集群,所以节点可以部署在同一个网段。如果使用多播方式,Gmond发送数据后,集群内所以的节点(包括自己)都会收到数据。这样,每个节点上都会有整个集群的监控数据。也就是说,通过访问任何一个节点都可以获取到整个集群的监控数据。如果节点个数很多,不能部署在同一个网段,可以将划分为多个集群。集群内部使用多播,集群之间使用单播。

Gmond使用XDR存储采集到的监控数据,并对外提供了数据查询的接口。通过访问制定的端口,可以获取到监控数据,监控数据传输时使用XML格式。

Gmetad(Ganglia Meta daemon):主要负责数据的存储

Gmetad用于轮询Gmond获取监控数据,并对数据进行入库。Gmond的数据是存储在内存中的,Gmetad通过制定端口获取数据,然后将数据写入RRD数据库中。

Gweb(Ganglia web): 负责监控数据的展示

Gweb调用RRD的接口获取并展示数据。


你可能感兴趣的:(c/c++编程,linux相关,ganglia)