public Map getMetrics()

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);
    }