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

Reply via email to