up vote 3 down vote favorite
2
share [g+] share [fb]

I'm running Ganglia 3.1.2 on a network where there is no multicast (nor can I turn it on). Does anyone have an elegant solution for getting ganglia to work correctly? I found this:

http://code.google.com/p/ganglia-multicast-hack/

but it does not scale very well.

Right now, I have separate data_source lines for each host on my network in my gmetad.conf file, but that too does not scale well, and I can't get accurate summary statistics, because it keeps overwriting the rrds (although the host statistics work just fine).

Any pointers would be greatly appreciated (or confirmation that I have found the best solution already).

Thanks!

link|improve this question
feedback

2 Answers

up vote 4 down vote accepted

After further research, I found the answer. On my clients, I added the following to gmond.conf:

udp_send_channel {
  host = monitoring-host
  port = 8666
  ttl = 1
}

udp_send_channel {
  host = monitoring-host-backup
  port = 8666
  ttl = 1
}

This sends the data via unicast UDP to the monitoring host and the backup every 1 second.

Then on the monitoring host, I added this:

udp_recv_channel {
  port = 8666
}

The key is to get rid of the multicast entry, which is there by default.

link|improve this answer
feedback

This works, but the problem is that all the nodes will end up in the same default datasource, so their Cluster information is lost, which is not so nice for multi-cluster environments.

I haven't tried yet, but a possible workaround for this would be to create a UDP channel for each cluster, which is not so nice if you have many of them.

Later Edit:

My current setup is using unicast at the cluster level due to networking limitations, and all the data is getting sent to a node from each cluster. Then I contact each of those using metad to get all the data regarding that cluster.

This way the clusters will be assigned to their own data sources, and their full information will be there.

The config would look like this:

# 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
}

Then on the metad:

data_source "My Cluster" 1.2.3.4

For redundancy you can have multiple udp_send_channel entries and multiple IPs listed in the data_source. I personally use two for each cluster.

For federation I use something like this:

data_source "My Grid" 1.2.3.5:8651

This is valid only if you have a metad listening on port 8651 there.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.