JMX collector's
collect() method
public void collect() {
CompositeData compositeData = null;
String type = null;
try {
log("Starting JMX Collection");
long start = System.currentTimeMillis();
ObjectName on = null;
// Class Loading Monitoring
on = objectNameCache.get(CLASS_LOADING_MXBEAN_NAME);
tracer.traceDeltaSticky((Long)jmxServer.getAttribute(on, "TotalLoadedClassCount"),
hostName, "JMX", on.getKeyProperty("type"), "TotalLoadedClassCount");
tracer.traceDeltaSticky((Long)jmxServer.getAttribute(on, "UnloadedClassCount"),
hostName, "JMX", on.getKeyProperty("type"), "UnloadedClassCount");
tracer.traceSticky((Integer)jmxServer.getAttribute(on, "LoadedClassCount"),
hostName, "JMX", on.getKeyProperty("type"), "LoadedClassCount");
// Compilation Monitoring
on = objectNameCache.get(COMPILATION_MXBEAN_NAME);
tracer.traceDeltaSticky((Long)jmxServer.getAttribute(on, "TotalCompilationTime"),
hostName, "JMX", on.getKeyProperty("type"), "CompilationTime");
// Thread Monitoring
on = objectNameCache.get(THREAD_MXBEAN_NAME);
tracer.traceDeltaSticky((Long)jmxServer.getAttribute(on,"TotalStartedThreadCount"),
hostName, "JMX", on.getKeyProperty("type"), "StartedThreadRate");
tracer.traceSticky((Integer)jmxServer.getAttribute(on, "ThreadCount"), hostName,
"JMX", on.getKeyProperty("type"), "CurrentThreadCount");
// Memory Usage
on = objectNameCache.get(MEMORY_MXBEAN_NAME);
compositeData = (CompositeData)jmxServer.getAttribute(on, "HeapMemoryUsage");
for(Object key: compositeData.getCompositeType().keySet()) {
tracer.traceSticky((Long)compositeData.get(key.toString()), hostName, "JMX",
"Memory", "HeapMemory", key.toString());
}
compositeData = (CompositeData)jmxServer.getAttribute(on, "NonHeapMemoryUsage");
for(Object key: compositeData.getCompositeType().keySet()) {
tracer.traceSticky((Long)compositeData.get(key.toString()), hostName, "JMX",
"Memory", "NonHeapMemory", key.toString());
}
// Memory Pool Monitoring
if(!objectNameQueryCache.containsKey("MP_MBEAN_QUERY")) {
objectNameQueryCache.put("MP_MBEAN_QUERY",(Set<ObjectName>)
jmxServer.queryNames(objectNameCache.get("MP_MBEAN_QUERY"), null));
}
for(ObjectName mpOn: objectNameQueryCache.get("MP_MBEAN_QUERY")) {
compositeData = (CompositeData)jmxServer.getAttribute(mpOn, "Usage");
type = (String)jmxServer.getAttribute(mpOn, "Type");
for(Object key: compositeData.getCompositeType().keySet()) {
tracer.traceSticky((Long)compositeData.get(key.toString()), hostName,
"JMX","MemoryPools", type,
mpOn.getKeyProperty("name"), key.toString());
}
}
// Garbage Collection Monitoring.
if(!objectNameQueryCache.containsKey("GC_MBEAN_QUERY")) {
objectNameQueryCache.put("GC_MBEAN_QUERY",
(Set<ObjectName>)jmxServer.queryNames(
objectNameCache.get("GC_MBEAN_QUERY"), null));
}
for(ObjectName gcOn: objectNameQueryCache.get("GC_MBEAN_QUERY")) {
tracer.traceDeltaSticky((Long)jmxServer.getAttribute(gcOn, "CollectionCount"),
hostName, "JMX", gcOn.getKeyProperty("type"),
gcOn.getKeyProperty("name"), "CollectionRate");
tracer.traceDeltaSticky((Long)jmxServer.getAttribute(gcOn, "CollectionTime"),
hostName, "JMX", gcOn.getKeyProperty("type"),
gcOn.getKeyProperty("name"), "CollectionTimeRate");
}
// Done
long elapsed = System.currentTimeMillis()-start;
tracer.trace(elapsed, hostName, "JMX", "JMX Collector",
"Collection", "Last Elapsed Time");
tracer.trace(new Date(), hostName, "JMX", "JMX Collector",
"Collection", "Last Collection");
log("Completed JMX Collection in ", elapsed, " ms.");
} catch (Exception e) {
log("Failed:" + e);
tracer.traceIncident(hostName, "JMX", "JMX Collector",
"Collection", "Collection Errors");
}
}
|