- 前言
- 为什么要写这本书
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第一部分 安全运维篇
- 第 1 章 Linux 服务器安全运维
- 第 2 章 Linux 网络安全运维
- 第 3 章 数据安全工具 DRBD、extundelete
- 第二部分 运维故障排查篇
- 第 4 章 Linux 系统运维故障排查思路
- 第 5 章 Linux 故障排查案例实战
- 第三部分 自动化运维篇
- 第 6 章 轻量级运维利器 pssh、pdsh 和 mussh
- 第 7 章 分布式监控系统 Ganglia
- 第 8 章 基于 nagios 的分布式监控报警平台 Centreon
- 第 9 章 通过 Ganglia 与 Centreon 构建智能化监控报警平台
- 第四部分 集群架构篇
- 第 10 章 高性能 Web 服务器 Nginx
- 第 11 章 高性能集群软件 Keepalived
- 第 12 章 千万级高并发负载均衡软件 HAProxy
- 第 13 章 构建高性能的 MySQL 集群系统
- 第 14 章 高性能负载均衡集群软件 HAProxy
7.8 Ganglia 在实际应用中要考虑的问题
7.8.1 网络 IO 可能存在瓶颈
在 Ganglia 分布式监控系统中,运行在被监控节点上的 gmond 进程消耗的网络资源是非常小的,通常在 1~2MB 之间,而 gmond 将收集到的数据仅保存在内存中,因此 gmond 消耗的网络资源基本可以忽略不计。但有一种情况,就是在采用单播模式下,所有 gmond 进程都会向一个 gmond 中央节点发送数据,而这个 gmond 中央节点可能存在网络开销,如果单播传输的节点过多,那么在中央节点上就会存在网络 IO 瓶颈。
另外,gmetad 管理节点会收集所有 gmond 节点上的监控数据,同时 Ganglia-Web 也运行在 gmetad 所在的节点上,因此,gmetad 所在节点的网络 IO 也会很大,可能存在网络 IO 瓶颈。
7.8.2 CPU 可能存在瓶颈
对于 gmetad 管理节点,它将收集所有 gmond 节点收集到的 UDP 数据包,如果一个节点每秒发送 10 个数据包,300 个节点每秒将会发送 3000 个,假如每个数据包 300B,那么每秒就有近 1MB 的数据,这么多数据包需要的 CPU 处理能力也会增加。
gmetad 在默认情况下每 15s 到 gmond 取一次数据,同时 gmetad 请求完数据后还要汇总到 XML 文件,还需要对 XML 文件进行解析,如果监控的节点较多,比如 1000 个节点,那么收集到的 XML 文件可能有 10~20MB 左右。如果按照默认情况每隔 15s 去解析一个 20MB 左右的 XML 文件,那么 CPU 将面临很大压力,而 gmetad 还要将数据写入 rrd 数据库,同时还要处理来自 Web 客户端的解析请求进而读 rrd 数据库,这些都会加重 CPU 的负载,因此在监控的节点比较多时,gmetad 节点应该选取性能比较好的服务器,特别是 CPU 性能。
7.8.3 gmetad 写入 rrd 数据库可能存在瓶颈
gmetad 进程在收集完成客户端的监控数据后,会通过 rrdtool 工具将数据写入到 rrd 数据库的存储目录。由于 rrd 拥有独特的存储方式,它将每个 metric 作为一个文件来存储,并且如果配置了数据采集的频率,gmetad 还会为每个采集频率保存一个单独的文件,这就意味着,gmetad 将 metric 值保存到 rrd 数据库的操作将是针对大量小文件的 IO 操作。假设集群有 500 个节点,每个节点有 50 个 metric,那么 gmetad 将会存储 25000 个 metric,如果这些 metric 都是每秒更新一次,这将意味着每秒有 25000 个随机写入操作,而对于这种写入操作,一般的硬盘是无法支撑的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论