Ganglia实时监察云台

来源:互联网 发布:java防止刷新重复提交 编辑:程序博客网 时间:2024/04/27 14:04

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 host2rrd_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" localhostdata_source "KISdecKUPP" proxy sso pyk dbmain staff ml svnmain trac0 trac2 wikigridname "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 当作实体来进行了统计…

参考


https://wiki.freebsdchina.org/howto/g/gangliainit

原创粉丝点击