配置之前,先大概了解一下 ganglia的工作原理,见下面3个图:
ganglia本身设计时,考虑到了多集群、多层级数据收集及上报,主要模式有两种:
1. 集群内节点向其中 1-2 个节点的gmond上报数据,由监控机的 gmetad向各个gmond轮询数据(见图2)
2. 集群内节点上报给本集群gmetad,再由监控机的gmetad收集各个集群gmetad信息(见图3)
以下主要介绍模式1:
拓扑如下:
a. 如上图,web cluster中的数据源为 212.96.xx.1,db cluster中,主数据源为 202.96.xx.1,
在两台db server的 gmond.conf 中配置2个 send channel (由于我的机器不支持多播,所以需要设置多个
单播channel,如果服务器支持多播,则所有多播组内的gmond会共享所有机器节点的数据)
udp_send_channel {
host = 192.168.0.1
port = 8648
ttl = 1
}
udp_send_channel {
host = 192.168.0.2
port = 8648
ttl = 1
}
这样192.168.0.1/2 两台机器会将自身的数据同时传递给两个数据源,使得db cluster有热备数据源;
b. 在gmetad.conf里面增加两个数据源地址:
data_source “web” 212.96.xx.1
data_source “db” 202.96.xx.1 202.96.xx.2 #xx.2 是热备,只有在 xx.1无法连接时,才会读取 xx.2的数据
c. 重启各个gmond,在数据源机器上执行:
/usr/local/ganglia/bin/gstat -a
观察是否数据源采集了所有服务器的信息,如无则需要检查相关端口是否配置错误
配置完毕的监控视图如下:
参考文献:
http://sourceforge.net/apps/trac/ganglia/wiki/FAQ
http://blog.csdn.net/skyboy_man/archive/2010/05/19/5607256.aspx
http://www.ibm.com/developerworks/cn/linux/l-ganglia-nagios-1/index.html