For some time now I've wanted to implement some kind of mechanism that would allow me to transmit metric information by proxy - that is send data from one host on behalf of another. The reason for this is that I would like to monitor 'black box' network devices that can only be accessed via SNMP. NetApp file servers are a good example.
Well I spent some time looking at the ganglia 2.5.x code last week and figured out how incoming XDR packets are translated. What I came up with is a host spoofing modification. If a user-defined (sent via gmetric) metric name is qualified with a valid IP address, I use this address to identify the source host instead of getting this information from the incoming packet: gmetric --name 123.123.123.123:temperature --value `cputemp` --type int16 --units Celcius Will cause listening gmond processes to insert this metric (temperature) under the host that matches 123.123.123.123 . I have also tweaked gmetric to send a spoof heartbeat message for the metric "--name 123.123.123.123:heartbeat" This is allow me to keep track of when my SNMP devices are up or down. What do you think? The interface is pretty clumsy right now but it does work. I'm definetly concerned about the potential for abuse so I think some control for restricting it's use is wise. ---- Yemi