|
8 | 8 | import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
9 | 9 | import io.opentelemetry.api.OpenTelemetry;
|
10 | 10 | import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
|
11 |
| -import io.opentelemetry.instrumentation.runtimemetrics.java8.Classes; |
12 |
| -import io.opentelemetry.instrumentation.runtimemetrics.java8.Cpu; |
13 |
| -import io.opentelemetry.instrumentation.runtimemetrics.java8.GarbageCollector; |
14 |
| -import io.opentelemetry.instrumentation.runtimemetrics.java8.MemoryPools; |
15 |
| -import io.opentelemetry.instrumentation.runtimemetrics.java8.Threads; |
16 |
| -import io.opentelemetry.instrumentation.runtimemetrics.java8.internal.ExperimentalBufferPools; |
17 |
| -import io.opentelemetry.instrumentation.runtimemetrics.java8.internal.ExperimentalCpu; |
18 |
| -import io.opentelemetry.instrumentation.runtimemetrics.java8.internal.ExperimentalMemoryPools; |
19 |
| -import java.util.ArrayList; |
| 11 | +import io.opentelemetry.instrumentation.runtimemetrics.java8.internal.JmxRuntimeMetricsFactory; |
20 | 12 | import java.util.Arrays;
|
21 |
| -import java.util.Collections; |
22 | 13 | import java.util.EnumMap;
|
23 | 14 | import java.util.List;
|
24 | 15 | import javax.annotation.Nullable;
|
@@ -84,7 +75,7 @@ public RuntimeMetricsBuilder disableAllJmx() {
|
84 | 75 | return this;
|
85 | 76 | }
|
86 | 77 |
|
87 |
| - /** Disable telemetry collection associated with the {@link JfrFeature}. */ |
| 78 | + /** Enable experimental JMX telemetry collection. */ |
88 | 79 | @CanIgnoreReturnValue
|
89 | 80 | public RuntimeMetricsBuilder enableExperimentalJmxTelemetry() {
|
90 | 81 | enableExperimentalJmxTelemetry = true;
|
@@ -122,35 +113,13 @@ public void startFromInstrumentationConfig(InstrumentationConfig config) {
|
122 | 113 |
|
123 | 114 | /** Build and start an {@link RuntimeMetrics} with the config from this builder. */
|
124 | 115 | public RuntimeMetrics build() {
|
125 |
| - List<AutoCloseable> observables = buildObservables(); |
| 116 | + List<AutoCloseable> observables = |
| 117 | + JmxRuntimeMetricsFactory.buildObservables( |
| 118 | + openTelemetry, disableJmx, enableExperimentalJmxTelemetry); |
126 | 119 | RuntimeMetrics.JfrRuntimeMetrics jfrRuntimeMetrics = buildJfrMetrics();
|
127 | 120 | return new RuntimeMetrics(openTelemetry, observables, jfrRuntimeMetrics);
|
128 | 121 | }
|
129 | 122 |
|
130 |
| - @SuppressWarnings("CatchingUnchecked") |
131 |
| - private List<AutoCloseable> buildObservables() { |
132 |
| - if (disableJmx) { |
133 |
| - return Collections.emptyList(); |
134 |
| - } |
135 |
| - try { |
136 |
| - // Set up metrics gathered by JMX |
137 |
| - List<AutoCloseable> observables = new ArrayList<>(); |
138 |
| - observables.addAll(Classes.registerObservers(openTelemetry)); |
139 |
| - observables.addAll(Cpu.registerObservers(openTelemetry)); |
140 |
| - observables.addAll(GarbageCollector.registerObservers(openTelemetry)); |
141 |
| - observables.addAll(MemoryPools.registerObservers(openTelemetry)); |
142 |
| - observables.addAll(Threads.registerObservers(openTelemetry)); |
143 |
| - if (enableExperimentalJmxTelemetry) { |
144 |
| - observables.addAll(ExperimentalBufferPools.registerObservers(openTelemetry)); |
145 |
| - observables.addAll(ExperimentalCpu.registerObservers(openTelemetry)); |
146 |
| - observables.addAll(ExperimentalMemoryPools.registerObservers(openTelemetry)); |
147 |
| - } |
148 |
| - return observables; |
149 |
| - } catch (Exception e) { |
150 |
| - throw new IllegalStateException("Error building RuntimeMetrics", e); |
151 |
| - } |
152 |
| - } |
153 |
| - |
154 | 123 | @Nullable
|
155 | 124 | private RuntimeMetrics.JfrRuntimeMetrics buildJfrMetrics() {
|
156 | 125 | if (enabledFeatureMap.values().stream().noneMatch(isEnabled -> isEnabled)) {
|
|
0 commit comments