package jvmmonitor.agent.module;
import jvmmonitor.agent.Util;
import jvmmonitor.agent.monitor.MonitorItem;
/**
* Created by peiliping on 16-12-21.
*/
public class ModuleZGC extends AbstractModule {
private String garbageCollector0Name;
private String garbageCollector1Name;
public ModuleZGC(String moduleName, MonitorItem item) {
super(moduleName, item);
super.metricValuesNum = 4;
this.garbageCollector0Name = Util.getValueFromMonitoredVm(item.getMonitoredVm(), "sun.gc.collector.0.name").toLowerCase();
this.garbageCollector1Name = Util.getValueFromMonitoredVm(item.getMonitoredVm(), "sun.gc.collector.1.name").toLowerCase();
super.noChangeMetricNames = new String[] {garbageCollector0Name + "/count", garbageCollector1Name + "/count"};
super.filterZeroValue = true;
super.addMetric(item, garbageCollector0Name + "/count", "sun.gc.collector.0.invocations");
super.addMetric(item, garbageCollector0Name + "/time", "sun.gc.collector.0.time");
super.addMetric(item, garbageCollector0Name + "/pausetime", "sun.gc.policy.avgMinorPauseTime");
super.addMetric(item, garbageCollector1Name + "/count", "sun.gc.collector.1.invocations");
super.addMetric(item, garbageCollector1Name + "/time", "sun.gc.collector.1.time");
super.addMetric(item, garbageCollector1Name + "/pausetime", "sun.gc.policy.avgMajorPauseTime");
}
public void transform(long timestamp) {
super.store(garbageCollector0Name, timestamp, getDeltaVal(garbageCollector0Name + "/count"), handleTimePrecision(getDeltaVal(garbageCollector0Name + "/time")),
handleTimePrecision(getOriginVal(garbageCollector0Name + "/pausetime")));
super.store(garbageCollector1Name, timestamp, getDeltaVal(garbageCollector1Name + "/count"), handleTimePrecision(getDeltaVal(garbageCollector1Name + "/time")),
handleTimePrecision(getOriginVal(garbageCollector1Name + "/pausetime")));
super.commit();
}
}