下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

你所不了解的Ganglia

作者:课课家教育     来源: http://www.kokojia.com点击数:1214发布时间: 2019-02-21 09:58:54

标签: Ganglia开源项目监控程序

  今天小编想要给大家介绍一个开源集群监视项目——Ganglia,其主要的功能是用来监控系统的性能。大家对这个监控程序有什么了解的吗?不熟悉也没关系,在这里就来和小编一起来学习一下它的一些基础知识吧!

  Ganglia 是UC Berkeley(加州大学伯克利分校)发起的一个开源监视项目,它的运行消耗非常少的系统资源,官方称目前已有2000节点的cluster。设计初衷就是要做好分布式集群的监控,监控层面包括资源层面和业务层面,资源层面包括cpu、memory、disk、IO、网络负载等。至于业务层面由于用户可以很方便的增加自定义的metric,因此可以用于做诸如服务性能、负载、出错率等的监控,例如某web服务的QPS、Http status错误率。此外,如果和NagiOS集成起来还可以在某指标超过一定阈值时触发相应的报警。

  下图是Ganglia监控界面:

你所不了解的Ganglia_Ganglia_开源项目_监控程序_课课家 

  Ganglia组件

  Ganglia 监控套件包括三个主要部分:gmond,gmetad,和网页接口,通常被称为ganglia-web。

  gmond(Ganglia Monitor Daemon):运行在每个需要监控的节点上,通过UDP协议收集和发送数据(如处理器速度、内存使用量等)

  gmetad(Ganglia Metadata Daemon):通过tcp协议从cluster抓取数据,并保持倒rrdtoo的数据库

  Ganglia-web :顾名思义,他应该安装在有gmetad运行的机器上,以便读取RRD文件。 集群是主机和度量数据的逻辑分组,比如数据库服务器,网页服务器,生产,测试,QA等,他们都是完全分开的,你需要为每个集群运行单独的gmond实例。

  一般来说每个集群需要一个接收的gmond,每个网站需要一个gmetad。

  Ganglia的结构

  下列是官方网站的Ganglia结构图,在ClusterA、B、C中gmond进程将数据发送(单播或者多播)到某个或者多个gmond上(如果是单播就发生到确定的gmond上,如果是多播则每个gmond都可以接受cluster数据),gmetad.conf中配置了要监控的cluster(一个data_source配置就是一个cluster),gmetad进程将从配置的cluster抓取监控数据,并保持倒rrdtool数据库。

 

  cluster内数据发送有两种方式:单播和多播:

  单播要求配置cluster中收集数据的节点,这样所以gmond都发送数据到这台机器,然后gmetad从这台机器抓取监控数据。

  多播配置一个广播地址(必须是D类),每台机器都发送数据到其它gmond进程,每个gmond进程都接受其它进程的数据,在gmetad中可以配置cluster内任何一个或者多个gmond(如果配置多个,其中一起机器挂掉会使用第二台)抓取监控数据。

  Ganglia的优点

  1.自动收集数据

  集群内各个节点的信息收集可以通过ganglia系统自动的收集起来,这个收集是独立进行地。其通信性能都是经过良好设计和优化的。具体的机制是:周期性的将这些信息发送给gmond,这样信息就加入了ganglia监控系统。通过ganglia的监控机制完成监控数据的收集显示的功能。

  2.图形界面

  数据可以通过图形显示出来。通过登录Web服务器即可查看。目前可以通过该视图查看集群及单独节点的状态曲线。同时具有基本的排序机制,可以根据值降序或者升序排序。可以查看过去1小时 1天 1周 1年等时间段的状态曲线。

  3.数据库rrdtool存储了历史数据

  由于采用了rrd存储数据,这样我们不单可以查看当前的状态,还可以查看之前的状态历史,同时可以将metrics随时间的变化以曲线的方式变现表现出来。而单独的向文件写日志很难保存和方便地查看之前的历史记录。而且有可能使得日志文件很大。

  Ganglia存在的问题

  1.开销估计:网络 IO CPU

  只运行gmond进程的节点开销很小,通常需要1m左右内存,cpu大概1%不到,同时gmond只把数据保存在内存中,因此io开销可以忽略。同时向其他节点单播本身的信息本身的网络压力也不会很大。因此对于只运行gmond的节点来说,开销很小。 如果采用了unicast模式,主要的开销就会在各节点的gmond进程向中央节点发送的udp数据带来的网络开销,此外gmond和gmetad的通信,web服务也在该中央节点上进行。这样主要的瓶颈就在中央节点上,其网络 IO CPU的压力都会很大。

  2.使用的服务及端口以及依赖的库

  Ganglia的gmond进程使用了udp进行单播,默认端口8649,同时还有负责tcp监控的端口8651 8652 8650也会被使用,这些端口需要在集群内部打开,这些使用的端口可以进行配置。另外apache也需要一个端口提供服务,这个端口会被从外部访问,默认是80。

  3.同一个host的不同进程的相同Metirc可能混淆

  由于ganglia本身是根据host+metric_name来区分不同的状态参数的,也就是它无法区分同一host内的不同进程相同的名称的状态变量。但是对于单纯的一个状态量,虽然可能是多个进程的状态,但对它来说只能看到一个名称,所以当多个进程同时向它报告具有同一个名称的状态的value时,它无法区分出进程间的不同。如果要区分它们,就需要加入一个命名机制区分它们。

  以上这些知识点的学习,大家掌握了吗?如有问题可以留言小编哦。感谢大家的阅读,希望大家在阅读完这篇文章之后对学习Ganglia有所帮助。更多更全的IT学习网络课程尽在课课家教育网站,期待大家的到来。

赞(26)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程