Ganglia原理介绍

小牛牛 贡献于2015-03-24

作者 liuhuan  创建于2015-03-11 03:20:00   修改者liuhuan  修改于2015-03-17 00:36:58字数4802

文档摘要:Ganglia是UCBerkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu、mem、硬盘利用率,I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。看下ganglia监控的一个图:可以很只直观的观察系统的各个指标,特别是对于分布式系统来说,无疑非常重要,而且Hadoop,Hbase提供了集成了ganglia的配置文件。
关键词:

阅读导航 1 Ganglia的概述 2工作原理以及配置简介 1 Ganglia的概述 Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率,I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。 看下ganglia监控的一个图: 可以很只直观的观察系统的各个指标,特别是对于分布式系统来说,无疑非常重要,而且Hadoop,Hbase提供了集成了ganglia的配置文件。 2 工作原理以及配置简介 1)组成 在了ganglia的组成之前,先来看下一张图 从上图可以很直观的看到,一个监控系统大概包括: Gmond,gmetad,rrdtool,Apache,PHP以及一个展示的web 监控的集群节点的步骤如下: 第一步:在要收集的数据的每个节点安装gmond,主要用来收集节点的信息以及存储信息(这里的存储信息在后面会讲解) 第二步:只要部署在一台机器就可以了(部署在我们需要通过web访问的机器上),主要用来轮询收集gmond的信息,并以某种形式存储到磁盘上。 第三步:安装apache web服务器,以及php(由于gweb是php开发的),构建gweb的执行环境 第四步:安装gweb,以web的形式更清晰的展示刚刚收集的历史数据。 当然其中会用一些插件,后面会讲解怎么用以及怎么安装。   2)工作的简介 ①  gmond用于节点信息的收集和存储 收集:一般用于收集本节点,用gmond.conf的udp_rev_channel来配置 存储:并不是所有的gmond的都用来存储,可以找出其中的一台或者几台来存储即可,用gmond.conf的udp_send_channel来配置。 各个gmond节点之间的信息发送接收主要用udp协议 ②  gmetad 用于轮询gmond节点存储的信息 Gmetad可以配置轮询的gmond节点,通过source 参数配置。 这里的个gmond节点就是上面udp_send_channel所配置的节点,可以是hostname或者ip ③  rrdtool 用于存储数据,和画图 rrdtool把gmetad轮询收集到的数据持久化磁盘文件中,并且还可以利用这些数据画图,更好的展示这些数据 3) 各个组件的配置说明 u gmond 位置 /etc/ganglia/gmond.conf 配置 a.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的主机,则该主机节点需要向其他节点公布自身信息,并告知目前支持的指标标准。在多播模式下,由于任何一个节点都可以向集群内的其他节点请求发送元数据,因此该问题并不存在。然而,在单播模式下必须设置重发间隔。间隔值是两次重发之间的最少秒数 b.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。 c.host host section提供运行gmond主机的相关信息。目前只支持地址字符串属性。默认host section为: host {    location = "unspecified"  } location(文本格式) d.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。 e.udp_recv_channel udp_recv_channel {    mcast_join = 239.2.11.71    port = 8649    bind = 239.2.11.71  } 接受渠道. f.TCP Accept Channel TCP Accept Channel。TCP接收通道(TCP Accept Channel)是gmond节点创建向gmetad或其他外部轮询器汇报集群状态的通道。用户可以配置任意多选项。 默认TCP接收通道为: tcp_accept_channel {   port = 8649 } bind(IP;可选) 当指定该选项时,gmond将捆绑到指定的本地地址。 port(数字) gmong接收连接的端口号。 u  Gmetad Gmetad 这个程序负责周期性的到各个datasource收集各个cluster的数据,并更新到rrd数据库中。可以把它理解为服务端。Gmond 收集本机的监控数据,发送到其他机器上,收集其他机器的监控数据,gmond之间通过udp通信,传递文件格式为xdl。收集的数据供Gmetad读取,默认监听端口8649 ,监听到gmetad请求后发送xml格式的文件。可以把它理解为客户端。 gmetad默认将指标数据直接写入文件系统上的RRD文件,在有I/O限制的大型装置中,rrdcached充当gmetad和RRD文件之间的缓存,如下图 常用配置 gridname(文本格式) 能唯一标识网格的字符串。该字符串应该与gmond中所设置的标识符不同。在gmond.conf的 (at cluster { name = “XXX” })CLUSTER标识符中,用来表示gmond实例能收集到所有主机,而gridname属性则表示由GRID标识符指定的所有数据源,可以理解为在data_source中定义的一个集群集合 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文件在本地文件系统存储的基本目录。 u gweb gweb是最容易配置,也是需要配置最少就能工作的守护进程。实际上,无需改变gweb的任何默认配置,gweb就可以启动并运行功能齐全的Web客户端。 一个基于web的监控界面,通常和Gmetad安装在同一个节点上(还需确认是否可以不在一个节点上,因为php的配置文件中ms可配置gmetad的地址及端口),它从Gmetad取数据,并且读取rrd数据库,生成图片,显示出来。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档