用户工具

站点工具


howto:g:gangliainit

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
howto:g:gangliainit [2009/12/18 10:09]
chifeng
howto:g:gangliainit [2009/12/18 10:13] (当前版本)
chifeng
行 1: 行 1:
 +====== Ganglia实时监察云台 ======
 +
 +===== 概述 =====
 +
 +==== Ganglia的组件 ====
 +Ganglia包括如下程序,他们之间通过XML格式传递监控数据,达到监控效果。
 +
 +**Gmetad**
 +这个程序负责收集各个cluster的数据,并更新到rrd数据库中。
 +
 +**Gmond**
 +收集本机的监控数据,发送到其他机器上。收集其他机器的监控数据,供Gmetad读取。默认监听端口8649
 +
 +**web front-end**
 +一个基于web的监控界面,需要和Gmetad安装在同一个节点上,从Gmetad取数据,并且读取rrd数据库,生成图片,显示出来。
 +
 +
 +
 +==== Ganglia的工作模式(单播和多播) ====
 +Ganglia的收集数据工作可以工作在单播(unicast)或多播(multicast)模式下,默认为多播模式。
 +
 +单播:发送自己收集到的监控数据到特定的一台或几台机器上,可以跨网段
 +
 +多播:发送自己收集到的监控数据到同一网段内所有的机器上,同时收集同一网段内的所有机器发送过来的监控数据。因为是以广播包的形式发送,因此需要同一网段内。但同一网段内,又可以定义不同的发送通道。
 +
 +
 +
 +===== 安装过程 =====
 +
 +==== 安装 ====
 +
 +==== 配置 ====
 +在此我们假定gmond工作在多播模式,并且有一个Cluster1的集群,里面有10台服务器(从host1到host10),在同一个网段内。
 +=== gmetad.conf配置解释 ===
 +<​code>​
 +data_source "​Cluster1"​ host1 host2
 +rrd_rootdir "/​var/​lib/​ganglia/​rrds"​
 +</​code>​
 +data_source参数定义了集群名字,以及集群中的节点。由于采用multicast模式,每台gmond节点都有本cluster内节点机器的所有监控数据,因此不需要把所有节点写入data_source中。建议写入不低于2个,在host1节点死机的时候,会自动找host2节点取数据。
 +
 +rrd_rootdir参数定义了rrd数据库的存放路径,gmetad收集到监控数据后,会更新到该目录下的对应的rrd数据库中。
 +
 +=== gmond.conf ===
 +<​code>​
 +globals {
 +  daemonize = yes        #​以后台的方式运行
 +  setuid = yes
 +  user = nobody ​         #​运行gmond的用户
 +  debug_level = 0        #​调式级别
 +  max_udp_msg_len = 1472
 +  mute = no              #​哑巴,本节点将不会再广播任何自己收集到的数据到网络上
 +  deaf = no              #​聋子,本节点将不再接收任何其他节点广播的数据包
 +  allow_extra_data = yes
 +  host_dmax = 0 /*secs */
 +  cleanup_threshold = 300 /*secs */
 +  gexec = no             #​是否使用gexec
 +  send_metadata_interval = 0
 +}
 +
 +cluster {
 +  name = "​Cluster1" ​    #​本节点属于哪个cluster
 +  owner = "​chifeng" ​    #​谁是该节点的所有者
 +  latlong = "​unspecified" ​  #​在地球上的坐标,经度、纬度?
 +  url = "​unspecified"​
 +}
 +
 +host {
 +  location = "​unspecified" ​ #位置?
 +}
 +
 +udp_send_channel {       #​udp包的发送通道
 +  mcast_join = 239.2.11.71 ​  #​多播,工作在239.2.11.71通道下。如果使用单播模式,则要写host = host1,单播模式下也可以配置多个udp_send_channel
 +  port = 8649            #​监听端口
 +  ttl = 1
 +}
 +
 +udp_recv_channel {           #​接收udp包配置
 +  mcast_join = 239.2.11.71 ​  #​同样工作在239.2.11.71通道下
 +  port = 8649                #​监听端口
 +  bind = 239.2.11.71 ​        #​绑定
 +}
 +
 +tcp_accept_channel {
 +  port = 8649               #​通过tcp协议监听的端口,远端可以通过链接8649端口得到监控数据
 +}
 +</​code>​
 +=== config.php ===
 +<​code>​
 +$gmetad_root = "/​var/​lib/​ganglia"; ​   #​gmetad写入的rrd数据库的路径
 +$rrds = "​$gmetad_root/​rrds";​
 +
 +$ganglia_ip = "​localhost"; ​           #​gmetad服务器的地址
 +$ganglia_port = 8652;                 #​gmetad服务器的交互式提供监控数据端口
 +</​code>​
 +
 +==== 发布 ====
 +
 +==== 注意 ====
 +
 +===== TODO =====
 +==== 问题:​集群的理解 ====
 +当前是奇怪的集群关系:​
 +
 +{{http://​openbookproject.googlecode.com/​files/​2009-12-04-153305_742x562_scrot.png}}
 +
 +
 +相关配置:​
 +  * 监控主机 gmetad.conf
 +<code bash>
 +...
 +data_source "​ZeorCluster"​ localhost
 +data_source "​KISdecKUPP"​ proxy sso pyk dbmain staff ml svnmain trac0 trac2 wiki
 +gridname "​KuppGrid"​
 +</​code>​
 +  * 监控主机 gmond.conf
 +<code javascript>​
 +...
 +cluster { 
 +  name = "​ZeorCluster" ​
 +  owner = "​ZeorCluster" ​
 +  latlong = "​unspecified" ​
 +  url = "​unspecified" ​
 +
 +host {   
 +  location = "​minitor.s.kingsoft.net"  ​
 +
 +</​code>​
 +  * 监控目标机sso:​ gmond.conf
 +<code javascript>​
 +cluster { 
 +  name = "​KISdecKUPP" ​
 +  owner = "​kspeg" ​
 +  latlong = "​unspecified" ​
 +  url = "​unspecified" ​
 +
 +host { 
 +  location = "​sso.s.kingsfot.net" ​
 +
 +</​code>​
 +  * 监控目标机sso:​ gmond.conf
 +<code javascript>​
 +cluster { 
 +  name = "​KISdecKUPP" ​
 +  owner = "​kspeg" ​
 +  latlong = "​unspecified" ​
 +  url = "​unspecified" ​
 +
 +host { 
 +  location = "​proxy.s.kingsoft.net" ​
 +
 +</​code>​
 +
 +
 +设想是::
 +  * 将所有无关系的主机收集到 **ZeorCluster**
 +  * 将所有关键业务主机规整到 **KISdecKUPP**
 +
 +{{http://​openbookproject.googlecode.com/​files/​2009-12-04-162456_383x588_scrot.png}}
 +
 +结果却....
 +
 +
 +核心问题是 在 Ganglia 中:
 +  * Grid
 +  * data_source
 +  * gmond
 +以上三者的关系?​ 在俺来看:​
 +  * gmond 是监察客户端,​代表一个主机
 +  * data_source 就是集群声明,​使用同一 data_source 名称的所有 gmond 就聚合成一个集群
 +  * Grid 是更加高层的虚拟集群,​代表一个 gmetad 监控主节点,​以便日后通过主节点进行分布式监察部署
 +  ​
 +=== Jail 现象? ===
 +{{http://​openbookproject.googlecode.com/​files/​2009-12-11-111521_978x462_scrot.png}}
 +
 +如前所述,想在 KISdecKUPP 集群中统一监控的几个主机都没有在对应页面中展示出来;​
 +  * 反而将主机中Jail 当作实体来进行了统计...
 +    ​
 +
 +==== 参考 ====
 +{{http://​www.ibm.com/​developerworks/​wikis/​download/​attachments/​53871911/​ganglia_cluster.gif}}
 +
 +
 +
 +  ​
 +  ​
  
/data/vhosts/wiki-data/pages/howto/g/gangliainit.txt · 最后更改: 2009/12/18 10:13 由 chifeng