Deprecate GlobalMeterProvider (#3948)

This commit is contained in:
Anuraag Agrawal 2021-12-03 08:43:49 +09:00 committed by GitHub
parent b1651a18cf
commit 737a5e2b26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 40 additions and 37 deletions

View File

@ -5,13 +5,23 @@
package io.opentelemetry.api.metrics; package io.opentelemetry.api.metrics;
/** This class is a temporary solution until metrics SDK is marked stable. */ /**
* This class is a temporary solution until metrics SDK is marked stable.
*
* @deprecated Use {@link io.opentelemetry.api.GlobalOpenTelemetry}.
*/
@Deprecated
public class GlobalMeterProvider { public class GlobalMeterProvider {
private static volatile MeterProvider globalMeterProvider = MeterProvider.noop(); private static volatile MeterProvider globalMeterProvider = MeterProvider.noop();
private GlobalMeterProvider() {} private GlobalMeterProvider() {}
/** Returns the globally registered {@link MeterProvider}. */ /**
* Returns the globally registered {@link MeterProvider}.
*
* @deprecated Use {@link io.opentelemetry.api.GlobalOpenTelemetry#get()}.
*/
@Deprecated
public static MeterProvider get() { public static MeterProvider get() {
return globalMeterProvider; return globalMeterProvider;
} }

View File

@ -26,9 +26,7 @@ class OpenCensusMetricsTest {
void capturesOpenCensusAndOtelMetrics() throws InterruptedException { void capturesOpenCensusAndOtelMetrics() throws InterruptedException {
InMemoryMetricReader reader = InMemoryMetricReader.create(); InMemoryMetricReader reader = InMemoryMetricReader.create();
SdkMeterProvider otelMetrics = SdkMeterProvider otelMetrics =
SdkMeterProvider.builder() SdkMeterProvider.builder().registerMetricReader(OpenCensusMetrics.attachTo(reader)).build();
.registerMetricReader(OpenCensusMetrics.attachTo(reader))
.buildAndRegisterGlobal();
// Record an otel metric. // Record an otel metric.
otelMetrics.meterBuilder("otel").build().counterBuilder("otel.sum").build().add(1); otelMetrics.meterBuilder("otel").build().counterBuilder("otel.sum").build().add(1);
// Record an OpenCensus metric. // Record an OpenCensus metric.

View File

@ -254,11 +254,12 @@ public class OtlpPipelineStressTest {
PeriodicMetricReader.builder(metricExporter) PeriodicMetricReader.builder(metricExporter)
.setInterval(Duration.ofSeconds(1)) .setInterval(Duration.ofSeconds(1))
.newMetricReaderFactory()) .newMetricReaderFactory())
.buildAndRegisterGlobal(); .build();
// set up the span exporter and wire it into the SDK // set up the span exporter and wire it into the SDK
OtlpGrpcSpanExporter spanExporter = OtlpGrpcSpanExporter spanExporter =
OtlpGrpcSpanExporter.builder() OtlpGrpcSpanExporter.builder()
.setMeterProvider(meterProvider)
.setEndpoint( .setEndpoint(
"http://" "http://"
+ toxiproxyContainer.getHost() + toxiproxyContainer.getHost()
@ -268,6 +269,7 @@ public class OtlpPipelineStressTest {
.build(); .build();
BatchSpanProcessor spanProcessor = BatchSpanProcessor spanProcessor =
BatchSpanProcessor.builder(spanExporter) BatchSpanProcessor.builder(spanExporter)
.setMeterProvider(meterProvider)
// .setMaxQueueSize(1000) // .setMaxQueueSize(1000)
// .setMaxExportBatchSize(1024) // .setMaxExportBatchSize(1024)
// .setScheduleDelayMillis(1000) // .setScheduleDelayMillis(1000)

View File

@ -6,7 +6,6 @@
package io.opentelemetry.sdk.autoconfigure; package io.opentelemetry.sdk.autoconfigure;
import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.metrics.GlobalMeterProvider;
import io.opentelemetry.api.metrics.MeterProvider; import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.context.propagation.TextMapPropagator; import io.opentelemetry.context.propagation.TextMapPropagator;
@ -154,7 +153,6 @@ public final class OpenTelemetrySdkAutoConfiguration {
String exporterName = config.getString("otel.metrics.exporter"); String exporterName = config.getString("otel.metrics.exporter");
if (exporterName == null || exporterName.equals("none")) { if (exporterName == null || exporterName.equals("none")) {
// In the event no exporters are configured set a noop exporter // In the event no exporters are configured set a noop exporter
GlobalMeterProvider.set(MeterProvider.noop());
return MeterProvider.noop(); return MeterProvider.noop();
} }
MetricExporterConfiguration.configureExporter( MetricExporterConfiguration.configureExporter(

View File

@ -8,7 +8,6 @@ package io.opentelemetry.sdk.autoconfigure;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.metrics.GlobalMeterProvider;
import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdk;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -18,7 +17,6 @@ class OpenTelemetrySdkAutoConfigurationTest {
@BeforeEach @BeforeEach
void setUp() { void setUp() {
GlobalOpenTelemetry.resetForTest(); GlobalOpenTelemetry.resetForTest();
GlobalMeterProvider.set(null);
} }
@Test @Test
@ -42,14 +40,4 @@ class OpenTelemetrySdkAutoConfigurationTest {
// ObfuscatedOpenTelemetry // ObfuscatedOpenTelemetry
assertThat(GlobalOpenTelemetry.get()).isNotSameAs(sdk); assertThat(GlobalOpenTelemetry.get()).isNotSameAs(sdk);
} }
@Test
void noMetricsSdk() {
// OTEL_METRICS_EXPORTER=none so the metrics SDK should be completely disabled.
// This is a bit of an odd test, so we just ensure that we don't have the same impl class as if
// we instantiated an SDK with a reader.
AutoConfiguredOpenTelemetrySdk.initialize();
assertThat(GlobalMeterProvider.get().getClass().getSimpleName())
.isEqualTo("DefaultMeterProvider");
}
} }

View File

@ -10,7 +10,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import com.linecorp.armeria.client.WebClient; import com.linecorp.armeria.client.WebClient;
import com.linecorp.armeria.common.AggregatedHttpResponse; import com.linecorp.armeria.common.AggregatedHttpResponse;
import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.metrics.GlobalMeterProvider; import io.opentelemetry.sdk.OpenTelemetrySdk;
import java.io.IOException; import java.io.IOException;
import java.net.ServerSocket; import java.net.ServerSocket;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -33,9 +33,11 @@ class PrometheusTest {
} }
System.setProperty("otel.exporter.prometheus.host", "127.0.0.1"); System.setProperty("otel.exporter.prometheus.host", "127.0.0.1");
System.setProperty("otel.exporter.prometheus.port", String.valueOf(port)); System.setProperty("otel.exporter.prometheus.port", String.valueOf(port));
AutoConfiguredOpenTelemetrySdk.initialize(); OpenTelemetrySdk openTelemetrySdk =
AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
GlobalMeterProvider.get() openTelemetrySdk
.getMeterProvider()
.get("test") .get("test")
.gaugeBuilder("test") .gaugeBuilder("test")
.ofLongs() .ofLongs()

View File

@ -7,7 +7,6 @@ package io.opentelemetry.sdk.metrics;
import static io.opentelemetry.api.internal.Utils.checkArgument; import static io.opentelemetry.api.internal.Utils.checkArgument;
import io.opentelemetry.api.metrics.GlobalMeterProvider;
import io.opentelemetry.sdk.common.Clock; import io.opentelemetry.sdk.common.Clock;
import io.opentelemetry.sdk.metrics.exemplar.ExemplarFilter; import io.opentelemetry.sdk.metrics.exemplar.ExemplarFilter;
import io.opentelemetry.sdk.metrics.export.MetricReader; import io.opentelemetry.sdk.metrics.export.MetricReader;
@ -109,11 +108,13 @@ public final class SdkMeterProviderBuilder {
* SdkMeterProviderBuilder} and registers it as the global {@link * SdkMeterProviderBuilder} and registers it as the global {@link
* io.opentelemetry.api.metrics.MeterProvider}. * io.opentelemetry.api.metrics.MeterProvider}.
* *
* @see GlobalMeterProvider * @deprecated Use {@code OpenTelemetrySdkBuilder.buildAndRegisterGlobal} and {@link
* io.opentelemetry.api.GlobalOpenTelemetry}.
*/ */
@Deprecated
public SdkMeterProvider buildAndRegisterGlobal() { public SdkMeterProvider buildAndRegisterGlobal() {
SdkMeterProvider meterProvider = build(); SdkMeterProvider meterProvider = build();
GlobalMeterProvider.set(meterProvider); io.opentelemetry.api.metrics.GlobalMeterProvider.set(meterProvider);
return meterProvider; return meterProvider;
} }
@ -149,8 +150,6 @@ public final class SdkMeterProviderBuilder {
* using {@link SdkMeterProviderBuilder#buildAndRegisterGlobal()} for use by instrumentation when * using {@link SdkMeterProviderBuilder#buildAndRegisterGlobal()} for use by instrumentation when
* that requires access to a global instance of {@link * that requires access to a global instance of {@link
* io.opentelemetry.api.metrics.MeterProvider}. * io.opentelemetry.api.metrics.MeterProvider}.
*
* @see GlobalMeterProvider
*/ */
public SdkMeterProvider build() { public SdkMeterProvider build() {
return new SdkMeterProvider( return new SdkMeterProvider(

View File

@ -7,7 +7,6 @@ package io.opentelemetry.sdk.metrics;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.api.metrics.GlobalMeterProvider;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader; import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.resources.Resource;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -15,12 +14,13 @@ import org.junit.jupiter.api.Test;
class SdkMeterProviderBuilderTest { class SdkMeterProviderBuilderTest {
@Test @Test
@SuppressWarnings("deprecation") // Testing deprecated methods
void buildAndRegisterGlobal() { void buildAndRegisterGlobal() {
SdkMeterProvider meterProvider = SdkMeterProvider.builder().buildAndRegisterGlobal(); SdkMeterProvider meterProvider = SdkMeterProvider.builder().buildAndRegisterGlobal();
try { try {
assertThat(GlobalMeterProvider.get()).isSameAs(meterProvider); assertThat(io.opentelemetry.api.metrics.GlobalMeterProvider.get()).isSameAs(meterProvider);
} finally { } finally {
GlobalMeterProvider.set(null); io.opentelemetry.api.metrics.GlobalMeterProvider.set(null);
} }
} }

View File

@ -5,6 +5,7 @@
package io.opentelemetry.sdk.trace.export; package io.opentelemetry.sdk.trace.export;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader; import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
@ -48,9 +49,10 @@ public class BatchSpanProcessorCpuBenchmark {
@Setup(Level.Iteration) @Setup(Level.Iteration)
public final void setup() { public final void setup() {
metricReader = InMemoryMetricReader.create(); metricReader = InMemoryMetricReader.create();
SdkMeterProvider.builder().registerMetricReader(metricReader).buildAndRegisterGlobal(); MeterProvider meterProvider =
SdkMeterProvider.builder().registerMetricReader(metricReader).build();
SpanExporter exporter = new DelayingSpanExporter(delayMs); SpanExporter exporter = new DelayingSpanExporter(delayMs);
processor = BatchSpanProcessor.builder(exporter).build(); processor = BatchSpanProcessor.builder(exporter).setMeterProvider(meterProvider).build();
tracer = tracer =
SdkTracerProvider.builder().addSpanProcessor(processor).build().get("benchmarkTracer"); SdkTracerProvider.builder().addSpanProcessor(processor).build().get("benchmarkTracer");
} }

View File

@ -5,6 +5,7 @@
package io.opentelemetry.sdk.trace.export; package io.opentelemetry.sdk.trace.export;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader; import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
@ -39,9 +40,10 @@ public class BatchSpanProcessorDroppedSpansBenchmark {
@Setup(Level.Iteration) @Setup(Level.Iteration)
public final void setup() { public final void setup() {
metricReader = InMemoryMetricReader.create(); metricReader = InMemoryMetricReader.create();
SdkMeterProvider.builder().registerMetricReader(metricReader).buildAndRegisterGlobal(); MeterProvider meterProvider =
SdkMeterProvider.builder().registerMetricReader(metricReader).build();
SpanExporter exporter = new DelayingSpanExporter(0); SpanExporter exporter = new DelayingSpanExporter(0);
processor = BatchSpanProcessor.builder(exporter).build(); processor = BatchSpanProcessor.builder(exporter).setMeterProvider(meterProvider).build();
tracer = SdkTracerProvider.builder().build().get("benchmarkTracer"); tracer = SdkTracerProvider.builder().build().get("benchmarkTracer");
} }

View File

@ -5,6 +5,7 @@
package io.opentelemetry.sdk.trace.export; package io.opentelemetry.sdk.trace.export;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader; import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
@ -46,9 +47,10 @@ public class BatchSpanProcessorMultiThreadBenchmark {
@Setup(Level.Iteration) @Setup(Level.Iteration)
public final void setup() { public final void setup() {
collector = InMemoryMetricReader.create(); collector = InMemoryMetricReader.create();
SdkMeterProvider.builder().registerMetricReader(collector).buildAndRegisterGlobal(); MeterProvider meterProvider =
SdkMeterProvider.builder().registerMetricReader(collector).build();
SpanExporter exporter = new DelayingSpanExporter(delayMs); SpanExporter exporter = new DelayingSpanExporter(delayMs);
processor = BatchSpanProcessor.builder(exporter).build(); processor = BatchSpanProcessor.builder(exporter).setMeterProvider(meterProvider).build();
tracer = tracer =
SdkTracerProvider.builder().addSpanProcessor(processor).build().get("benchmarkTracer"); SdkTracerProvider.builder().addSpanProcessor(processor).build().get("benchmarkTracer");
} }