in core/src/main/java/com/spotify/metrics/jvm/CpuGaugeSet.java [47:89]
public Map<MetricId, Metric> getMetrics() {
if (!(operatingSystemMXBean instanceof com.sun.management.OperatingSystemMXBean)) {
return Collections.emptyMap();
}
final com.sun.management.OperatingSystemMXBean osMxBean =
(com.sun.management.OperatingSystemMXBean) operatingSystemMXBean;
final Map<MetricId, Metric> gauges = new HashMap<>();
final MetricId cpu = MetricId.build().tagged("what", "jvm-cpu-stats");
gauges.put(cpu.tagged("what", "process-cpu-load-percentage", "unit", "%"),
new Gauge<Double>() {
@Override
public Double getValue() {
return osMxBean.getProcessCpuLoad();
}
});
gauges.put(cpu.tagged("what", "system-cpu-load-percentage", "unit", "%"),
new Gauge<Double>() {
@Override
public Double getValue() {
return osMxBean.getSystemCpuLoad();
}
});
gauges.put(cpu.tagged("what", "system-load-average"), new Gauge<Double>() {
@Override
public Double getValue() {
return osMxBean.getSystemLoadAverage();
}
});
gauges.put(cpu.tagged("what", "process-cpu-time", "unit", "ns"), new Gauge<Long>() {
@Override
public Long getValue() {
return osMxBean.getProcessCpuTime();
}
});
return Collections.unmodifiableMap(gauges);
}