官方文档:http://sourceforge.net/apps/trac/ganglia/wiki/ganglia_quick_start
行文之前,表达一下小郁闷。Ganglia官方把分组监控的帮助文档放到了Quick Start Guide,而不是Configuration,让我一番好找。。。
Ganglia的分组监控,实施起来其实很简单,官方文档已经给出了示例。
总结起来,实施分组监控,有下面几个关键点:
一是多播和单播。分组监控最好用单播方式,文档也给出了单播模式的配置方式。
二是send_metadata_interval设置的间隔时间,官方推荐30秒。
三、分组监控,要同时修改gmetad.conf和gmond.conf。gmetad.conf中的分组配置非常简单,不必细说。
四、分组的标识是gmond.conf配置文件中的cluster name值和port值,同一分组中的机器的这两个值都必须一致,不同组的机器,这两个值不同。
cluster name的值要与gmetad.conf中的相应条目保持一致;port值的配置需要在udp_send_channel、udp_recv_channel和tcp_accept_channel三个部分同时设定,注间端口不要冲突。
gmetad.conf,只修改了data_source,其它部分保持原状:
-
data_source "Internal" 10 192.168.9.53:8649
-
data_source "Tangshan" 10 10.64.131:8650 10.10.64.132:8650
-
data_source "Jiaxing" 10 10.10.19.170:8653 10.10.19.94:8653
解释一下,每个集群中都有很多服务器,但我们不需要把集群中的每台服务器都写在data_source条目里,因为,虽然在理论上,Ganglia服务器端要到每个节点上去获取监控信息,但实际上不必如此;集群内的每台机器都会保留其它机器的信息,服务器端只需要连接集群内的任意一台机器,就可以整个集群内所有节点的监控信息。
在Tangshan和Jiaxing两个集群的配置中,我写了两台服务器,是一个冗余设计。Ganglia服务器端默认去第一台服务器获取信息,如果这台服务器因为某些原因而没有被获取到,服务器端会自动到第二台服务器上获取监控信息。
gmond.conf,以Tangshan集群为例,修改下列部分,其它保持默认:
-
globals {
-
daemonize = yes
-
setuid = yes
-
user = nobody
-
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
-
send_metadata_interval = 30 /*secs */
-
}
-
-
cluster {
-
name = "Tangshan"
-
owner = "hdfs"
-
latlong = "unspecified"
-
url = "unspecified"
-
}
-
-
host {
-
location = "unspecified"
-
}
-
-
udp_send_channel {
-
mcast_join = 239.2.11.71
-
port = 8650
-
ttl = 1
-
-
}
-
-
udp_recv_channel {
-
mcast_join = 239.2.11.71
-
port = 8650
-
bind = 239.2.11.71
-
}
-
-
tcp_accept_channel {
-
port = 8650
-
acl {
-
default = "deny"
-
access {
-
ip = 192.168.9.45
-
mask = 32
-
action = "allow"
-
}
-
-
access {
-
ip = 10.10.64.0
-
mask = 24
-
action = "allow"
-
}
-
}
-
}
其它分组,只需要修改cluster name,以及port值就可以了!要添加分组,也很简单。
监控截图:
本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/623967