集群监控系统Ganglia应用案例
集群监控系统Ganglia应用案例
——我们把集群系统投入生产环境后,这时就需要一套可视化的工具来监视集群系统,这将有助于我们迅速地了解机群的整体配置情况,准确地把握机群各个监控节点的信息,全面地察看监控节点的性能指标,使机群系统具有较高的管理性。监视系统的主要目标是从各个监控节点采集监控信息,如CPU温度、CPU利用率、用户数、进程数、内存利用率等,然后将获取的监控信息汇集起来,便于综合分析和处理,最后根据分析和处理的结果做出相应的决策。本文以占用系统资源最少的、开放源代码的Ganglia为平台,详细讲解了如何搭建一个具有更高可靠性的集群监控系统。
——Ganglia监控系统是由加州大学伯克利分校开发的,用于大规模的机群和分布式网格等高性能计算系统。基于XML技术的数据传递可以使系统的状态数据跨越不同的系统平台进行交互,采用简洁紧凑的XDR方式,实现监控数据压缩和传输”。
0.Ganglia组成及原理
——Ganglia主要由gmetad和gmond两部分组成:gmetad主要负责监控数据的汇集,每隔15秒会轮询gmond,并向下层节点发送和接收用户所需的监控信息,并对数据出错做出相应处理,最后使用RRDtool将这些信息存储在数据库,并通过Apache Web服务器显示它收集的信息。gmond则工作在每个集群节点上,主要负责监控节点信息的获取,相当于Ganglia的监视守护进程。
——gmond主要负责监控节点信息的获取。首先,初始化gmond.conf文件配置项信息,同时分配监控信息存储空间。其次,调用ganglia_metric_cb_define("mem_total",mem_total_func),定义监控信息的采集项,"mem_total"表示信息采集项,mem_total_fun为信息采集函数,该采集函数从/proc中读取所需采集项信息,所有获取的监控信息以hash链表的形式存储。然后,在每个gmond节点上创建UDP通信的Socket端口,并调用connect建立各gmond节点间的通信通道,并启动监听进程process_udp_recv_channel,通过recvfrom接收其他各监控节点发来的监控信息。
——Ganglia_udp_send_message通过调用write向各个监控节点发送监控信息,监控信息的传输采用XDR数据流格式,每个监控节点包含了区域内所有其他节点的监控信息,如图所示。当更新周期到来时,各监控节点gmond将其获取的监控信息发给gmetad端。
图1 Ganglia监控体系结构
1 安装准备
——上文我们简单讲解了Ganglia是如何工作的,下面将讨论Ganglia Web的安装配置。首先,在集群节点上安装gmond,然后在集群节点管理器上安装gmetad和Ganglia Web软件包。准备工作如下:
安装Apache、PHP。Ganglia Web软件包需要Apache、PHP支持,具体安装方法我们在第一章已详细讨论过。安装RRDtool。RRDtool可以绘出有用的图表,用来显示处理的数据。具体安装方法我们在讨论Ntop时,已详细讲述。
2 集群节点管理器部署Ganglia
——在准备工作完成以后,我们首先需要在http://sourceforge.net/projects/ganglia/files/下载最新软件(目前为3.6)进行安装,为方便安装可以选择RPM包方式进行安装,必须安装的软件包名称为:ganglia-gmetad、ganglia-gmond、ganglia-web以及ganglia-devel。
注意:在安装上述RPM包时,如果有的系统需要强制安装,就要用到—nodeps参数。
1).配置Ganglia
——安装了这些软件,下面是配置Ganglia的时候了,这里从集群节点管理器上的gmetad和gmond开始。在/etc/ganglia目录下分别有它们的配置文件:gmetad.conf和gmond.conf。
——在集群节点上的/etc/ganglia/gmetad.conf文件,只须包含指定集群名称和集群内部节点名称,例如:
Data_source "my cluster" localhos node1 node2 node3
“my cluster”代表集群名称,并设置了localhost(集群节点管理器)和3个名为node1、node2和node3的节点。由于Ganglia通信使用多播(在配置文件gmond.conf中定义多播地址为:239.2.11.71),所以列表中的一个节点失败(有时候很可能是用户修改了节点名称)不会影响它连接的下一个节点,因此我们不必在集群中为每个data_source项指定每台主机的信息。
上述配置完成后,记得要重启gmetad服务:
#service gmetad restart
2).在集群节点上安装最新的ganglia-gmond包并配置gmond
#vi /etc/gmond.conf
找到以下部分并按照所给出的例子进行配置:
tcp_accept_channel {
port = 8651/*注释:此为端口号,通过它来传送系统信息。注意要和服务器端监听的端口一致。*/
acl {
default = "deny"
access {
ip = 192.168.X.X /*注释:这里是服务器的IP地址 */
mask = 32
action = "allow"
}
重启gmond服务
#service gmond restart 完成
注意:在对gmond.conf和gmetad.conf文件做了修改或是修改了节点计算机名都需要重启这两个进程。
3).测试gmond进程
——我们可以通过telnet来测试gmond是否工作正常,输入如下命令,如图2所示。
#telnet 127.0.0.1 8651
图2测试gmond
——此时按下回车,将通过端口8651发送XML代码到集群节点管理器上的gmond守护进程,而gmetad守护进程使用RRDtool将这些信息存储在/var/lib/ganglia/rrds目录下。需要注意的是,rrds目录下及子目录比较多,如果监控的集群节点数大于50个节点,建议将此目录放在内存文件系统上,以减小磁盘I/O。如果告知gmond压缩的XML数据(在/etc/ganglia/gmond.conf文件中定义),将需要使用netcat来解压缩该XML数据,使其可以识别。命令为:nc localhost 8651 |gunzip。
4).节点机软件安装
——在部署节点时,不需要安装软件,仅仅执行以下命令将文件复制过去即可。
pscp /usr/sbin/gmond node1:/usr/sbin/gmond
psh node1 mkdir -p /etc/ganglia/
pscp /etc/ganglia/gmond.conf node1:/etc/ganglia/
pscp /etc/init.d/gmond node1:/etc/init.d/
pscp /usr/lib64/libganglia-3.1.7.so.0 node1:/usr/lib64/
pscp /lib64/libexpat.so.0 node1:/lib64/
pscp /usr/lib64/libconfuse.so.0 node1:/usr/lib64/
pscp /usr/lib64/libapr-1.so.0 node1:/usr/lib64/
pscp -r /usr/lib64/ganglia node1:/usr/lib64/
psh node1 service gmond start
5).添加Ganglia页面到Apache
——ganglia-webfront这个包默认将Web相关的代码安装在“/usr/share/ganglia-webfrontend/”路径下,这样Apache访问不到。可以直接将目录移到“/var/www/”目录下,或修改Apache的DocumentRoot路径,一旦完成修改需要重启Apache。
测试是否成功,可以在浏览器地址栏里输入http://localhost/ganglia,如图3和图4所示。
图3Ganglia页面测试结果1
图4Ganglia页面测试结果2
6).Ganglia Web软件包
——Ganglia Web允许你查看存储在RRDtool循环数据库中的性能度量的快照。Ganglia Web 软件包分成两部分:标题和节点快照,如图5和图6所示。下面结合一个集群的实例进行讲解。
图5 标题
图6节点快照
——默认情况下,软件包使用Full View显示集群信息,单击 PhysicalView链接以便查看不同格式的相同数据。如果需要刷新数据,单击Get Fresh Data按钮,默认的刷新时间是300s,可以编辑config.php文件自行修改。在Last下拉列表中可以选择长达一年的有价值数据。Metric下拉列表中可以选取手机的性能度量,默认的是load_one,它代表集群节点上的一分钟平均负载(Load Average)。除此之外有bootime、byte、cpu、disk、lastsync、mem、network、nfs、swap等度量信息。
3.DEMO:
下面为大家演示如何安装配置Ganglia
实战效果视频请大家浏览这篇文章 http://chenguang.blog.51cto.com/350944/816547
4.总结
——以上内容详细介绍了Ganglia软件包的架构、安装方法以及Ganglia Web的配置,在长期使用中,笔者发现Ganglia也存在一些问题,例如:没有实现对被监控数据依权限查看;只有监视而没有必需的控制功能;没有实现更有弹性的、依据用户策略监控数据的选择性提取和汇集等问题。
本文出自 “李晨光原创技术博客” 博客,请务必保留此出处http://chenguang.blog.51cto.com/350944/1330114
集群监控系统Ganglia应用案例的更多相关文章
- HBase 集群监控系统构建
HBase 集群监控系统构建 标签(空格分隔): Hbase 一, 集群为什么需要监控系统 总的来说是为了保证系统的稳定性,可靠性,可运维性.具体来说我认为有以下几点: 掌控集群的核心性能指标,了解集 ...
- 完美集群监控组合ganglia和nagios
Ganglia是伯克利开发的一个集群监控软件.可以监视和显示集群中的节点的各种状态信息,比如如:cpu .mem.硬盘利用率, I/O负载.网络流量情况等,同时可以将历史数据以曲线方式通过php页面呈 ...
- vivo 容器集群监控系统架构与实践
vivo 互联网服务器团队-YuanPeng 一.概述 从容器技术的推广以及 Kubernetes成为容器调度管理领域的事实标准开始,云原生的理念和技术架构体系逐渐在生产环境中得到了越来越广泛的应用实 ...
- 第2节 storm路由器项目开发:8 - 9、集群监控软件ganglia的安装和使用
Ganglia监控Hadoop集群的安装部署 详情请参见 http://boendev.iteye.com/blog/1750615 一. 安装环境 CentOS6.5x86_64 安装gmetad的 ...
- 【Ganglia】集群监控系统搭建
参考博客 www.cnblogs.com/atomicbomb/p/6726119.html 操作系统 centos7 机器两台 一. 配置软件环境 操作步骤: 使用yum安装方式安装所需基础依赖包 ...
- Zookeeper Monitor集群监控开发
随着线上越来越多的系统依赖Zookeeper集群.以至于Zookeeper集群的执行状况越来越重要.可是眼下还没有什么好用的Zookeeper集群监控系统(淘宝开源了一个Zookeeper监控系统,可 ...
- 断路器Hystrix与Turbine集群监控-Spring Cloud学习第三天(非原创)
文章大纲 一.Hystrix基础介绍二.断路器Hystrix简单使用三.自定义Hystrix请求命令四.Hystrix的服务降级与异常处理五.Hystrix的请求缓存与请求合并六.Hystrix仪表盘 ...
- Kafka 集群消息监控系统:Kafka Eagle
Kafka Eagle 1.概述 在开发工作当中,消费 Kafka 集群中的消息时,数据的变动是我们所关心的,当业务并不复杂的前提下,我们可以使用 Kafka 提供的命令工具,配合 Zookeeper ...
- 理解OpenShift(7):基于 Prometheus 的集群监控
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
随机推荐
- 对象生命周期及crud操作
1. 对象状态及生命周期 瞬时状态: 持久状态: 游离状态: 2. new->save->close->update public void testSave(){ Session ...
- PLSQL_性能优化工具系列02_SQL Tuning Health-Check Script (SQLHC)
2014-08-23 Created By BaoXinjian
- DrawTools(画图工具)原始版本
上一篇文章一个优秀的C#开源绘图软件 DrawTools中详细的介绍了DrawTools的几种演化的较高版本的软件的特色与功能. 这篇文章,将介绍一下这款软件的成名版本, 下载地址DrawTool_O ...
- purple-class2-默认选项切换
ylbtech-class:purple-class2 A, 返回顶部 1,默认选项切换 #region 默认选项切换 public delegate IList<SelectListItemI ...
- Guava 12-数学运算
范例 int logFloor = LongMath.log2(n, FLOOR); int mustNotOverflow = IntMath.checkedMultiply(x, y); long ...
- jQuery实现的美观的倒计时实例代码
<!DOCTYPE html><html><head><meta charset=" utf-8"><meta name=&q ...
- linux 挂载(转载)
From:http://forum.ubuntu.org.cn/viewtopic.php?t=257333 用linux,就一定要用linux的方式去思维.嗯,说的容易做起来难.我的D盘哪去了?恐怕 ...
- JS 中的 Window 对象
窗口对象的属性和方法: 在js最外层写的function可以还可以理解为window对象的一个方法.定义的变量也可以称之为window对象的一个属性.例如:window.alert("--- ...
- mysql 按年度、季度、月度、周、日SQL统计查询
创建Table CREATE TABLE `test` ( `cdate` datetime DEFAULT NULL, `id` ) DEFAULT NULL, `name` ) DEFAULT N ...
- ASPxGridView改变列颜色
protected void ASPxGridView1_HtmlDataCellPrepared(object sender, ASPxGridViewTableDataCellEventArgs ...