1. 程式人生 > >Ganglia監控叢集配置詳解,案例分析

Ganglia監控叢集配置詳解,案例分析

Ganglia監控叢集配置詳解,案例分析

1 多播方式

多播方式配置比較簡單。

服務端配置檔案 /opt/modules/ganglia/etc/gmetad.conf (注:gmeta daemon)

注:cluster_name一定要與要監控的配置中的cluster name相同。gmond_node1-n指的要監控的機器名

data_source "cluster_name" gmond_node1 gmond_node2 ... gmond_noden

說明:cluster_name是監控機群名稱。可以配置

多個,也就是分組。比如將zookeeper叢集作為一個監控分組,hdfs叢集作為一個分組,hbase作為一個分組(如果hbase和hdfs分別部署在不同的節點上)。ganglia預設使用8649,因此如果你只有一個叢集的話,可以使用不寫埠號;如果你是監控多個分組的話,就需要以gmond_node1:port的形式列出gmond客戶端。例如 

data_source "hdfs" localhost 192.168.0.101:8649

data_source "zookeeper" 210.51.44.102:8650

在多播方式下,所有的gmond節點通過多播的形式傳送各自的資料,也就是每一個gmond節點上面都完整的存了一份所有gmond節點的監控資料,gmetad只需要向其中的一個gmond索取資料即可,這裡gmetad首先到第一個查詢,如果失敗,查詢第二個,以此類推。

監控客戶端配置檔案/opt/modules/ganglia/etc/gmond.conf (注:gmonitor daemon)

globals段:gmond的全域性配置,一般不需要修改

cluster段:這一段是重要的一段,至少需要定義name變數,所有name相同的節點將認為在同一個叢集(監控分組)裡,其他變數是對該叢集的說明。

host段:只有一個變數,location,是對這個節點的一些說明,一般不用修改。

udp_send_channel段:這也是很重要的一段,可以定義多個這樣的段,不過如果在同一區域網內,只有一個叢集的環境下,這一段保持預設也可以工作的很好。ganglia預設採用多播發送監控資料,mcast_join變數指定多播組。port 指定埠號,根據

當前節點所在的分組,與gmetad.conf中的埠對應起來,ttl指定跳數一般為1,如果需要經過gmond中轉,需要修改這個跳數。

udp_recv_channel段:對應於udp_send_channel段,也可以設定多個。

tcp_accept_channel段:指定一個埠,可以通過TCP的的方式,從這個埠讀取XML格式的監控資料

總結一下,如果只是完成最簡單的監控任務:整個配置檔案只需要修改一個地方,就是cluster的name變數

eg:

 

gmetad.conf :

data_source "test" 192.168.1.11:8649 192.168.1.12:8649

 

192.168.1.11,就改個叢集的名字,和host名字:

gmond.conf

 

globals {                    

  daemonize = yes              

  setuid = yes             

  user = ganglia              

  debug_level = 0               

  max_udp_msg_len = 1472        

  mute = no             

  deaf = no             

  host_dmax = 0 /*secs */ 

  cleanup_threshold = 300 /*secs */ 

  gexec = no             

  send_metadata_interval = 0     

 

/* 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 = "test" 

  owner = "unspecified" 

  latlong = "unspecified" 

  url = "unspecified" 

 

/* The host section describes attributes of the host, like the location */ 

host { 

  location = "192.168.1.11" 

 

/* 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 = 239.2.11.71

  port = 8649 

  ttl = 1 

 

/* You can specify as many udp_recv_channels as you like as well. */ 

udp_recv_channel { 

  mcast_join = 239.2.11.71 

  port = 8649 

  bind = 239.2.11.71 

 

/* You can specify as many tcp_accept_channels as you like to share 

   an xml description of the state of the cluster */ 

tcp_accept_channel { 

  port = 8649 

 

192.168.1.12,就改個叢集的名字,和host名字:

gmond.conf

 

globals {                    

  daemonize = yes              

  setuid = yes             

  user = ganglia              

  debug_level = 0               

  max_udp_msg_len = 1472        

  mute = no             

  deaf = no             

  host_dmax = 0 /*secs */ 

  cleanup_threshold = 300 /*secs */ 

  gexec = no             

  send_metadata_interval = 0     

 

/* 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 = "test" 

  owner = "unspecified" 

  latlong = "unspecified" 

  url = "unspecified" 

 

/* The host section describes attributes of the host, like the location */ 

host { 

  location = "192.168.1.12" 

 

/* 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 = 239.2.11.71

  port = 8649 

  ttl = 1 

 

/* You can specify as many udp_recv_channels as you like as well. */ 

udp_recv_channel { 

  mcast_join = 239.2.11.71 

  port = 8649 

  bind = 239.2.11.71 

 

/* You can specify as many tcp_accept_channels as you like to share 

   an xml description of the state of the cluster */ 

tcp_accept_channel { 

  port = 8649 

 

 

 

2 單播方式

如果監控的叢集跨網段,就需要使用單播方式。單播其實就是所有的gmond節點指定一臺機器來儲存大家的監控資料。要使用單播方式,gmetad.conf不需要修改。只需要修改gmond.conf。

udp_send_channel段,使用host變數來指定接受資料的機器。值得注意的是,mcast_join和host不能同時出現在一個channel裡。

udp_recv_channel段使用bind變數指出的ip,該ip必須所有其他gmond可以訪問到。事實上,可以使用0.0.0.0。這裡我發現直接將bind註釋掉也可以正常工作。