Deprecate metrics from opentelemetry-api, add a global version in metrics api (#2279)
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
parent
eccbfebf38
commit
dbb1ae91f9
|
@ -42,6 +42,7 @@ public class DefaultOpenTelemetry implements OpenTelemetry {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public MeterProvider getMeterProvider() {
|
public MeterProvider getMeterProvider() {
|
||||||
return meterProvider;
|
return meterProvider;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ public class DefaultOpenTelemetryBuilder
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public DefaultOpenTelemetryBuilder setMeterProvider(MeterProvider meterProvider) {
|
public DefaultOpenTelemetryBuilder setMeterProvider(MeterProvider meterProvider) {
|
||||||
requireNonNull(meterProvider, "meterProvider");
|
requireNonNull(meterProvider, "meterProvider");
|
||||||
this.meterProvider = meterProvider;
|
this.meterProvider = meterProvider;
|
||||||
|
|
|
@ -115,7 +115,12 @@ public final class GlobalOpenTelemetry {
|
||||||
return get().getTracer(instrumentationName, instrumentationVersion);
|
return get().getTracer(instrumentationName, instrumentationVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns the globally registered {@link MeterProvider}. */
|
/**
|
||||||
|
* Returns the globally registered {@link MeterProvider}.
|
||||||
|
*
|
||||||
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public static MeterProvider getMeterProvider() {
|
public static MeterProvider getMeterProvider() {
|
||||||
return get().getMeterProvider();
|
return get().getMeterProvider();
|
||||||
}
|
}
|
||||||
|
@ -128,7 +133,9 @@ public final class GlobalOpenTelemetry {
|
||||||
* @param instrumentationName The name of the instrumentation library, not the name of the
|
* @param instrumentationName The name of the instrumentation library, not the name of the
|
||||||
* instrument*ed* library.
|
* instrument*ed* library.
|
||||||
* @return a tracer instance.
|
* @return a tracer instance.
|
||||||
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public static Meter getMeter(String instrumentationName) {
|
public static Meter getMeter(String instrumentationName) {
|
||||||
return get().getMeter(instrumentationName);
|
return get().getMeter(instrumentationName);
|
||||||
}
|
}
|
||||||
|
@ -144,7 +151,9 @@ public final class GlobalOpenTelemetry {
|
||||||
* instrument*ed* library.
|
* instrument*ed* library.
|
||||||
* @param instrumentationVersion The version of the instrumentation library.
|
* @param instrumentationVersion The version of the instrumentation library.
|
||||||
* @return a tracer instance.
|
* @return a tracer instance.
|
||||||
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public static Meter getMeter(String instrumentationName, String instrumentationVersion) {
|
public static Meter getMeter(String instrumentationName, String instrumentationVersion) {
|
||||||
return get().getMeter(instrumentationName, instrumentationVersion);
|
return get().getMeter(instrumentationName, instrumentationVersion);
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,7 @@ public interface OpenTelemetry {
|
||||||
/**
|
/**
|
||||||
* Returns the globally registered {@link MeterProvider}.
|
* Returns the globally registered {@link MeterProvider}.
|
||||||
*
|
*
|
||||||
* @deprecated use {@link GlobalOpenTelemetry#getMeterProvider()}
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
static MeterProvider getGlobalMeterProvider() {
|
static MeterProvider getGlobalMeterProvider() {
|
||||||
|
@ -98,7 +98,7 @@ public interface OpenTelemetry {
|
||||||
/**
|
/**
|
||||||
* Gets or creates a named meter instance from the globally registered {@link MeterProvider}.
|
* Gets or creates a named meter instance from the globally registered {@link MeterProvider}.
|
||||||
*
|
*
|
||||||
* @deprecated use {@link GlobalOpenTelemetry#getMeter(String)}
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
static Meter getGlobalMeter(String instrumentationName) {
|
static Meter getGlobalMeter(String instrumentationName) {
|
||||||
|
@ -109,7 +109,7 @@ public interface OpenTelemetry {
|
||||||
* Gets or creates a named and versioned meter instance from the globally registered {@link
|
* Gets or creates a named and versioned meter instance from the globally registered {@link
|
||||||
* MeterProvider}.
|
* MeterProvider}.
|
||||||
*
|
*
|
||||||
* @deprecated use {@link GlobalOpenTelemetry#getMeter(String, String)}
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
static Meter getGlobalMeter(String instrumentationName, String instrumentationVersion) {
|
static Meter getGlobalMeter(String instrumentationName, String instrumentationVersion) {
|
||||||
|
@ -173,17 +173,21 @@ public interface OpenTelemetry {
|
||||||
return getTracerProvider().get(instrumentationName, instrumentationVersion);
|
return getTracerProvider().get(instrumentationName, instrumentationVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns the {@link MeterProvider} for this {@link OpenTelemetry}. */
|
/**
|
||||||
|
* Returns the {@link MeterProvider} for this {@link OpenTelemetry}.
|
||||||
|
*
|
||||||
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
MeterProvider getMeterProvider();
|
MeterProvider getMeterProvider();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets or creates a named meter instance from the {@link MeterProvider} in this {@link
|
* Gets or creates a named meter instance from the {@link MeterProvider} in this {@link
|
||||||
* OpenTelemetry}.
|
* OpenTelemetry}.
|
||||||
*
|
*
|
||||||
* @param instrumentationName The name of the instrumentation library, not the name of the
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
* instrument*ed* library.
|
|
||||||
* @return a tracer instance.
|
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
default Meter getMeter(String instrumentationName) {
|
default Meter getMeter(String instrumentationName) {
|
||||||
return getMeterProvider().get(instrumentationName);
|
return getMeterProvider().get(instrumentationName);
|
||||||
}
|
}
|
||||||
|
@ -192,11 +196,9 @@ public interface OpenTelemetry {
|
||||||
* Gets or creates a named and versioned meter instance from the {@link MeterProvider} in this
|
* Gets or creates a named and versioned meter instance from the {@link MeterProvider} in this
|
||||||
* {@link OpenTelemetry}.
|
* {@link OpenTelemetry}.
|
||||||
*
|
*
|
||||||
* @param instrumentationName The name of the instrumentation library, not the name of the
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
* instrument*ed* library.
|
|
||||||
* @param instrumentationVersion The version of the instrumentation library.
|
|
||||||
* @return a tracer instance.
|
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
default Meter getMeter(String instrumentationName, String instrumentationVersion) {
|
default Meter getMeter(String instrumentationName, String instrumentationVersion) {
|
||||||
return getMeterProvider().get(instrumentationName, instrumentationVersion);
|
return getMeterProvider().get(instrumentationName, instrumentationVersion);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,12 @@ public interface OpenTelemetryBuilder<T extends OpenTelemetryBuilder<T>> {
|
||||||
/** Sets the {@link TracerProvider} to use. */
|
/** Sets the {@link TracerProvider} to use. */
|
||||||
T setTracerProvider(TracerProvider tracerProvider);
|
T setTracerProvider(TracerProvider tracerProvider);
|
||||||
|
|
||||||
/** Sets the {@link MeterProvider} to use. */
|
/**
|
||||||
|
* Sets the {@link MeterProvider} to use.
|
||||||
|
*
|
||||||
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
T setMeterProvider(MeterProvider meterProvider);
|
T setMeterProvider(MeterProvider meterProvider);
|
||||||
|
|
||||||
/** Sets the {@link ContextPropagators} to use. */
|
/** Sets the {@link ContextPropagators} to use. */
|
||||||
|
|
|
@ -41,6 +41,7 @@ import org.junit.jupiter.api.AfterEach;
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation") // Testing deprecated code
|
||||||
class OpenTelemetryTest {
|
class OpenTelemetryTest {
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.opentelemetry.api.metrics;
|
||||||
|
|
||||||
|
import io.opentelemetry.spi.metrics.MeterProviderFactory;
|
||||||
|
import java.util.ServiceLoader;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IMPORTANT: This is a temporary class, and solution for the metrics package until it will be
|
||||||
|
* marked as stable.
|
||||||
|
*/
|
||||||
|
public class GlobalMetricsProvider {
|
||||||
|
private static final Object mutex = new Object();
|
||||||
|
private static final AtomicReference<MeterProvider> globalMeterProvider = new AtomicReference<>();
|
||||||
|
|
||||||
|
private GlobalMetricsProvider() {}
|
||||||
|
|
||||||
|
/** Returns the globally registered {@link MeterProvider}. */
|
||||||
|
public static MeterProvider get() {
|
||||||
|
MeterProvider meterProvider = globalMeterProvider.get();
|
||||||
|
if (meterProvider == null) {
|
||||||
|
synchronized (mutex) {
|
||||||
|
if (globalMeterProvider.get() == null) {
|
||||||
|
MeterProviderFactory meterProviderFactory = loadSpi();
|
||||||
|
if (meterProviderFactory != null) {
|
||||||
|
meterProvider = meterProviderFactory.create();
|
||||||
|
} else {
|
||||||
|
meterProvider = MeterProvider.getDefault();
|
||||||
|
}
|
||||||
|
globalMeterProvider.compareAndSet(null, meterProvider);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return meterProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets or creates a named meter instance from the globally registered {@link MeterProvider}.
|
||||||
|
*
|
||||||
|
* <p>This is a shortcut method for {@code getGlobalMeterProvider().get(instrumentationName)}
|
||||||
|
*
|
||||||
|
* @param instrumentationName The name of the instrumentation library, not the name of the
|
||||||
|
* instrument*ed* library.
|
||||||
|
* @return a tracer instance.
|
||||||
|
*/
|
||||||
|
public static Meter getMeter(String instrumentationName) {
|
||||||
|
return get().get(instrumentationName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets or creates a named and versioned meter instance from the globally registered {@link
|
||||||
|
* MeterProvider}.
|
||||||
|
*
|
||||||
|
* <p>This is a shortcut method for {@code getGlobalMeterProvider().get(instrumentationName,
|
||||||
|
* instrumentationVersion)}
|
||||||
|
*
|
||||||
|
* @param instrumentationName The name of the instrumentation library, not the name of the
|
||||||
|
* instrument*ed* library.
|
||||||
|
* @param instrumentationVersion The version of the instrumentation library.
|
||||||
|
* @return a tracer instance.
|
||||||
|
*/
|
||||||
|
public static Meter getMeter(String instrumentationName, String instrumentationVersion) {
|
||||||
|
return get().get(instrumentationName, instrumentationVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load provider class via {@link ServiceLoader}. A specific provider class can be requested via
|
||||||
|
* setting a system property with FQCN.
|
||||||
|
*
|
||||||
|
* @return a provider or null if not found
|
||||||
|
* @throws IllegalStateException if a specified provider is not found
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
private static MeterProviderFactory loadSpi() {
|
||||||
|
String specifiedProvider = System.getProperty(MeterProviderFactory.class.getName());
|
||||||
|
ServiceLoader<MeterProviderFactory> providers = ServiceLoader.load(MeterProviderFactory.class);
|
||||||
|
for (MeterProviderFactory provider : providers) {
|
||||||
|
if (specifiedProvider == null || specifiedProvider.equals(provider.getClass().getName())) {
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (specifiedProvider != null) {
|
||||||
|
throw new IllegalStateException(
|
||||||
|
String.format("Service provider %s not found", specifiedProvider));
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,7 +5,6 @@
|
||||||
|
|
||||||
package io.opentelemetry.spi.metrics;
|
package io.opentelemetry.spi.metrics;
|
||||||
|
|
||||||
import io.opentelemetry.api.OpenTelemetry;
|
|
||||||
import io.opentelemetry.api.metrics.MeterProvider;
|
import io.opentelemetry.api.metrics.MeterProvider;
|
||||||
import javax.annotation.concurrent.ThreadSafe;
|
import javax.annotation.concurrent.ThreadSafe;
|
||||||
|
|
||||||
|
@ -16,8 +15,6 @@ import javax.annotation.concurrent.ThreadSafe;
|
||||||
* <br>
|
* <br>
|
||||||
* A specific implementation can be selected by a system property {@code
|
* A specific implementation can be selected by a system property {@code
|
||||||
* io.opentelemetry.metrics.spi.MeterProviderFactory} with value of fully qualified class name.
|
* io.opentelemetry.metrics.spi.MeterProviderFactory} with value of fully qualified class name.
|
||||||
*
|
|
||||||
* @see OpenTelemetry
|
|
||||||
*/
|
*/
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
public interface MeterProviderFactory {
|
public interface MeterProviderFactory {
|
|
@ -10,9 +10,10 @@ import com.google.common.util.concurrent.Futures;
|
||||||
import com.google.common.util.concurrent.MoreExecutors;
|
import com.google.common.util.concurrent.MoreExecutors;
|
||||||
import io.grpc.ConnectivityState;
|
import io.grpc.ConnectivityState;
|
||||||
import io.grpc.ManagedChannel;
|
import io.grpc.ManagedChannel;
|
||||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
|
||||||
import io.opentelemetry.api.common.Labels;
|
import io.opentelemetry.api.common.Labels;
|
||||||
|
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||||
import io.opentelemetry.api.metrics.LongCounter;
|
import io.opentelemetry.api.metrics.LongCounter;
|
||||||
|
import io.opentelemetry.api.metrics.Meter;
|
||||||
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest;
|
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest;
|
||||||
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse;
|
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse;
|
||||||
import io.opentelemetry.proto.collector.trace.v1.TraceServiceGrpc;
|
import io.opentelemetry.proto.collector.trace.v1.TraceServiceGrpc;
|
||||||
|
@ -76,16 +77,9 @@ public final class OtlpGrpcSpanExporter implements SpanExporter {
|
||||||
private final TraceServiceFutureStub traceService;
|
private final TraceServiceFutureStub traceService;
|
||||||
private final ManagedChannel managedChannel;
|
private final ManagedChannel managedChannel;
|
||||||
private final long deadlineMs;
|
private final long deadlineMs;
|
||||||
|
private final LongCounter.BoundLongCounter spansSeen;
|
||||||
private final LongCounter spansSeen =
|
private final LongCounter.BoundLongCounter spansExportedSuccess;
|
||||||
GlobalOpenTelemetry.getMeter("io.opentelemetry.exporters.otlp")
|
private final LongCounter.BoundLongCounter spansExportedFailure;
|
||||||
.longCounterBuilder("spansSeenByExporter")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
private final LongCounter spansExported =
|
|
||||||
GlobalOpenTelemetry.getMeter("io.opentelemetry.exporters.otlp")
|
|
||||||
.longCounterBuilder("spansExportedByExporter")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new OTLP gRPC Span Reporter with the given name, using the given channel.
|
* Creates a new OTLP gRPC Span Reporter with the given name, using the given channel.
|
||||||
|
@ -95,6 +89,12 @@ public final class OtlpGrpcSpanExporter implements SpanExporter {
|
||||||
* or to a negative value, the exporter will wait indefinitely.
|
* or to a negative value, the exporter will wait indefinitely.
|
||||||
*/
|
*/
|
||||||
OtlpGrpcSpanExporter(ManagedChannel channel, long deadlineMs) {
|
OtlpGrpcSpanExporter(ManagedChannel channel, long deadlineMs) {
|
||||||
|
Meter meter = GlobalMetricsProvider.getMeter("io.opentelemetry.exporters.otlp");
|
||||||
|
this.spansSeen =
|
||||||
|
meter.longCounterBuilder("spansSeenByExporter").build().bind(EXPORTER_NAME_LABELS);
|
||||||
|
LongCounter spansExportedCounter = meter.longCounterBuilder("spansExportedByExporter").build();
|
||||||
|
this.spansExportedSuccess = spansExportedCounter.bind(EXPORT_SUCCESS_LABELS);
|
||||||
|
this.spansExportedFailure = spansExportedCounter.bind(EXPORT_FAILURE_LABELS);
|
||||||
this.managedChannel = channel;
|
this.managedChannel = channel;
|
||||||
this.deadlineMs = deadlineMs;
|
this.deadlineMs = deadlineMs;
|
||||||
this.traceService = TraceServiceGrpc.newFutureStub(channel);
|
this.traceService = TraceServiceGrpc.newFutureStub(channel);
|
||||||
|
@ -108,7 +108,7 @@ public final class OtlpGrpcSpanExporter implements SpanExporter {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public CompletableResultCode export(Collection<SpanData> spans) {
|
public CompletableResultCode export(Collection<SpanData> spans) {
|
||||||
spansSeen.add(spans.size(), EXPORTER_NAME_LABELS);
|
spansSeen.add(spans.size());
|
||||||
ExportTraceServiceRequest exportTraceServiceRequest =
|
ExportTraceServiceRequest exportTraceServiceRequest =
|
||||||
ExportTraceServiceRequest.newBuilder()
|
ExportTraceServiceRequest.newBuilder()
|
||||||
.addAllResourceSpans(SpanAdapter.toProtoResourceSpans(spans))
|
.addAllResourceSpans(SpanAdapter.toProtoResourceSpans(spans))
|
||||||
|
@ -128,13 +128,13 @@ public final class OtlpGrpcSpanExporter implements SpanExporter {
|
||||||
new FutureCallback<ExportTraceServiceResponse>() {
|
new FutureCallback<ExportTraceServiceResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(@Nullable ExportTraceServiceResponse response) {
|
public void onSuccess(@Nullable ExportTraceServiceResponse response) {
|
||||||
spansExported.add(spans.size(), EXPORT_SUCCESS_LABELS);
|
spansExportedSuccess.add(spans.size());
|
||||||
result.succeed();
|
result.succeed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Throwable t) {
|
||||||
spansExported.add(spans.size(), EXPORT_FAILURE_LABELS);
|
spansExportedFailure.add(spans.size());
|
||||||
logger.log(Level.WARNING, "Failed to export spans. Error message: " + t.getMessage());
|
logger.log(Level.WARNING, "Failed to export spans. Error message: " + t.getMessage());
|
||||||
logger.log(Level.FINEST, "Failed to export spans. Details follow: " + t);
|
logger.log(Level.FINEST, "Failed to export spans. Details follow: " + t);
|
||||||
result.fail();
|
result.fail();
|
||||||
|
@ -181,15 +181,11 @@ public final class OtlpGrpcSpanExporter implements SpanExporter {
|
||||||
@Override
|
@Override
|
||||||
public CompletableResultCode shutdown() {
|
public CompletableResultCode shutdown() {
|
||||||
final CompletableResultCode result = new CompletableResultCode();
|
final CompletableResultCode result = new CompletableResultCode();
|
||||||
managedChannel.notifyWhenStateChanged(
|
managedChannel.notifyWhenStateChanged(ConnectivityState.SHUTDOWN, result::succeed);
|
||||||
ConnectivityState.SHUTDOWN,
|
|
||||||
new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
result.succeed();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
managedChannel.shutdown();
|
managedChannel.shutdown();
|
||||||
|
this.spansSeen.unbind();
|
||||||
|
this.spansExportedSuccess.unbind();
|
||||||
|
this.spansExportedFailure.unbind();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,11 +12,13 @@ import eu.rekawek.toxiproxy.model.ToxicList;
|
||||||
import eu.rekawek.toxiproxy.model.toxic.Timeout;
|
import eu.rekawek.toxiproxy.model.toxic.Timeout;
|
||||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||||
import io.opentelemetry.api.common.Labels;
|
import io.opentelemetry.api.common.Labels;
|
||||||
|
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||||
import io.opentelemetry.api.trace.Span;
|
import io.opentelemetry.api.trace.Span;
|
||||||
import io.opentelemetry.api.trace.Tracer;
|
import io.opentelemetry.api.trace.Tracer;
|
||||||
import io.opentelemetry.context.Scope;
|
import io.opentelemetry.context.Scope;
|
||||||
import io.opentelemetry.exporter.otlp.OtlpGrpcSpanExporter;
|
import io.opentelemetry.exporter.otlp.OtlpGrpcSpanExporter;
|
||||||
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
||||||
|
import io.opentelemetry.sdk.metrics.MeterSdkProvider;
|
||||||
import io.opentelemetry.sdk.metrics.data.MetricData;
|
import io.opentelemetry.sdk.metrics.data.MetricData;
|
||||||
import io.opentelemetry.sdk.metrics.data.MetricData.LongPoint;
|
import io.opentelemetry.sdk.metrics.data.MetricData.LongPoint;
|
||||||
import io.opentelemetry.sdk.metrics.data.MetricData.Point;
|
import io.opentelemetry.sdk.metrics.data.MetricData.Point;
|
||||||
|
@ -240,15 +242,13 @@ public class OtlpPipelineStressTest {
|
||||||
|
|
||||||
// set up the metric exporter and wire it into the SDK and a timed reader.
|
// set up the metric exporter and wire it into the SDK and a timed reader.
|
||||||
|
|
||||||
IntervalMetricReader intervalMetricReader =
|
return IntervalMetricReader.builder()
|
||||||
IntervalMetricReader.builder()
|
.setMetricExporter(metricExporter)
|
||||||
.setMetricExporter(metricExporter)
|
.setMetricProducers(
|
||||||
.setMetricProducers(
|
Collections.singleton(
|
||||||
Collections.singleton(
|
((MeterSdkProvider) GlobalMetricsProvider.get()).getMetricProducer()))
|
||||||
OpenTelemetrySdk.getGlobalMeterProvider().getMetricProducer()))
|
.setExportIntervalMillis(1000)
|
||||||
.setExportIntervalMillis(1000)
|
.build();
|
||||||
.build();
|
|
||||||
return intervalMetricReader;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addOtlpSpanExporter() {
|
private static void addOtlpSpanExporter() {
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
|
|
||||||
package io.opentelemetry.sdk.logging.export;
|
package io.opentelemetry.sdk.logging.export;
|
||||||
|
|
||||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
|
||||||
import io.opentelemetry.api.common.Labels;
|
import io.opentelemetry.api.common.Labels;
|
||||||
import io.opentelemetry.api.internal.Utils;
|
import io.opentelemetry.api.internal.Utils;
|
||||||
|
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||||
import io.opentelemetry.api.metrics.LongCounter;
|
import io.opentelemetry.api.metrics.LongCounter;
|
||||||
import io.opentelemetry.api.metrics.LongCounter.BoundLongCounter;
|
import io.opentelemetry.api.metrics.LongCounter.BoundLongCounter;
|
||||||
import io.opentelemetry.api.metrics.Meter;
|
import io.opentelemetry.api.metrics.Meter;
|
||||||
|
@ -70,7 +70,7 @@ public class BatchLogProcessor implements LogProcessor {
|
||||||
|
|
||||||
private static class Worker implements Runnable {
|
private static class Worker implements Runnable {
|
||||||
static {
|
static {
|
||||||
Meter meter = GlobalOpenTelemetry.getMeter("io.opentelemetry.sdk.logging");
|
Meter meter = GlobalMetricsProvider.getMeter("io.opentelemetry.sdk.logging");
|
||||||
LongCounter logRecordsProcessed =
|
LongCounter logRecordsProcessed =
|
||||||
meter
|
meter
|
||||||
.longCounterBuilder("logRecordsProcessed")
|
.longCounterBuilder("logRecordsProcessed")
|
||||||
|
|
|
@ -6,9 +6,10 @@
|
||||||
package io.opentelemetry.sdk.trace.export;
|
package io.opentelemetry.sdk.trace.export;
|
||||||
|
|
||||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||||
|
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||||
import io.opentelemetry.api.trace.Tracer;
|
import io.opentelemetry.api.trace.Tracer;
|
||||||
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
|
||||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||||
|
import io.opentelemetry.sdk.metrics.MeterSdkProvider;
|
||||||
import io.opentelemetry.sdk.metrics.data.MetricData;
|
import io.opentelemetry.sdk.metrics.data.MetricData;
|
||||||
import io.opentelemetry.sdk.metrics.data.MetricData.LongPoint;
|
import io.opentelemetry.sdk.metrics.data.MetricData.LongPoint;
|
||||||
import io.opentelemetry.sdk.metrics.data.MetricData.Point;
|
import io.opentelemetry.sdk.metrics.data.MetricData.Point;
|
||||||
|
@ -55,7 +56,7 @@ public class BatchSpanProcessorDroppedSpansBenchmark {
|
||||||
@State(Scope.Benchmark)
|
@State(Scope.Benchmark)
|
||||||
public static class BenchmarkState {
|
public static class BenchmarkState {
|
||||||
private final MetricProducer metricProducer =
|
private final MetricProducer metricProducer =
|
||||||
OpenTelemetrySdk.getGlobalMeterProvider().getMetricProducer();
|
((MeterSdkProvider) GlobalMetricsProvider.get()).getMetricProducer();
|
||||||
private BatchSpanProcessor processor;
|
private BatchSpanProcessor processor;
|
||||||
private Tracer tracer;
|
private Tracer tracer;
|
||||||
private Collection<MetricData> allMetrics;
|
private Collection<MetricData> allMetrics;
|
||||||
|
|
|
@ -57,7 +57,12 @@ public final class OpenTelemetrySdk extends DefaultOpenTelemetry {
|
||||||
return (SdkTracerProvider) ((ObfuscatedTracerProvider) tracerProvider).unobfuscate();
|
return (SdkTracerProvider) ((ObfuscatedTracerProvider) tracerProvider).unobfuscate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns the global {@link MeterSdkProvider}. */
|
/**
|
||||||
|
* Returns the global {@link MeterSdkProvider}.
|
||||||
|
*
|
||||||
|
* @deprecated this will be removed soon in preparation for the initial otel release.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public static MeterSdkProvider getGlobalMeterProvider() {
|
public static MeterSdkProvider getGlobalMeterProvider() {
|
||||||
return (MeterSdkProvider) GlobalOpenTelemetry.get().getMeterProvider();
|
return (MeterSdkProvider) GlobalOpenTelemetry.get().getMeterProvider();
|
||||||
}
|
}
|
||||||
|
@ -130,6 +135,7 @@ public final class OpenTelemetrySdk extends DefaultOpenTelemetry {
|
||||||
* @see MeterSdkProvider#builder()
|
* @see MeterSdkProvider#builder()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Deprecated
|
||||||
public Builder setMeterProvider(MeterProvider meterProvider) {
|
public Builder setMeterProvider(MeterProvider meterProvider) {
|
||||||
if (!(meterProvider instanceof MeterSdkProvider)) {
|
if (!(meterProvider instanceof MeterSdkProvider)) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
|
|
|
@ -40,6 +40,7 @@ import org.mockito.Mock;
|
||||||
import org.mockito.junit.jupiter.MockitoExtension;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
@ExtendWith(MockitoExtension.class)
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
@SuppressWarnings("deprecation") // Testing deprecated code
|
||||||
class OpenTelemetrySdkTest {
|
class OpenTelemetrySdkTest {
|
||||||
|
|
||||||
@Mock private SdkTracerProvider tracerProvider;
|
@Mock private SdkTracerProvider tracerProvider;
|
||||||
|
|
|
@ -7,7 +7,7 @@ package io.opentelemetry.sdk.metrics.spi;
|
||||||
|
|
||||||
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.metrics.GlobalMetricsProvider;
|
||||||
import io.opentelemetry.sdk.metrics.MeterSdkProvider;
|
import io.opentelemetry.sdk.metrics.MeterSdkProvider;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
@ -15,6 +15,6 @@ import org.junit.jupiter.api.Test;
|
||||||
class MeterProviderFactorySdkTest {
|
class MeterProviderFactorySdkTest {
|
||||||
@Test
|
@Test
|
||||||
void testDefault() {
|
void testDefault() {
|
||||||
assertThat(GlobalOpenTelemetry.getMeterProvider()).isInstanceOf(MeterSdkProvider.class);
|
assertThat(GlobalMetricsProvider.get()).isInstanceOf(MeterSdkProvider.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
package io.opentelemetry.sdk.trace.export;
|
package io.opentelemetry.sdk.trace.export;
|
||||||
|
|
||||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
|
||||||
import io.opentelemetry.api.common.Labels;
|
import io.opentelemetry.api.common.Labels;
|
||||||
|
import io.opentelemetry.api.metrics.GlobalMetricsProvider;
|
||||||
import io.opentelemetry.api.metrics.LongCounter;
|
import io.opentelemetry.api.metrics.LongCounter;
|
||||||
import io.opentelemetry.api.metrics.LongCounter.BoundLongCounter;
|
import io.opentelemetry.api.metrics.LongCounter.BoundLongCounter;
|
||||||
import io.opentelemetry.api.metrics.Meter;
|
import io.opentelemetry.api.metrics.Meter;
|
||||||
|
@ -169,7 +169,7 @@ public final class BatchSpanProcessor implements SpanProcessor {
|
||||||
this.maxExportBatchSize = maxExportBatchSize;
|
this.maxExportBatchSize = maxExportBatchSize;
|
||||||
this.exporterTimeoutMillis = exporterTimeoutMillis;
|
this.exporterTimeoutMillis = exporterTimeoutMillis;
|
||||||
this.queue = queue;
|
this.queue = queue;
|
||||||
Meter meter = GlobalOpenTelemetry.getMeter("io.opentelemetry.sdk.trace");
|
Meter meter = GlobalMetricsProvider.getMeter("io.opentelemetry.sdk.trace");
|
||||||
meter
|
meter
|
||||||
.longValueObserverBuilder("queueSize")
|
.longValueObserverBuilder("queueSize")
|
||||||
.setDescription("The number of spans queued")
|
.setDescription("The number of spans queued")
|
||||||
|
|
Loading…
Reference in New Issue