1 Ganglia基本原理
在Hadoop产生之前就有Ganglia,他是为集群系统监控而生。Hadoop利用Ganglia的接口,从而实现了对Ganglia的兼容。
1.1 gmond
分布在各个节点上的监控进程,搜集本节点的监控信息。针对Hadoop监控,可以采用同样的协议向gmond服务发送Hadoop的监控信息。
1.2 gmetad
相当与集群中的中心节点,主动拉取各个节点上收集到的监控信息。可以设置多层的gmetad,这样形成一个联邦系统,从而减少gmeta本身的压力。一个gmeta最多大概能承受500个节点的信息上报,数目过多会造成gmeta节点本身性能下降。
gmetad中存储监控信息的方式是rrd为后缀名的文件,每个监控指标有一个文件相对应。
2 Ganglia的网络通信方式。
1.1 默认的Multicast
每个集群(Host Cluster)中的每个节点采用同一个主播地址,这样监控信息可以被任何一台机器看到。好处是节省带宽,和不存在单点故障(因为gmetad只需要从主播地址取数据就行了),但是需要Hub这样的硬件支持,有些switch是不支持主播地址的。在云服中,S3和阿里云等可能也不支持主播。
gmetad从主播地址拉取监控信息之后,将监控信息交给RRDtool这个类,负责向磁盘中写rrd文件。
gweb模块通过网页的方式,读取rrd文件,生成监控图表。
1.2 单播unicast
于主播方式唯一不同的地方是所有的节点先将监控信息send到一个中心节点,图中为node1~node3将监控信息主动推到node4.
之后gmetad主动拉取gmond4上汇总的监控信息,从而实现rrd文件的更新。
3 安装方式
在centos的repo中已经有比较稳定的Ganglia版本,因此我们可以直接通过yum来安装。
在server侧(这里我们采用单播方式,gmetad和Node4上的gmond同时装在一台机器上了)同时安装gmetad