注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

老和山小和尚

敬天爱人

 
 
 

日志

 
 
 
 

Ganglia 体系结构及功能介绍  

2008-08-06 15:25:06|  分类: 系统管理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Ganglia的体系结构

Ganglia的中文意思是神经中枢,相对其网络的大范围监控也算名副其实。Ganglia现在支持多部分操作系统(包括linux、unix、windows),曾经部署于2000个节点的网络。

名词说明

  • Metrics- 监控电脑的运行数据,这个词中文比较难翻译,英语中有度量的意思,下文我就不翻译,直接用原词。
  • Node - 一台电脑,或许拥有多个CPU,中文称之为节点。
  • Cluster - 一组节点,中文称之为簇。通常节点之间拥有达到G比特的高带宽,簇内通过组播协议,每个节点组播自己的数据,所以每个节点拥有整个簇的状态,这种冗余设计可以提高簇的鲁棒性。一般簇内节点为相同的系统和体系结构,由同一个管理员管理。
  • Grid - 一组簇,中文可称之为网格。网格的用处是在一个大范围内把各异构的簇通过宽带汇聚在一起。

       在文献3中,还有一个概念是Planetary-scale systems,也就是全球性的网络,一般部署于主干网的根节点。并且假定,网内的带宽不充裕,而且昂贵,经常有拥塞的情况出现。
      这是加州伯克利的一个GRID网络:http://monitor.millennium.berkeley.edu 你可以通过选择Grid或者Cluster来查看各类数据。

Ganglia的各种组成

功能 名称及配置文件 位置
数据采集器 名叫gmond(Ganglia MONitor Daemon)的服务程序,配置文件是/etc/gmond.conf 位于每个Node上
数据混合收集器 名叫gmetad(Ganglia METAdata Daemon)的服务程序,配置文件是/etc/gmetad.conf。它通过轮询收集gmond的数据,并聚合簇的各类信息,然后保存在本地rrdtool的数据库中 最好每个cluster都有一个gmetad,以便能构建多级网络
Web可视化工具 这是用PHP脚本实现的将数据可视化,并画出表格。可以是任何支持PHP、SSL和XML的web服务器。一般都用Apache2 web服务器
额外的高级工具 gmetric可以用来添加你需要监控的Node额外状态;gstat可以直接获得Ganglia的数据 每台需要这些功能的Node上

ganglia功能示意图

Ganglia 体系结构及功能介绍 - 120斤的大青蛙 - 老和山小和尚 

从图中可以看到,簇内通过UDP协议组播压缩的XML(XDR)数据,每个节点共享簇内所有节点的信息,当gmetad轮询簇内某个节点不成功时,也可以轮询其他节点。gmetad通过TCP协议发送簇内数据给上层gmetad节点。

gmond程序由多个线程组成:collect and publish thread线程用于采集节点的metrics并组播出去;listening thread线程用于监听组播端口,并把这些metrics保存于内存中的一个多级hash表;一组XML export threads线程组用于相应TCP请求,把簇内的metrics发送出去。gmond不会保存数据,仅仅是监听保存并相应发送数据。节点间通过heartbeat信号检测对方节点存活与否,如果一段时间内该节点没有广播metrics,我们视其宕机,而且每次启动时,会广播一个gmond启动时间,这时邻居节点收到以后就视其机器重启,会删除该节点已存的所有metrics。

gmetad周期性的想data source发送轮询包,并为每个源分配一个线程。采集的metrics,经由SAX XML进行解析,内置一个gperf的hash表,便于数据的处理,最后将处理好的数据存于RRDTools中。

metrics的组成

Metrics数据由gmond内置的程序或gmetric程序获得,一般以XDR形式压缩保存,保存格式为:(key,value),key为4字节,value为4-8字节。metrics的采集次数、频率和发送时间间隔均在Gmond.conf中定义,gmond维持一个采集表,每个metric都有其属性。

一个多簇异构Ganglia网络的数据流

Ganglia 体系结构及功能介绍 - 120斤的大青蛙 - 老和山小和尚 

图中有四种簇:

  • 黄色Cluster - 既有本地的Node,也提供前端显示的接口。它提供web服务器查看Ganglia的数据,其中不仅包含本地的Node(可选),也包括蓝色和绿色簇中的数据。
  • 淡绿色Cluster - 前端web服务显示,一般没有本地节点。
  • 蓝色Cluster - 这个簇中没有本地的数据收集器。所以这些节点将会共享所有数据(由于gmond是用多播来发送数据,所以实现共享比较容易),然后其中一个节点将数据发送给上层的数据收集器。黄色簇的gmetad服务收集并储存,如果没有保存,这些数据将会丢失。
  • 深绿色Cluster - 这个簇中拥有本地数据收集器和仓库。绿色节点中也是共享数据,但是由一个簇头节点收集数据,并储存,在被询问时通过TCP发送给上层的黄色簇。

一般性的组网建议:
1、网络由许多深绿色节点和有本地节点的黄色簇组成
2、网络由许多蓝色节点和没有本地节点的黄色簇组成

各类簇的配置

绿色簇的配置

针对gmond.conf 获得gmond默认配置

gmond -t >/etc/gmond.conf  

gmond.conf修改如下:

/* This configuration is as close to 2.5.x default behavior as possible    
 The values closely match ./gmond/metric.h definitions in 2.5.x */  
globals {    
    daemonize = yes
    setuid = yes
    user = nobody 
   debug_level = 0 
   max_udp_msg_len = 1472 
   mute = no 
   deaf = no  
   host_dmax = 0 /*secs */
   cleanup_threshold = 300 /*secs */ 
   gexec = no  
}
 /* If a cluster attribute is specified, then all gmond hosts are wrapped inside  
 * of a <CLUSTER> tag.  If you do not specify a cluster tag, then all <HOSTS> will
 * NOT be wrapped inside of a <CLUSTER> tag. */  
cluster {    
    name = "green"
    owner = "unspecified"
    latlong = "unspecified" 
     url = "unspecified"  
}   
/* The host section describes attributes of the host, like the location */
  host {
    location = "unspecified"
  }  
 /* Feel free to specify as many udp_send_channels as you like.  Gmond
   used to only support having a single channel. */ 
 udp_send_channel { 
   mcast_join = green_header 
   port = 8649
  }
  /* You can specify as many udp_recv_channels as you like as well. */
  udp_recv_channel {  
      port = 8649 
      family = inet4
  }  
  ...    

对于mcast_join这个参数,green_header是簇头节点的主机名,你可以指定ip。
然后重启gmond服务。
簇头节点中/etc/gmetad.conf需要添加下面一行:

data_source "green" localhost  

蓝色簇的配置

蓝色簇的配置与绿色簇类似,你只需要把簇的名字和簇头的名字设定好,然后重启所有节点的gmond服务。

黄色簇的配置

大部分配置与绿色簇类似,在/etc/gmetad.conf中需要加入以下几行:

data_source "yellow" localhost  data_source "blue" blue_header  data_source "green" green_header  

这样gmetad就会:
1、联系本地gmond,获取所有黄色节点的状态数据。
2、联系blue_header节点的gmond,获取所有蓝色节点的状态数据。这些数据将会保存在本地的rrdtool数据库中。
3、联系green_header节点,获取在gmetad收集的rrdtools的整合数据。注意这些数据并不会保存在黄色簇中的rrdtools中,所以如果前端web服务器刷新时,会重新向green_header请求更新的的数据。

此外,在/etc/gmetad.conf ,也可以加入Grid的名称:

gridname "Rainbow"  

现在Ganglia的网页会显示一个叫Rainbow的网络,其中有三个簇:yellow,green和blue。

一些高级话题

gmetric的使用

你可以添加固件:

gmetric --name firmware --value `lsattr -El sys0 -a modelname -F value` --type "string"    

添加磁盘的数目:

gmetric --name number_of_disks --value `lspv | wc -l` --type int32    

添加对某项数据的监控(其中name是现实的名字,value是由myget程序获取的,获取的数字类型是由type决定):

gmetric --name tpm --value `/usr/local/bin/myget` --type double    

上面统计都只是一次,如果你需要长久的显示,最好是把上面的语句每60秒执行一次。然后,过几分钟以后,这些数据就会在网页上显示出来了。
对于gmetric的更多了解,你可以看http://ganglia.wiki.sourceforge.net/ganglia_readme

这里有一些自定义的gmetric脚本可以参考:http://ganglia.sourceforge.net/gmetric/

使用gstat获取数据

gstat可以通过命令直接显示数据,如:

$ gstat  CLUSTER INFORMATION         
Name: demo_p505        
Hosts: 9  Gexec Hosts: 0   Dead Hosts: 0
Localtime: Wed Jun 21 17:51:05 2006 
There are no hosts running gexec at this time  

你也可以通过加参数获取更多的信息:

$gstat --all --single_line  CLUSTER INFORMATION 
Name: demo_p505
Hosts: 9  Gexec Hosts: 0   Dead Hosts: 0
Localtime: Wed Jun 21 17:56:29 2006    
CLUSTER HOSTS  Hostname
LOAD  CPU    Gexec   CPUs (Procs/Total) [     1,     5, 15min] [  User,  Nice, System, Idle, Wio]
daic4.aixncc.uk.ibm.com     4 (    0/   66) [  0.00,  0.00,  0.00] [   0.0,   0.0,   0.0,  99.9,   0.0] OFF
daic3.aixncc.uk.ibm.com     4 (    0/   82) [  0.00,  0.00,  0.00] [   0.0,   0.0,   0.1,  99.8,   0.1] OFF  
daic2.aixncc.uk.ibm.com     4 (    0/   57) [  0.00,  0.00,  0.00] [   0.0,   0.0,   0.1,  99.9,   0.0] OFF 
daivios1.aixncc.uk.ibm.com  4 (    0/   77) [  0.00,  0.00,  0.00] [   0.0,   0.0,   0.0,  99.9,   0.0] OFF  
dainim.aixncc.uk.ibm.com    4 (    0/   77) [  0.00,  0.00,  0.00] [   0.0,   0.0,   0.0, 100.0,   0.0] OFF 
dai6.aixncc.uk.ibm.com      4 (    0/   86) [  0.08,  0.03,  0.01] [   0.1,   0.0,   0.1,  99.5,   0.3] OFF 
daic1.aixncc.uk.ibm.com     4 (    1/   60) [  1.00,  1.02,  1.09] [   0.0,   0.0,   0.0, 100.0,   0.0] OFF  
daic5.aixncc.uk.ibm.com     2 (    0/   53) [  0.00,  0.00,  0.00] [   0.0,   0.0,   0.0,  99.9,   0.0] OFF  
daivios.aixncc.uk.ibm.com   4 (    1/   74) [  2.01,  2.09,  1.94] [   0.1,   0.0,   0.6,  99.2,   0.0] OFF  

参考文献

1、http://www-941.ibm.com/collaboration/wiki/display/WikiPtype/ganglia
2、http://ganglia.wiki.sourceforge.net/ganglia_documents
3、The Ganglia Distributed Monitoring System: Design, Implementation, and Experience. Matthew L. Massie, Brent N. Chun, and David E. Culler. Parallel Computing, Vol. 30, Issue 7, July 2004.
4、Wide Area Cluster Monitoring with Ganglia Federico Sacerdoti, Mason Katz, Matt Massie, David E. Culler. IEEE Cluster 2003 Conference, Hong Kong. December 2003.
5、ApacheconUS2007_ganglia_monitoring.ppt Slideshows and Talks on Ganglia,Presentation given at Apache Con 2007 by Brad Nicholes.

  评论这张
 
阅读(9471)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018