protected void pushVmMetrics(long epoch) {
sendGauge("jvm.memory.heap_usage", vm.heapUsage(), epoch);
sendGauge("jvm.memory.non_heap_usage", vm.nonHeapUsage(), epoch);
for (Entry<String, Double> pool : vm.memoryPoolUsage().entrySet()) {
String gaugeName = String.format("jvm.memory.memory_pool_usage[pool:%s]",
pool.getKey());
sendGauge(gaugeName, pool.getValue(), epoch);
}
pushGauge("jvm.daemon_thread_count", vm.daemonThreadCount(), epoch);
pushGauge("jvm.thread_count", vm.threadCount(), epoch);
pushCounter("jvm.uptime", vm.uptime(), epoch);
sendGauge("jvm.fd_usage", vm.fileDescriptorUsage(), epoch);
for (Entry<Thread.State, Double> entry : vm.threadStatePercentages()
.entrySet()) {
String gaugeName = String.format("jvm.thread-states[state:%s]",
entry.getKey());
sendGauge(gaugeName, entry.getValue(), epoch);
}
for (Entry<String, VirtualMachineMetrics.GarbageCollectorStats> entry : vm
.garbageCollectors().entrySet()) {
pushGauge("jvm.gc.time", entry.getValue().getTime(TimeUnit.MILLISECONDS), epoch);
pushCounter("jvm.gc.runs", entry.getValue().getRuns(), epoch);
}
}