我在没有多播(也无法打开)的网络上运行 Ganglia 3.1.2。有没有人有一个优雅的解决方案可以让 Ganglia 正常工作?我发现了这个:
http://code.google.com/p/ganglia-multicast-hack/
但其扩展性不太好。
现在,我的 gmetad.conf 文件中为网络上的每个主机提供了单独的 data_source 行,但是这也不能很好地扩展,并且我无法获得准确的汇总统计信息,因为它会不断覆盖 rrds(尽管主机统计信息工作正常)。
任何指点都将不胜感激(或确认我已经找到了最佳解决方案)。
谢谢!
答案1
经过进一步的研究,我找到了答案。在我的客户端上,我在 gmond.conf 中添加了以下内容:
udp_send_channel {
host = monitoring-host
port = 8666
ttl = 1
}
udp_send_channel {
host = monitoring-host-backup
port = 8666
ttl = 1
}
每 1 秒通过单播 UDP 将数据发送到监控主机和备份主机。
然后在监控主机上我添加了这个:
udp_recv_channel {
port = 8666
}
关键是要摆脱默认存在的多播条目。
答案2
这是可行的,但问题是所有节点最终都会进入同一个默认数据源,因此它们的集群信息会丢失,这对于多集群环境来说不是很好。
我还没有尝试过,但一个可能的解决方法是为每个集群创建一个 UDP 通道,但如果你有许多集群的话,这就不太好了。
后续编辑:
由于网络限制,我当前的设置在集群级别使用单播,所有数据都发送到每个集群的一个节点。然后我使用 metad 联系每个节点以获取有关该集群的所有数据。
这样,集群将被分配到它们自己的数据源,并且它们的完整信息将会存在。
配置如下:
# on each node in the cluster
udp_send_channel {
host = 1.2.3.4 # this is a member of the cluster, not a metad server
port = 8650
}
然后在元数据上:
data_source "My Cluster" 1.2.3.4
为了实现冗余,您可以在 data_source 中列出多个 udp_send_channel 条目和多个 IP。我个人对每个集群使用两个。
对于联邦我使用类似这样的方法:
data_source "My Grid" 1.2.3.5:8651
仅当您有一个在端口 8651 上监听的元数据时,这才有效。
答案3
在 Amazon EC2 云上配置 Ganglia 时遇到了与多播模式相同的问题,导致其网络中无法使用多播。可能的解决方案是切换到单播模式,幸运的是,这种方法有效。
简而言之,下面给出了摆脱多播模式的简单步骤。
- 使其中一个节点成为运行 gmond(ganglia 数据收集器)守护进程的主节点。
例如:有 10 个节点正在运行 gmond 守护进程。从这 10 个节点中任意挑选一个节点,使其成为主节点,它将从 10 个节点获取所有数据,甚至还应成为其自身的从属节点。
# Define the cluster.
cluster {
name = "Yellow"
owner = "Your Company"
latlong = "N34.02 W118.45"
url = "http://yourcompany.com/"
}
# Disable multicast and define the host, the yellow master, where nodes in the cluster send data.
udp_send_channel {
# mcast_join = 239.2.11.71 (No need to join as mcast is not being used)
host = master.among10node.com (put the IP/Hostname of server from any 10 nodes to ack as master)
port = 8649
ttl = 1
}
udp_recv_channel {
# mcast_join = 239.2.11.71 (Disabled mcast as it is not being used)
port = 8649
# bind = 239.2.11.71 (No need to bind as mcast is not being used)
}
注意:在运行 gmond 守护程序的所有 10 个节点上复制相同的配置。先重新启动主节点,然后再重新启动所有其他节点。希望它能正常工作,并且主节点将拥有来自其他节点的所有数据。
现在配置 Ganglia 数据整合器 (gmetad) 守护进程以使用主节点作为主数据源。
例子:
data_source "Yellow" master.among10node.com
# default port is 8649, define here if you are using non default
现在重新启动 gmetad 守护进程并让魔法开始。
欢呼 Mohd Mozammil Khan