Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率,I/O负载、网络流量状况等,经过曲线很容易见到每一个节点的工做状态,对合理调整、分配系统资源,提升系统总体性能起到重要做用。php
看下ganglia监控的一个图:前端
能够很只直观的观察系统的各个指标,特别是对于分布式系统来讲,无疑很是重要,并且Hadoop,Hbase提供了集成了ganglia的配置文件。web
在了ganglia的组成以前,先来看下一张图数据库
从上图能够很直观的看到,一个监控系统大概包括:apache
Gmond,gmetad,rrdtool,Apache,PHP以及一个展现的web服务器
监控的集群节点的步骤以下:网络
第一步:在要收集的数据的每一个节点安装gmond,主要用来收集节点的信息以及存储信息(这里的存储信息在后面会讲解)app
第二步:只要部署在一台机器就能够了(部署在咱们须要经过web访问的机器上),主要用来轮询收集gmond的信息,并以某种形式存储到磁盘上。tcp
第三步:安装apache web服务器,以及php(因为gweb是php开发的),构建gweb的执行环境分布式
第四步:安装gweb,以web的形式更清晰的展现刚刚收集的历史数据。
固然其中会用一些插件,后面会讲解怎么用以及怎么安装。
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轮询收集到的数据持久化磁盘文件中,而且还能够利用这些数据画图,更好的展现这些数据
1)gmond
位置 /etc/ganglia/gmond.conf
配置
Globals
[plain] view plain copy
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
[plain] view plain copy
每一个gmond守护进程会使用在cluster section中定义的属性来报告它所属集群的信息,使用默认值系统便可正常工做。
name(文本格式)
指定集群名称。当轮询节点的集群状态的XML集合时,把该名称插入CLUSTER元素内。轮询该节点的gmetad会使用该值来命名存 储集群数据的RRD文件。该指令将取代gmetad.conf配置文件中指定的集群名称。
owner(文本格式)
指定集群管理员。
latlong(文本格式)
指定该集群在地区上的GPS坐标的经纬度。
url(文本格式)
指定携带集群特定信息(如集群用途和使用细节)的URL。
host
host section提供运行gmond主机的相关信息。目前只支持地址字符串属性。默认host section为:
[plain] view plain copy
location(文本格式)
udp_send_channel
UDP通道是经过udp_(send|receive)_channel section建立的。下面给出默认的UDP发送通道:
[plain] view plain copy
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
[plain] view plain copy
接受渠道.
TCP Accept Channel
TCP Accept Channel。TCP接收通道(TCP Accept Channel)是gmond节点建立向gmetad或其余外部轮询器汇报集群状态的通 道。用户能够配置任意多选项。
默认TCP接收通道为:
[plain] view plain copy
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文件之间的缓 存,以下图
经常使用配置
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数据库,生成图片,显示出来。