针对分布式系统(例如云计算等)设计的可扩展监控系统:GangLia 简介
Ganglia是一个针对高性能分布式系统(例如,集群、网格、云计算等)所设计的可扩展监控系统。该系统基于一个分层的体系结构,并能够支持 2000个节点的集群。它允许用户能够远程监控系统的实时或历史统计数据,包括:CPU负载均衡、网络利用率等。Ganglia依赖于一个基于组播的监听 /发布协议来监控集群的状态。Ganglia系统的实现综合了多种技术,包括:XML(数据描述)、XDR(紧凑便携式数据传输)、RRDtool(数据存储和可视化)等。另外,它具有低单节点负载和高一致性的特点并能够适应不同的操作系统和处理器体系结构,目前呗世界上500个以上的集群所树勇。
Ganglia由两个独立的daemon、一个基于PHP的web前端和其它实用程序所组成。下面我们将分别进行介绍。
一、Gmond监控程序
Gmond监控程序(Ganglia Monitoring Daemon,Gmod)是一个组播守护进程,它运行在每一个被监控的节点上。该程序的安装并不依赖于网络文件系统(NFS文件系统)或者数据库服务器。
Gmond的功能主要以下四项:
1. 监控宿主机状态的改变
2. 报告相关的改变
3. 通过单播或组播来监控ganglia其它节点的状态
4. 对集群状态请求进行应答,该请求通过XML进行描述
Gmond中消息的传递包括如下两种方式:
1.使用UDP协议以外部数据表示(externaldata representation,XDR)格式采用单播或组播的方式传播宿主机状态
2. 通过TCP协议传递XML描述请求
二、Gmetad节点程序
Ganglia集群在集群代理节点之间使用一个基于P2P连接的树型结构来收集多个集群的状态。Ganglia在树结构的每一个节点上部署一个 Ganglia节点程序(Ganglia Meta Daemon,Gmetad),由该Gmetad所管理的子树代表一个Ganglia子集群,它定期地轮询子树中每个孩子的数据资源、解析收集到的XML 数据、存储数值、将易失性数据存储到轮转数据库(round-robindatabases)以及向客户端传送收集到的XML数据。这些数据来源包括:Gmond监控程序、某个集群、其它Gmetad节点程序或某一个集群集合。数据源通过IP地址来定位(可以使用多个IP来做失效备援)。
三、GangliaPHP Web前端
Ganglia PHP web前端提供了一种可视化动态监控集群的手段,它是一种让系统管理员有效监控集群状态的方法。web前端不仅仅是把XML树以HTML页面的方式来展现,而且能够以多种方式展现系统的历史数据。
Ganglia web前端是为了迎合系统管理员和用户的爱好而产生的。例如,用户可以查看过去几个小时、几天、几周、几个月甚至几年的使用率。Ganglia web前端可以以统计图的方式来显示内存的使用、磁盘的使用、网络统计数据、正在运行的处理器的数量以及其他Ganglia节点的状态。
Ganglia web前端依赖于Gmetad,Gmetad能够为前端提供数据。另外,默认情况下web前端将使用8651端口接收数据(更倾向于接收Ganglia XML树数据)。由于Ganglia web前端的实时性,因此任何对Ganglia数据的改变可以立刻被显示。由于该前端的强动态性,它需要到来的数据在每一个页面进行解析,因此该前端将消耗当量的资源。
Ganglia web前端由PHP脚本语言实现,使用Gmetad生成的图来显示历史信息,并已在各种安装有Apache webserver和PHP 4.1模块的Unix(主要是Linux)机上测试通过。
当前Ganglia最新版:3.3.1,下载位置:http://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/
官方wiki(非维基百科):http://sourceforge.net/apps/trac/ganglia
使用Ganglia来监控Hadoop集群:http://wiki.apache.org/hadoop/GangliaMetrics
Ganglia的安装于配置:http://sourceforge.net/apps/trac/ganglia/wiki/ganglia_configuration