集群监控系统Ganglia应用案例

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://chenguang.blog.51cto.com/350944/1330114

集群监控系统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

时间: 2024-09-13 04:14:46

集群监控系统Ganglia应用案例的相关文章

HBase 集群监控

为什么需要监控? 为了保证系统的稳定性,可靠性,可运维性. 掌控集群的核心性能指标,了解集群的性能表现. 集群出现问题时及时报警,便于运维同学及时修复问题. 集群重要指标值异常时进行预警,将问题扼杀在摇篮中,不用等集群真正不可用时才采取行动. 当集群出现问题时,监控系统可以帮助我们更快的定位问题和解决问题 如何构建 HBase 集群监控系统? 公司有自己的监控系统,我们所要做的就是将 HBase 中我们关心的指标项发送到监控系统去,问题就转换为我们开发,采集并返回哪些 HBase 集群监控指标项

如何在集群中安装Ganglia

如何在集群中安装Ganglia Ganglia 是 UC Berkeley 发起的一个开源实时监视项目,用于测量数以千计的节点,为云计算系统提供系统静态数据以及重要的性能度量数据.Ganglia系统基本包含三大部分: 1.gmond gmond运行在每台计算机上,它主要监控每台机器上收集和发送度量数据(如处理器速度.内存使用量等). 2.gmetad gmetad运行在cluster的一台主机上,作为web server,或者用于与web server进行沟通 3..ganglia web 前端

高性能的Linux集群监控之道

  监控是集群管理的核心任务.监控数据可用于调度任务.负载平衡.向管理员报告软硬件故障,并广泛地控制系统使用情况.监控信息必须在不影响集群性能的情况下获得.本文将讨论使用/proc文件系统和Java来获得监控数据的方法. Java在Linux集群中的应用 Java技术为集群管理开发者提供了许多解决问题的办法.Java是动态.灵活.可移植的,这些不寻常的特征使得它成为了在异构网络及平台上构造集群管理的理想基础. Java具有广泛的例程库,很容易处理IP协议,如TCP.UDP,并可在multi-ho

Kubernetes集群监控指南

本文讲的是Kubernetes集群监控指南[编者的话]本文讨论了 Kubernetes 对运维监控的改变,以及我们应该如何合理得监控一个由 Kubernetes 编排的容器化基础设施. [3 天烧脑式容器存储网络训练营 | 深圳站]本次培训以容器存储和网络为主题,包括:Docker Plugin.Docker storage driver.Docker Volume Pulgin.Kubernetes Storage机制.容器网络实现原理和模型.Docker网络实现.网络插件.Calico.Co

Hadoop YARN学习之监控集群监控Nagios(4)

doop YARN学习之监控集群监控Nagios(4) 1. Nagios是一个流行的开源监控工具,可以用来监控Hadoop集群. 2. 监控基本的Hadoop服务 调试好脚本后命名为chek_resource_manager.sh,并把它放在Nagios的插件目录中. 加载Nagios插件向hadoop-cluster.cfg添加如下信息 define command{ command_name check_resource_manager command_line /usr/lib64/na

海量图片系统集群分布式存储和负载均衡案例分享

对于Web服务器而言,用户对图片信息的访问是很消耗服务器资源的.当一个网页被浏览时,Web服务器与浏览器建立连接,每个连接表示一个并发.当页面包含多个图片时,Web服务器与浏览器会产生多个连接,同时发送文字和图片以提高浏览速度.因此,页面中图片越多Web服务器受到的压力也就越大. 一般小型网站是把所有页面和图片统一存放在一个主目录下,这样的网站对系统架构.性能要求都很简单.下面是原理图 一些稍有规模的网站都保存有大量图片资源.用户在访问这些站点网页时,网页中图片信息占到页面数据流量的大部分.由于

分布式监控系统ganglia配置文档

一.Ganglia的组件 Ganglia包括如下程序,他们之间通过XML格式传递监控数据,达到监控效果. Gmetad 这个程序负责收集各个cluster的数据,并更新到rrd数据库中. Gmond 收集本机的监控数据,发送到其他机器上.收集其他机器的监控数据,供Gmetad读取.默认监听端口8649 web front-end 一个基于web的监控界面,需要和Gmetad安装在同一个节点上,从Gmetad取数据,并且读取rrd数据库,生成图片,显示出来. 二.Ganglia的工作模式 Gang

分布式监控系统Ganglia,测试中的监控技术

我们在测试活动中,时常关注一些性能数据,这些数据从哪儿来?很显然,放在我们面前的第一道关卡便是监控技术,我们需要合理的,可以高度扩展和集成的监控系统,可以实时监控性能数据,并将他们用漂亮的方式展现出来,云时代背景下诞生了这么一些给力的工具,他们中有一些名字已经让大家足够熟悉了,Nagios,Gmond等,他们中还有一个强大的身影,就是今天给大家分享的Ganglia. Ganglia Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格.它是基于分层设计,它使用广泛的

集群监控_Ganglia使用入门

官网: http://ganglia.info/ http://ganglia.github.io/ http://metrics.dropwizard.io/3.1.0/getting-started/ Ganglia简介 Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点.每台计算机都运行一个收集和发送度量数据(如处理器速度.内存使用量等)的名为 gmond 的守护进程.它将从操作系统和指定主机中收集.接收所有度量数据的主机可以显示这些数据并且可以