一、历史
Ganglia来自于加利福尼亚大学伯克利分校的“Millennium”项目,已经有10几年的历史。
二、简介
Ganglia是一个集群的性能指标(metrics)监控框架。跟同类框架相比,Ganglia功能更加强大,能提供“准实时”的性能指标数据。
Ganglia非常适合于大集群系统,在小集群系统中也适用。
Ganglia为了适合于大集群系统,跟别的监控框架的体系结构不太一样。
Ganglia适用的场景如下:
1)有一个计算机集群,你想要“准实时”地监控该集群,从中获取性能指标数据
2)你不反对在计算机集群的每个计算机节点上维护一份配置文件
3)计算机集群中的操作系统和网络支持“UDP多路广播”和“UDP点对点单播”
4)计算机集群由cluster集合组成,每个cluster包含一到多台计算机
三、构成
Ganglia由3类服务进程组成:gmond,gmetad,gweb。它们之间的关系是:互相独立,每类服务进程的运行都不依赖于其他类进程;互相合作,要使得Ganglia正常运行,这3类服务进程都必须得正常运行。
图1展示了这个关系。
图1
3.1、gmond
gmond安装和运行于计算机集群的每台计算机上,它使用的配置文件存储于该台计算机中,gmond进程与该台计算机的操作系统进行交互,获取性能指标数据。
在一个cluster中,每台计算机上的gmond进程都会与其他计算机上的gmond进程进行通信,发送自己所获取到的性能指标数据和接收其他gmond进程获取到的性能指标数据,通信采用“UDP多路广播”机制,由于一个cluster只有一个多路广播地址,最后的结果是:一个cluster中,每个gmond进程都维护一份整个cluster中每台计算机的性能指标数据。
gmetad进程想要获取某个cluster内所有计算机的性能指标数据,只需要与该cluster内的某个计算机上的gmond进程进行通信即可。
关于gmond的体系结构可见图2和图1。
图2
3.2、gmetad
一个gmetad进程要想获取一个cluster内所有计算机的性能指标数据,只要在gmetad进程所使用的配置文件内配置至少一条该cluster内计算机的地址信息即可。
允许运行多个gmetad进程,每个gmetad进程负责监控一部分cluster内的计算机的性能指标数据。
gmetad进程将获取得到的性能指标数据传递给RRDTool,由RRDTool将数据保存到硬盘中。
gmetad的体系结构可见图1。
3.3、gweb
一个gweb进程能够通过RRDTool获取性能指标数据,并将其通过Web UI的形式展现出来。gweb程序采用PHP语言编写,因而为了正常运行gweb进程,首先得运行支持PHP程序的Web Server,比如Apache Web Server。
gweb的体系结构可见图1。
四、章节内容介绍
第2章介绍了gmond,gmetad和gweb的安装和配置。
第3章介绍了可扩展性。
第4章详细地介绍了gweb的功能。
第5章介绍了如何获取扩展的性能指标数据。
第6章介绍了一些问题的解决方案。
第7章介绍了Ganglia与其他监控框架的集成。
第8章介绍了Ganglia对sFlow技术的支持。
第9章介绍了几个真实的Ganglia应用案例。