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是監控機群名稱。可以配置
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 指定埠號,根據
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註釋掉也可以正常工作。