Deprecate GlobalMeterProvider (#3948)
This commit is contained in:
parent
b1651a18cf
commit
737a5e2b26
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue