Question

I am using ganglia 3.6.0 for monitoring. I have an application that collect, aggregate some metrics for all hosts in the cluster. Then it sends them to gmond. The application runs on host1.

The problem here is, when setting spoof = false, ganglia eventually thinks this is metrics that only comes from host1. In fact, these metrics are generated by host1 but for all hosts in the cluster.

But when setting spoof=true, I expect gmond will accept the host name I specified. But it gmond doesn't accept the metrics at all. The metrics is event not shown on host1.

The code I use is copied from GangliaSink (from hadoop common) which applied Ganglia 3.1x format.

xdr_int(128);               // metric_id = metadata_msg
xdr_string(getHostName());       // hostname
xdr_string(name);           // metric name
xdr_int(1);                 // spoof = True
xdr_string(type);           // metric type
xdr_string(name);           // metric name
xdr_string(gConf.getUnits());    // units
xdr_int(gSlope.ordinal());  // slope
xdr_int(gConf.getTmax());        // tmax, the maximum time between metrics
xdr_int(gConf.getDmax());        // dmax, the maximum data value
xdr_int(1);                 /*Num of the entries in extra_value field for 
                              Ganglia 3.1.x*/
xdr_string("GROUP");        /*Group attribute*/
xdr_string(groupName);      /*Group value*/

// send the metric to Ganglia hosts
emitToGangliaHosts();

// Now we send out a message with the actual value.
// Technically, we only need to send out the metadata message once for
// each metric, but I don't want to have to record which metrics we did and
// did not send.
xdr_int(133);         // we are sending a string value
xdr_string(getHostName()); // hostName
xdr_string(name);     // metric name
xdr_int(1);           // spoof = True
xdr_string("%s");     // format field
xdr_string(value);    // metric value

// send the metric to Ganglia hosts
emitToGangliaHosts();

I do specified the host name for each metrics. But it seems not used/recognized by gmond.

Was it helpful?

Solution

Solved this... The hostName format issue. The format need to be like ip:hostname e.g 1.2.3.4:host0000001 or any string:string is fine :-)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top