用户工具

站点工具


howto:g:gangliainit

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配置解释

data_source "Cluster1" host1 host2
rrd_rootdir "/var/lib/ganglia/rrds"

data_source参数定义了集群名字,以及集群中的节点。由于采用multicast模式,每台gmond节点都有本cluster内节点机器的所有监控数据,因此不需要把所有节点写入data_source中。建议写入不低于2个,在host1节点死机的时候,会自动找host2节点取数据。

rrd_rootdir参数定义了rrd数据库的存放路径,gmetad收集到监控数据后,会更新到该目录下的对应的rrd数据库中。

gmond.conf

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端口得到监控数据
}

config.php

$gmetad_root = "/var/lib/ganglia";    #gmetad写入的rrd数据库的路径
$rrds = "$gmetad_root/rrds";

$ganglia_ip = "localhost";            #gmetad服务器的地址
$ganglia_port = 8652;                 #gmetad服务器的交互式提供监控数据端口

发布

注意

TODO

问题:集群的理解

当前是奇怪的集群关系:

相关配置:

  • 监控主机 gmetad.conf
...
data_source "ZeorCluster" localhost
data_source "KISdecKUPP" proxy sso pyk dbmain staff ml svnmain trac0 trac2 wiki
gridname "KuppGrid"
  • 监控主机 gmond.conf
...
cluster { 
  name = "ZeorCluster" 
  owner = "ZeorCluster" 
  latlong = "unspecified" 
  url = "unspecified" 
} 
host {   
  location = "minitor.s.kingsoft.net"  
} 
  • 监控目标机sso: gmond.conf
cluster { 
  name = "KISdecKUPP" 
  owner = "kspeg" 
  latlong = "unspecified" 
  url = "unspecified" 
} 
host { 
  location = "sso.s.kingsfot.net" 
} 
  • 监控目标机sso: gmond.conf
cluster { 
  name = "KISdecKUPP" 
  owner = "kspeg" 
  latlong = "unspecified" 
  url = "unspecified" 
} 
host { 
  location = "proxy.s.kingsoft.net" 
} 

设想是::

  • 将所有无关系的主机收集到 ZeorCluster
  • 将所有关键业务主机规整到 KISdecKUPP

结果却….

核心问题是 在 Ganglia 中:

  • Grid
  • data_source
  • gmond

以上三者的关系? 在俺来看:

  • gmond 是监察客户端,代表一个主机
  • data_source 就是集群声明,使用同一 data_source 名称的所有 gmond 就聚合成一个集群
  • Grid 是更加高层的虚拟集群,代表一个 gmetad 监控主节点,以便日后通过主节点进行分布式监察部署

Jail 现象?

如前所述,想在 KISdecKUPP 集群中统一监控的几个主机都没有在对应页面中展示出来;

  • 反而将主机中Jail 当作实体来进行了统计…

参考

/data/vhosts/wiki-data/pages/howto/g/gangliainit.txt · 最后更改: 2009/12/18 10:13 由 chifeng