Proc metrics: add average system load for the last minute

Change-Id: I12d74ea28f7f8f52c16d53236ecca6582df351b7
This commit is contained in:
Matthias Sohn
2020-03-06 13:39:44 +01:00
parent e2b3f8e088
commit fa8de0231d
2 changed files with 15 additions and 0 deletions

View File

@@ -35,6 +35,7 @@ split up by update type (create+replace, and autoclose)
* `proc/uptime`: Uptime of the Gerrit process.
* `proc/cpu/num_cores`: Number of processors available to the Java virtual machine.
* `proc/cpu/usage`: CPU time used by the Gerrit process.
* `proc/cpu/system_load`: System load average for the last minute.
* `proc/num_open_fds`: Number of open file descriptors.
* `proc/jvm/memory/heap_committed`: Amount of memory guaranteed for user objects.
* `proc/jvm/memory/heap_used`: Amount of memory holding user objects.

View File

@@ -29,6 +29,7 @@ import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.ThreadMXBean;
import java.util.concurrent.TimeUnit;
@@ -38,6 +39,7 @@ public class ProcMetricModule extends MetricModule {
buildLabel(metrics);
procUptime(metrics);
procCpuUsage(metrics);
procCpuLoad(metrics);
procJvmGc(metrics);
procJvmMemory(metrics);
procJvmThread(metrics);
@@ -97,6 +99,18 @@ public class ProcMetricModule extends MetricModule {
Runtime.getRuntime()::availableProcessors);
}
private void procCpuLoad(MetricMaker metrics) {
OperatingSystemMXBean provider =
ManagementFactory.getPlatformMXBean(OperatingSystemMXBean.class);
if (provider.getSystemLoadAverage() != -1) {
metrics.newCallbackMetric(
"proc/cpu/system_load",
Double.class,
new Description("System load average for the last minute").setGauge(),
provider::getSystemLoadAverage);
}
}
private void procJvmMemory(MetricMaker metrics) {
CallbackMetric0<Long> heapCommitted =
metrics.newCallbackMetric(