ganglia-原理介绍(一)

1 Ganglia的概述

ganglia-原理介绍(一)

  Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率,I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

看下ganglia监控的一个图:

ganglia-原理介绍(一)

可以很只直观的观察系统的各个指标,特别是对于分布式系统来说,无疑非常重要,而且Hadoop,Hbase提供了集成了ganglia的配置文件。

2 工作原理以及配置简介

2.1 组成

  在了ganglia的组成之前,先来看下一张图

ganglia-原理介绍(一)

从上图可以很直观的看到,一个监控系统大概包括:

Gmond,gmetad,rrdtool,Apache,PHP以及一个展示的web

监控的集群节点的步骤如下:

第一步:在要收集的数据的每个节点安装gmond,主要用来收集节点的信息以及存储信息(这里的存储信息在后面会讲解)

第二步:只要部署在一台机器就可以了(部署在我们需要通过web访问的机器上),主要用来轮询收集gmond的信息,并以某种形式存储到磁盘上。

第三步:安装apache web服务器,以及php(由于gweb是php开发的),构建gweb的执行环境

第四步:安装gweb,以web的形式更清晰的展示刚刚收集的历史数据。

当然其中会用一些插件,后面会讲解怎么用以及怎么安装。

 2.2 工作的简介

ganglia-原理介绍(一)

1)gmond用于节点信息的收集和存储

收集:一般用于收集本节点,用gmond.conf的udp_rev_channel来配置

存储:并不是所有的gmond的都用来存储,可以找出其中的一台或者几台来存储即可,用gmond.conf的udp_send_channel来配置。

各个gmond节点之间的信息发送接收主要用udp协议

2)gmetad 用于轮询gmond节点存储的信息

Gmetad可以配置轮询的gmond节点,通过source 参数配置。

这里的个gmond节点就是上面udp_send_channel所配置的节点,可以是hostname或者ip

3)rrdtool 用于存储数据,和画图

rrdtool把gmetad轮询收集到的数据持久化磁盘文件中,并且还可以利用这些数据画图,更好的展示这些数据

2.3 各个组件的配置说明

  1)gmond

  位置  /etc/ganglia/gmond.conf

  配置

  Globals

   globals {
 	daemonize = yes
   	setuid = yes
   	user = nobody
   	debug_level = 0
   	max_udp_msg_len = 1472
   	mute = no
   	deaf = no
   	allow_extra_data = yes
   	host_dmax = 86400 /*secs. Expires (removes from web interface) hosts in 1 day */
   	host_tmax = 20 /*secs */
   	cleanup_threshold = 300 /*secs */
   	gexec = no
   	send_metadata_interval = 0 /*secs */
   }

 daemonize(布尔类型)

 当值为true时,gmond将在后台分散运行。当在守护进程管理器(如daemontool)下运行gmond时,将此值设置为false。

 setuid(布尔类型)

 当值为true时,gmond将user属性指定的特定用户的UID作为有效UID;当值为false时,gmond将不会改变其有效用户。

 debug_level(整数值)

 当值为0时,gmond将正常运行。当debug_level大于0时,gmond将在前台运行并输出调试信息。debug_level值越大,输出越详细。

 max_udp_msg_len(整数值)

 该值是gmond发送包所能包含的最大长度。一般情况下该值默认不变。

 mute(布尔类型):

 当值为true时,不管其他配置指令如何,gmond将不能发送数据。“单收”(mute)gmond节点只不向其他gmond守护进程发送数  据,但仍然会响应诸如gmetad的外部轮询器。

 deaf(布尔类型):

 当值为true时,不管其他配置指令如何,gmond将不能接收数据。在每个集群内拥有成千上万节点的大型网格中,或者在细致优化  的HPC网格中(例如充分利用CPU的空闲周期),为减少汇聚集群状态的相关开销,经常将普通的计算节点设置为单发。在这些  情形下,某些特点的节点被预置为单收,此时这些节点的性能指标将不会被测量,因为这些节点将不会用作网格的运算。因为这  些节点的任务是汇聚,所以它们的性能数据会“污染”集群内其他的功能部分。

 allow_extra_data(布尔类型)

 当值为false时,gmond将不会发送XML的EXTRA_ELEMENT和EXTRA_DATA部分。该值主要应用于用户使用自己的前端并希望  节省带宽时。

 host_dmax(以秒为单位的整数值)

 dmax是delete max的缩写。当值为0时,即使远程主机停止报告,gmond也不会从列表里删除该主机。如果host_dmax设置为正值,  当gmond在“host_dmax”秒内接收不到某台主机的数据,gmond将删除该主机。

 host_tmax(以秒为单位的整数值)

 tmax是timeout max的缩写,代表gmond等待一台主机更新的最长时间。因为消息可能在网络中丢失,所以如果在4倍的host_tmax时  间内接收不到某台主机的任何消息,gmond就认为该主机已经崩溃。

 cleanup_threshold(以秒为单位的整数值)

 gmond清除过期数据的最小时间间隔。

 gexec(布尔类型)

 当值为true时,gmond将允许主机运行gexec任务。这种方式需要运行gexecd并安装合适的验证码。

 send_metadata_interval(以秒为单位的整数值)

 该值设置gmond两次发送元数据包的时间间隔。元数据包是用来描述所有激活指标的数据包。该指令默认设置为0,表示gmond只  有在初始启动和收到其他远程运行的gmond节点请求时才会发送元数据包。如果向集群内添加一台运行gmond的主机,则该主机节  点需要向其他节点公布自身信息,并告知目前支持的指标标准。在多播模式下,由于任何一个节点都可以向集群内的其他节点请  求发送元数据,因此该问题并不存在。然而,在单播模式下必须设置重发间隔。间隔值是两次重发之间的最少秒数

 cluster

  cluster {
   	name = "unspecified"
   	owner = "unspecified"
  	 latlong = "unspecified"
  	 url = "unspecified"
  }

 每个 gmond守护进程会使用在 cluster section中定义的属性来报告它所属集群的信息 ,使用默认值系统即可正常工作。

 name(文本格式)

 指定集群名称。当轮询节点的集群状态的XML集合时,把该名称插入CLUSTER元素内。轮询该节点的gmetad会使用该值来命名存  储集群数据的RRD文件。该指令将取代gmetad.conf配置文件中指定的集群名称。

 owner(文本格式)

 指定集群管理员。

 latlong(文本格式)

 指定该集群在地区上的GPS坐标的经纬度。

 url(文本格式)

 指定携带集群特定信息(如集群用途和使用细节)的URL。

 host

 host section提供运行gmond主机的相关信息。目前只支持地址字符串属性。默认host  section为:

 host {
   location = "unspecified"
 }

location (文本格式)

 udp_send_channel

 UDP通道是通过udp_(send|receive)_channel section创建的。下面给出默认的UDP发送通道:

  udp_send_channel {
   	#bind_hostname = yes
   	mcast_join = 239.2.11.71
   	port = 8649
   	ttl = 1
  }

 bind_hostname(布尔类型;可选;多播或单播)

 通知gmond使用源地址解析主机名。

 mcast_join(IP;可选;仅多播)

 当指定该选项时,gmond将创建UDP套接字并加入由IP地址指定的多播组。该选项创建一个多播通道,并与host相互排斥。

 mcast_if(文本格式;可选;仅多播)

 当指定该选项时,gmond将发送来自指定接口(例如eth0)的数据。

 host(文本格式或IP;可选;仅单播)

 当指定该选项时,gmond将向已命名主机发送数据。该选项创建一个单播通道,并与mcast_join相互排斥。

 port(数字;可选;多播或单播)

 该选项指定gmond发送数据的端口号。如果未指定,则默认为端口8649。

 udp_recv_channel

 udp_recv_channel {
  	mcast_join = 239.2.11.71
   	port = 8649
   	bind = 239.2.11.71
 }

接受渠道. 

 TCP Accept Channel

 TCP Accept Channel。TCP接收通道(TCP Accept Channel)是gmond节点创建向gmetad或其他外部轮询器汇报集群状态的通  道。用户可以配置任意多选项。 

 默认TCP接收通道为:
 

tcp_accept_channel {
   port = 8649
 }

 bind(IP;可选)

 当指定该选项时,gmond将捆绑到指定的本地地址。

 port(数字)

 gmong接收连接的端口号。

 2)Gmetad

 Gmetad 这个程序负责周期性的到各个datasource收集各个cluster的数据,并更新到rrd数据库中。可以把它理解为服务  端。Gmond 收集本机的监控数据,发送到其他机器上,收集其他机器的监控数据,gmond之间通过udp通信,传递文件格式为xdl。  收集的数据供Gmetad读取,默认监听端口8649 ,监听到gmetad请求后发送xml格式的文件。可以把它理解为客户端。

 gmetad默认将指标数据直接写入文件系统上的RRD文件,在有I/O限制的大型装置中,rrdcached充当gmetad和RRD文件之间的缓  存,如下图

ganglia-原理介绍(一)

 常用配置

 gridname(文本格式)

 能唯一标识网格的字符串。

 data_source

 每个data_source由3个字段组成。第一个字段为唯一标识data_source的字符串;第二个字段为指定轮询间隔(单位:秒)的数字;  第三个字段为以空格分开的所要轮询数据的主机列表,这些地址以IP地址或DNS主机名的形式指定,并可能添加“:端口号”形  式的后缀,该端口号指明gmond的tcp_accept_channel所在位置。如果未指明端口号,gmetad将尝试连接tcp/8649

 setuid_username(UID)

 gmetad设置UID的用户名。默认为nobody 

 rrd_rootdir(路径)

 指定RRD文件在本地文件系统存储的基本目录。

 3)Gweb

 gweb是最容易配置,也是需要配置最少就能工作的守护进程。实际上,无需改变gweb的任何默认配置,gweb就可以启动并运行功  能齐全的Web客户端。

 一个基于web的监控界面,通常和Gmetad安装在同一个节点上(还需确认是否可以不在一个节点上,因为php的配置文件中ms可配  置gmetad的地址及端口),它从Gmetad取数据,并且读取rrd数据库,生成图片,显示出来。

ganglia-原理介绍(一)

关注 易学在线 公众号

每日更新大量优质技术文档
第一时间获知最新上架课程
与众多大数据猿分享与交流

DOIT.EDU 资料来自网络收集整理,如有侵权请告知

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 1月 7, 2021 9:45 上午
下一篇 1月 8, 2021 1:55 上午

相关推荐

wx