在上文 开源服务内部监控系统(一),简单介绍了一下开源监控系统Graphite。本篇将简单介绍一下颇有名气的Ganglia与个人的使用体验。从功能上讲,Ganglia远比Graphite强大。除了监控服务内部状态之外,Ganglia本身就能做到对服务器节点状态(包括CPU使用,load,memory占用,network占用)的整体监控。
Ganglia的架构
Ganglia是一个可扩展的,分布式监控系统。我google翻译了一下单词Ganglia,有神经节的意思,正如其名,Ganglia正是采用了层次化的设计思想为大规模的分布式集群而设计的服务感知系统。按官说介绍,ganglia可支持2000多个节点的集群的监控工作。
Ganglia采用XML数据格式,RRDtool作数据存储与绘图。上一篇提到的whisper类似,RRDtool同样都是采用固定文件大小的环形数据库。
Ganglia 主要包括三个部分:gmond,gmetad,ganglia web。
Gmond
Gmond是一个安装在被监控节点的监控代理。Gmond具有以下四点责能:
- 监控主机状态变化信息。
- 发布相关变化。
- 通过主播/单播方式监听其他ganglia节点状态,将它们保存在内存缓冲区中。
- 响应请求,以XML格式汇报集群状态。
默认情况下,gmond以多播的方式工作的,这样每个gmond能接收到集群所有节点的 metric数据。这是ganglia鲁棒性的一个重要实现,当任何一个监控节点挂了,gmetad可以切换到其他任意存活节点上拉取数据。
Gmetad
Gmetad 会定期从数据源收集数据,最终将metric数据存储在RRD存储引擎中,可以为Ganglia Web导出聚合后的XML数据。Gmetad的数据源可以是Gmond,也可以是Gmetad进程。数据源直接以ip形式配置,可以采用多个ip代表一个数据源的方式实现failover。正是因为每个Gmond收集了它所在集群的整个状态信息,所以Gmetad天然的能做到对集群状态数据聚合的功能。(这是Graphite所做不到的。)
Ganglia Web
顾名思义,Ganglia web是Ganglia系统的前端展现部份。Ganglia web是用php写的,依赖gmetad生成的图表。
Ganglia与自建服务的集成
Ganglia具有扩展性很强,使用者可以自定义metric发送给Gmond.
例如,Jmx是java开发者用于暴露服务内部状态的很好的工具,但它没有解决后续的问题,即数据的汇总与图表展现。很多文章都有提到jmxtrans这个解决方案,它本身也是用Java 实现的,以JSON作配置。使用可以在Gagnlia web上看到java服务的jvm内存使用与回收的报表。详细配置不表,其实我也没干过。感兴趣的话,很可以在网上找到关于如用采用此方案实现Graphite监控hadoop,flume,kafka,storm等集群的配置方法。
向ganglia加入自定义metric还有两种方法,一种是通过命令行的方式运行Gmetric,另一种是通过Ganglia提供的面向c和python的扩展模块,加入自定义的模块支持。
目前我们使用的方案是利用metrics库中的GangliaReporter工具类,向Gmond发送自义的Gmetric信息。 Metris库的pom如下定义:
<dependencies>
<dependency>
<groupId>com.codahale.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>${metrics.version}</version>
</dependency>
</dependencies>
对应Graphite,有GraphiteReporter。
个人体验
尽管本文主要是以服务开发者角度,介绍服务内部的状态的监控,但从文中可以以会得出,ganglia所做不仅于此,他可以方便的帮你监控服务以外的服务器节点的状态信息。而且他在大规模集群监控上的表现,使得Graphite就显得有点小打小闹。让我更看重的一点是,通过用户配置主动分组,可以将不同集群的节点归属到不同的Source。无需用户额外的开发工作,就可以将同个Source中的节点的状态信息整合,绘制到一张图表中。如下图所示,同一个集群中的47个结点的CPU使用、load等信息各自被汇总到一个图表中,而Graphite却无法做到。
说到缺点,首先让我感觉不爽的,是Ganglia web的界面,与Graphite的Tessera相比,就显得逊多了(可见一向注重功能与实用的后端开发工程师,也是认脸的)。最初使用时,也让人不知所措。Ganglia web采用php开发,也给我一种不知如何更好定制的感觉(可能还是我个人的语言偏见作祟)。
还有一个让我不爽的地方是,Ganglia依赖Gmond的做法,意味着,你每个节点被监控的前提是该节点上Gmond的安装与稳定运行。
总结
总的来说,Ganglia从功能上讲是远比Graphite强大的。但对比Graphite的简单易用,界面清爽,ganglia又显得有点过于复杂。所以对小规模的集群或者单机服务进行监控时,我更倾向于使用Graphite。
无论Ganglia还是Graphite都有一个共同的缺点,它们只是完成了监控的角色,但没有报警功能。所以如果只布署了Ganglia或者Graphite,大多数情况下,很可能是当发生故障一段时间之后,我们都浑然不知,等大错已经铸成之后,我们才会去看一下相应的图表,做一些事后分析。目前Ganglia已有与Nagios的整合方案,来解决这个问题。至于Graphite目前我还没找到类似的方案。这里面的原因,我觉得很可能是因为Ganglia更多被当作运维工具,得以得到“运维界”的重视。而Graphite更多是一种开发者角度的监督工具,与运维工具结合的机会就少得多。自然的,发现这个问题并愿意下足功夫解这个问题的强迫症患者并不多。
20150822首发于3dobe.com http://3dobe.com/archives/164/
iteye链接: http://quentinxxz.iteye.com/blog/2238830/
相关推荐
本篇文档详细介绍了基于Ganglia和Nagios这两种开源监控软件,构建在Hadoop开源云计算平台上的智能监控系统,并结合移动飞信软件实现云计算平台的实时监控。 在深入理解云计算监控技术的过程中,首先要明确监控的...
Ganglia是一款开源的分布式监控系统,主要用于高性能计算(HPC)环境中的资源监控。它能够高效地收集和传播集群内部各节点的状态信息,包括但不限于CPU利用率、内存使用情况、磁盘I/O等关键性能指标。Ganglia的核心...
Ganglia 是一种针对高性能计算系统,如集群和Grid的分布式监控系统。它的核心设计理念是分层结构,旨在联合多集群的联邦。Ganglia 使用基于多播的监听/宣告协议来监控集群内部的状态,并通过代表节点间的点对点连接...
Ganglia是一款开源的分布式监控系统,主要用于实时监控Linux和Unix集群的资源使用情况,包括CPU、内存、磁盘I/O、网络流量等关键性能指标。Ganglia-3.7.2是其在2015年发布的一个稳定版本,它提供了强大的数据收集、...
Ganglia 使用一种基于多播的监听/宣告协议来监控集群内部的状态,并通过代表性的集群节点之间的点对点连接树结构来联邦化集群并聚合它们的状态。它利用了XML进行数据表示,XDR实现紧凑、可移植的数据传输,以及...
Eagle的诞生背景是eBay内部Hadoop系统的快速发展,其庞大的节点数量和数据量使得现有监控工具(如zabbix、ganglia)无法有效处理和监控。从2007年到2015年,eBay的Hadoop系统规模增长显著,节点数从1-10增长到15,000...
Ganglia监控系统则用于全面了解每台服务器的资源利用率,帮助优化运维。 这个列表展示了人人网如何深度理解和充分利用开源软件,从API到内部实现原理,甚至源码细节,以构建高效、稳定和可扩展的在线服务。这些技术...
- **现状**:当前的监控系统往往面临监控面不足的问题,如未能全面覆盖内部网络、广域网络甚至竞争对手的情况。 - **改进方向**: - **扩大监控范围**:加强对内部网络、广域网络以及竞争对手的监控。 - **增强...
Eagle的设计目标是解决在大规模Hadoop生态系统中,传统监控工具如Zabbix和Ganglia无法有效处理海量指标和日志数据的问题。eBay在2013年底启动了Eagle项目,以应对其内部Hadoop集群的快速扩展,包括成千上万的节点、...
- **Ganglia**:一个集群监控系统,用于收集和展示各种性能数据。 #### 十一、总结 综上所述,维基百科的架构设计充分考虑了可扩展性、性能和成本效益。通过采用一系列先进的技术和最佳实践,维基百科成功地构建了...
- **内部状态监控**:深入监控Region状态、缓存状态、数据文件状态等,及时发现潜在问题。 - **管理工具**:开发专门的网页管理工具,方便管理员进行日常管理和操作。 #### 后期工作方向 - **数据稳定性**:进一步...
多年来,在开源领域开发了许多监视应用程序。 MRTG,Nagios,Cacti,Ganglia,Torrus,OpenNMS,Munin或收集的仅举几例。 它们每个都有自己的Web界面。 这些Web界面大多数是在几年前开发的,并未充分利用当今的Web...
- **Ganglia监控**:使用Ganglia监控Flume的运行状态,确保系统的稳定性和可靠性。 ### 5. 实时消息传递 - **Kafka内部架构**:Kafka是一种高吞吐量的分布式发布订阅消息系统,适用于实时数据管道和流处理应用。 ...
3. **测试工具**:可能会提到用于监控和衡量性能的工具,比如JMeter、Ganglia、Graphite或者自定义的监控脚本,这些工具能帮助收集吞吐量、延迟、错误率等关键指标。 4. **测试场景**:设计不同的工作负载来模拟...
- Chukwa和Ganglia:用于集群监控的工具。 围绕Hadoop的技术公司 Hadoop的开源特性和大数据处理能力吸引了许多公司和组织的支持和投资,其中包括: - Yahoo!:拥有大量运行Hadoop的服务器和CPU,使用Java和流APIs...
- **日志管理和监控**:使用工具如Ganglia、Nagios等来监控Hadoop集群的状态。 #### 八、案例分析 - **大数据分析**:利用Hadoop处理大规模的日志数据,进行用户行为分析。 - **搜索引擎**:通过Hadoop处理网页...
- **内部状态监控**:包括Region详细情况、读写状态与时延、缓存状态、数据文件监控等。 - **管理工具**:开发网页管理工具,方便进行集群管理和日常运维操作。 #### 九、总结 - **适用场景**:适合需要瞬间处理...
8. **工具使用**:介绍常用的Hadoop管理工具,如Hadoop命令行工具、Hadoop administration tools(如Hadoop fsadmin, dfsadmin等),以及监控工具Ambari、Ganglia和Nagios。 9. **最佳实践**:分享Hadoop集群的优化...
通过监控工具(如Hadoop Metrics2和Ganglia)收集Hadoop集群的性能指标,如CPU利用率、磁盘I/O、网络带宽和任务执行时间等。 5.2 性能瓶颈识别 通过分析监控数据,识别出影响系统性能的关键因素,如网络延迟、磁盘...