马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
对于监控系统,之前已经有过两个系列的文章,分别对Zabbix和Prometheus做了简要的架构介绍和部署方式详解。本文对于本人玩儿过的第三种分布式文件系统监控工具——Ganglia的使用理由、系统架构和集群部署作详尽的介绍。 概述Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的中文意思是神经中枢,现在支持多部分操作系统(包括linux、unix、windows),可支持2000个节点的网络监控(当然这不是上限,只是一个大集群使用的范例)。 Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。 为什么使用GangliaGanglia是一种分布式监控系统。ganglia的设计便是基于大型集群进行设计的。主要体现在数据的获取方式以及分层设计。主要有以下三个优点: - 部署的方便性:ganglia类似与nagios的部署方式会更简单,更方便。有利于后期的大规模扩张;
- 数据获取方式:Ganglia本身就是为集群监控进行设计的,这体现在其数据的获取方式(客户端主动推送)以及分层设计(node cluster grid);
- 通信方式以及冗余:Ganglia通过组播进行数据交互,配置得当,可以实现冗余避免单点故障。另外,同样由于组播,数据可以在客户机本地进行存放的(安装rrdtool)。
, w- I; O3 x9 T) _8 A2 d
Ganglia体系结构Ganglia底层使用RRDTool获得数据,Ganglia主要分为两个进程组件: - gmond(ganglia monitor deamon):组播包的发送和接受。发送本地信息,接受其他节点信息
- gmetad(ganglia metadata deamon):从监听节点轮询出数据,并对数据进行聚合、存储7 o0 _; J" L9 C, ]/ n
除这两个Daemon进程外,Ganglia还依赖其他三个组件提供可视化和数据持久化的服务: - Ganglia网页:提供ganglia的访问页面
- rrdtool: 数据存储以及提供画图功能
- Apache与php:网站功能,对ganglia提供的网页进行解析
* a/ _9 Y- ?. v" N2 k
其中,gmond运行在集群每个节点上,收集RRDTool产生的数据;gmetad运行在监控服务器上,收集每个gmond的数据。Ganglia还提供了一个PHP实现的web front end,一般使用Apache2作为其运行环境,通过Web Front可以看到直观的各种集群数据图表。 Ganglia的层次化结构做的非常好,由小到大可以分为node -> cluster -> grid,这三个层次: - 一个node就是一个需要监控的节点,一般是个主机,用IP表示。每个node上运行一个gmond进程用来采集数据,并提交给gmetad;
- 一个cluster由多个node组成,就是一个集群,我们可以给集群定义名字。一个集群可以选一个node运行gmetad进程,汇总/拉取gmond提交的数据,并部署web front,将gmetad采集的数据用图表展示出来;
- 一个grid由多个cluster组成,是一个更高层面的概念,我们可以给grid定义名字。grid中可以定义一个顶级的gmetad进程,汇总/拉取多个gmond、子gmetad提交的数据,部署web front,将顶级gmetad采集的数据用图表展示出来。' m( G8 v$ R/ R v5 H6 p
显然,这种方式非常灵活,可以实现多种结构的数据监控。由下图,我们可以清晰的看出这种层次化的结构,和不同的部署方式。
集群部署在这里,仅介绍ubuntu上的部署方式,因为很简单!只需要安装两个包:ganglia-monitor和ganglia-webfrontend。其中ganglia-webfrontend只需要安装在提供页面展示的服务器上,并且如果你的ubuntu没有PHP和Apache2环境的话,它也会自动帮你安装。 在这里我直接介绍多播(ganglia默认的方式,此外还支持单播)方式的集群部署,至于单机的方式,其实只要把ganglia-monitor和ganglia-webfrontend装在一台机器上就可以了。 集群环境gmond:4台(192.168.1.101、192.168.1.102、192.168.1.103、192.168.1.104)
3 S* P$ S5 A9 [gmetad + ganglia web:1台(192.168.1.104)0 s; |: `+ M* D0 v& V6 L
操作系统:Ubuntu 14.04 部署过程在192.168.1.101、192.168.1.102、192.168.1.103这三台仅运行gmond的节点上安装ganglia-monitor: sudo apt-get install ganglia-monitor . o) d$ Q- h! Z3 l
1" p! P/ W$ R3 r5 a) m
| ( C& d' C4 O+ V
|
在192.168.1.104这台包含所有ganglia服务的节点上安装gmetad、rrdtool、ganglia-monitor和ganglia-webfrontend,这个过程会默认为没有Apache和PHP的环境的系统安装Apache2和PHP: sudo apt-get install ganglia-webfrontend ganglia-monitor gmetad rrdtool 在ganglia-webfrontend安装完毕后,ganglia-webfrontend这个包默认会将Web相关的代码安装在”/usr/share/ganglia-webfrontend/”路径下,这样apache访问不到。因此,可以使用软链接,或者直接将目录移到”/var/www/”目录下: sudo ln -s /usr/share/ganglia-webfrontend/ /var/www/ganglia 或者: sudo mv /usr/share/ganglia-webfrontend/ /var/www/ganglia 配置配置gmond:打开/etc/ganglia/gmond.conf 修改 cluster name : cluster { name = "ganglia" owner = "root" latlong = "unspecified" url = "unspecified" } 配置gmetad:打开/etc/ganglia/gmetad.conf 添加数据源和网格名称: data_source "ganglia" localhost data_source "another source" 1.3.4.7 gridname "MyGrid" 启动 重启192.168.1.104的gmated和httpd: service gmetad restart
3 g) M7 T2 o0 }( S, Qservice httpd restart4 O7 ?7 L7 p( m- z- [" i
重启每个节点的gmond: service gmond restart 页面完成以上工作后,ganglia的部署就完成了,现在你可以在192.168.1.104上直接打开浏览器访问http://localhost/ganglia ,就能看到图形界面了,或者你可以通过IP直接访问,如果修改了端口记得加上新端口访问。
0 }. B5 s( K: F0 C$ P+ v* z |