无多播的 Ganglia

无多播的 Ganglia

我在没有多播(也无法打开)的网络上运行 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 时遇到了与多播模式相同的问题,导致其网络中无法使用多播。可能的解决方案是切换到单播模式,幸运的是,这种方法有效。

简而言之,下面给出了摆脱多播模式的简单步骤。

  1. 使其中一个节点成为运行 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

答案4

也可以看看:

https://github.com/ganglia/monitor-core/tree/feature/cloud

我今天安装了它并让它在不允许多播的 EC2 上运行。

相关内容