From c1d75a6b8744d9856e2426696640409eaba97b2e Mon Sep 17 00:00:00 2001 From: Eduardo Narros Date: Wed, 30 Mar 2022 17:08:58 +0100 Subject: [PATCH] Allows passing an OpenTelemetry instance to registerObservers() methods. --- .../instrumentation/oshi/ProcessMetrics.java | 9 +++++--- .../instrumentation/oshi/SystemMetrics.java | 9 +++++--- .../runtimemetrics/GarbageCollector.java | 10 +++++--- .../runtimemetrics/MemoryPools.java | 23 +++++++++++++++---- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/instrumentation/oshi/library/src/main/java/io/opentelemetry/instrumentation/oshi/ProcessMetrics.java b/instrumentation/oshi/library/src/main/java/io/opentelemetry/instrumentation/oshi/ProcessMetrics.java index 67ba15c6941f..0b98cf748ffc 100644 --- a/instrumentation/oshi/library/src/main/java/io/opentelemetry/instrumentation/oshi/ProcessMetrics.java +++ b/instrumentation/oshi/library/src/main/java/io/opentelemetry/instrumentation/oshi/ProcessMetrics.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.oshi; import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.metrics.Meter; @@ -21,8 +22,10 @@ private ProcessMetrics() {} /** Register observers for java runtime metrics. */ public static void registerObservers() { - // TODO(anuraaga): registerObservers should accept an OpenTelemetry instance - Meter meter = GlobalOpenTelemetry.get().getMeterProvider().get("io.opentelemetry.oshi"); + registerObservers(GlobalOpenTelemetry.get()); + } + public static void registerObservers(OpenTelemetry openTelemetry) { + Meter meter = openTelemetry.getMeterProvider().get("io.opentelemetry.oshi"); SystemInfo systemInfo = new SystemInfo(); OperatingSystem osInfo = systemInfo.getOperatingSystem(); OSProcess processInfo = osInfo.getProcess(osInfo.getProcessId()); @@ -49,4 +52,4 @@ public static void registerObservers() { r.record(processInfo.getKernelTime(), Attributes.of(TYPE_KEY, "system")); }); } -} +} \ No newline at end of file diff --git a/instrumentation/oshi/library/src/main/java/io/opentelemetry/instrumentation/oshi/SystemMetrics.java b/instrumentation/oshi/library/src/main/java/io/opentelemetry/instrumentation/oshi/SystemMetrics.java index 57e05ccadd99..d2ed578dfa39 100644 --- a/instrumentation/oshi/library/src/main/java/io/opentelemetry/instrumentation/oshi/SystemMetrics.java +++ b/instrumentation/oshi/library/src/main/java/io/opentelemetry/instrumentation/oshi/SystemMetrics.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.oshi; import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.metrics.Meter; @@ -29,8 +30,10 @@ private SystemMetrics() {} /** Register observers for system metrics. */ public static void registerObservers() { - // TODO(anuraaga): registerObservers should accept an OpenTelemetry instance - Meter meter = GlobalOpenTelemetry.get().getMeterProvider().get("io.opentelemetry.oshi"); + registerObservers(GlobalOpenTelemetry.get()); + } + public static void registerObservers(OpenTelemetry openTelemetry) { + Meter meter = openTelemetry.getMeterProvider().get("io.opentelemetry.oshi"); SystemInfo systemInfo = new SystemInfo(); HardwareAbstractionLayer hal = systemInfo.getHardware(); @@ -136,4 +139,4 @@ public static void registerObservers() { } }); } -} +} \ No newline at end of file diff --git a/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/GarbageCollector.java b/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/GarbageCollector.java index b2650195ed64..8dfcb867e0b8 100644 --- a/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/GarbageCollector.java +++ b/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/GarbageCollector.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.runtimemetrics; import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.metrics.Meter; @@ -35,10 +36,13 @@ public final class GarbageCollector { /** Register all observers provided by this module. */ public static void registerObservers() { - // TODO(anuraaga): registerObservers should accept an OpenTelemetry instance + registerObservers(GlobalOpenTelemetry.get()); + } + + public static void registerObservers(OpenTelemetry openTelemetry) { List garbageCollectors = ManagementFactory.getGarbageCollectorMXBeans(); Meter meter = - GlobalOpenTelemetry.get().getMeterProvider().get(GarbageCollector.class.getName()); + openTelemetry.getMeterProvider().get(GarbageCollector.class.getName()); List labelSets = new ArrayList<>(garbageCollectors.size()); for (GarbageCollectorMXBean gc : garbageCollectors) { labelSets.add(Attributes.of(GC_KEY, gc.getName())); @@ -69,4 +73,4 @@ public static void registerObservers() { } private GarbageCollector() {} -} +} \ No newline at end of file diff --git a/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/MemoryPools.java b/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/MemoryPools.java index bc64e7935960..86fe36f6e58a 100644 --- a/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/MemoryPools.java +++ b/instrumentation/runtime-metrics/library/src/main/java/io/opentelemetry/instrumentation/runtimemetrics/MemoryPools.java @@ -6,6 +6,7 @@ package io.opentelemetry.instrumentation.runtimemetrics; import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.metrics.Meter; @@ -59,9 +60,12 @@ public final class MemoryPools { /** Register only the "area" measurements. */ public static void registerMemoryAreaObservers() { - // TODO(anuraaga): registerObservers should accept an OpenTelemetry instance + registerMemoryPoolObservers(GlobalOpenTelemetry.get()); + } + + public static void registerMemoryAreaObservers(OpenTelemetry openTelemetry) { MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean(); - Meter meter = GlobalOpenTelemetry.get().getMeterProvider().get(MemoryPools.class.getName()); + Meter meter = openTelemetry.getMeterProvider().get(MemoryPools.class.getName()); meter .upDownCounterBuilder("runtime.jvm.memory.area") .setDescription("Bytes of a given JVM memory area.") @@ -75,9 +79,12 @@ public static void registerMemoryAreaObservers() { /** Register only the "pool" measurements. */ public static void registerMemoryPoolObservers() { - // TODO(anuraaga): registerObservers should accept an OpenTelemetry instance + registerMemoryPoolObservers(GlobalOpenTelemetry.get()); + } + + public static void registerMemoryPoolObservers(OpenTelemetry openTelemetry) { List poolBeans = ManagementFactory.getMemoryPoolMXBeans(); - Meter meter = GlobalOpenTelemetry.get().getMeterProvider().get(MemoryPools.class.getName()); + Meter meter = openTelemetry.getMeterProvider().get(MemoryPools.class.getName()); List usedLabelSets = new ArrayList<>(poolBeans.size()); List committedLabelSets = new ArrayList<>(poolBeans.size()); List maxLabelSets = new ArrayList<>(poolBeans.size()); @@ -112,6 +119,12 @@ public static void registerObservers() { registerMemoryPoolObservers(); } + /** Register all measurements provided by this module. */ + public static void registerObservers(OpenTelemetry openTelemetry) { + registerMemoryAreaObservers(openTelemetry); + registerMemoryPoolObservers(openTelemetry); + } + static void recordHeap(ObservableLongMeasurement measurement, MemoryUsage usage) { record(measurement, usage, USED_HEAP, COMMITTED_HEAP, MAX_HEAP); } @@ -139,4 +152,4 @@ private static void record( } private MemoryPools() {} -} +} \ No newline at end of file