From ebcd508a881a87723b57bc92d8aa7d2ce85a3e85 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 6 May 2020 20:30:33 +0200 Subject: [PATCH] add shortcut methods to get tracers and meters (#1159) * add shortcut methods to get tracers and meters * add shortcut methods to get tracers and meters * add shortcut methods to get tracers and meters * add shortcut methods to get tracers and meters --- QUICKSTART.md | 4 +- .../java/io/opentelemetry/OpenTelemetry.java | 61 +++++++++++++++++++ .../io/opentelemetry/OpenTelemetryTest.java | 2 +- .../metrics/DoubleCounterTest.java | 2 +- .../metrics/DoubleObserverTest.java | 2 +- .../metrics/LongCounterTest.java | 2 +- .../metrics/LongObserverTest.java | 2 +- .../attributes/SemanticAttributesTest.java | 2 +- .../metrics/runtime/GarbageCollector.java | 2 +- .../contrib/metrics/runtime/MemoryPools.java | 2 +- .../example/HelloWorldClient.java | 2 +- .../example/HelloWorldClientStream.java | 2 +- .../example/HelloWorldServer.java | 2 +- .../example/http/HttpClient.java | 2 +- .../example/http/HttpServer.java | 3 +- .../opentelemetry/example/JaegerExample.java | 2 +- .../jaeger/JaegerIntegrationTest.java | 3 +- .../opentracingshim/TraceShimTest.java | 2 +- .../opentracingshim/TracerShimTest.java | 2 +- .../sdk/trace/export/BatchSpansProcessor.java | 2 +- 20 files changed, 81 insertions(+), 22 deletions(-) diff --git a/QUICKSTART.md b/QUICKSTART.md index d21dc57dcd..d122dfaf8f 100644 --- a/QUICKSTART.md +++ b/QUICKSTART.md @@ -40,7 +40,7 @@ monitored. More information is available in the specification chapter [Obtaining ```java Tracer tracer = - OpenTelemetry.getTracerProvider().get("instrumentation-library-name","semver:1.0.0"); + OpenTelemetry.getTracer("instrumentation-library-name","semver:1.0.0"); ``` ### Create basic Span @@ -255,7 +255,7 @@ The following is an example of counter usage: ```java // Gets or creates a named meter instance -Meter meter = OpenTelemetry.getMeterProvider().get("instrumentation-library-name","semver:1.0.0"); +Meter meter = OpenTelemetry.getMeter("instrumentation-library-name","semver:1.0.0"); // Build counter e.g. LongCounter LongCounter counter = meter diff --git a/api/src/main/java/io/opentelemetry/OpenTelemetry.java b/api/src/main/java/io/opentelemetry/OpenTelemetry.java index 83e9ebfcdb..328deeae1f 100644 --- a/api/src/main/java/io/opentelemetry/OpenTelemetry.java +++ b/api/src/main/java/io/opentelemetry/OpenTelemetry.java @@ -74,6 +74,37 @@ public final class OpenTelemetry { return getInstance().tracerProvider; } + /** + * Gets or creates a named tracer instance. + * + *

This is a shortcut method for getTracerProvider().get(instrumentationName). + * + * @param instrumentationName The name of the instrumentation library, not the name of the + * instrument*ed* library (e.g., "io.opentelemetry.contrib.mongodb"). Must not be null. + * @return a tracer instance. + * @since 0.4.0 + */ + public static Tracer getTracer(String instrumentationName) { + return getTracerProvider().get(instrumentationName); + } + + /** + * Gets or creates a named and versioned tracer instance. + * + *

This is a shortcut method for + * getTracerProvider().get(instrumentationName, instrumentationVersion). + * + * @param instrumentationName The name of the instrumentation library, not the name of the + * instrument*ed* library (e.g., "io.opentelemetry.contrib.mongodb"). Must not be null. + * @param instrumentationVersion The version of the instrumentation library (e.g., + * "semver:1.0.0"). + * @return a tracer instance. + * @since 0.4.0 + */ + public static Tracer getTracer(String instrumentationName, String instrumentationVersion) { + return getTracerProvider().get(instrumentationName, instrumentationVersion); + } + /** * Returns a singleton {@link MeterProvider}. * @@ -86,6 +117,36 @@ public final class OpenTelemetry { return getInstance().meterProvider; } + /** + * Gets or creates a named meter instance. + * + *

This is a shortcut method for getMeterProvider().get(instrumentationName). + * + * @param instrumentationName The name of the instrumentation library, not the name of the + * instrument*ed* library. + * @return a tracer instance. + * @since 0.4.0 + */ + public static Meter getMeter(String instrumentationName) { + return getMeterProvider().get(instrumentationName); + } + + /** + * Gets or creates a named and versioned meter instance. + * + *

This is a shortcut method for + * getMeterProvider().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. + * @since 0.4.0 + */ + public static Meter getMeter(String instrumentationName, String instrumentationVersion) { + return getMeterProvider().get(instrumentationName, instrumentationVersion); + } + /** * Returns a singleton {@link CorrelationContextManager}. * diff --git a/api/src/test/java/io/opentelemetry/OpenTelemetryTest.java b/api/src/test/java/io/opentelemetry/OpenTelemetryTest.java index 83d63420cc..709b4a134f 100644 --- a/api/src/test/java/io/opentelemetry/OpenTelemetryTest.java +++ b/api/src/test/java/io/opentelemetry/OpenTelemetryTest.java @@ -118,7 +118,7 @@ public class OpenTelemetryTest { public void testTracerNotFound() { System.setProperty(TraceProvider.class.getName(), "io.does.not.exists"); thrown.expect(IllegalStateException.class); - OpenTelemetry.getTracerProvider().get("testTracer"); + OpenTelemetry.getTracer("testTracer"); } @Test diff --git a/api/src/test/java/io/opentelemetry/metrics/DoubleCounterTest.java b/api/src/test/java/io/opentelemetry/metrics/DoubleCounterTest.java index 239bee2968..9aeafb4ed3 100644 --- a/api/src/test/java/io/opentelemetry/metrics/DoubleCounterTest.java +++ b/api/src/test/java/io/opentelemetry/metrics/DoubleCounterTest.java @@ -34,7 +34,7 @@ public class DoubleCounterTest { private static final String DESCRIPTION = "description"; private static final String UNIT = "1"; - private final Meter meter = OpenTelemetry.getMeterProvider().get("counter_double_test"); + private final Meter meter = OpenTelemetry.getMeter("counter_double_test"); @Test public void preventNonPrintableName() { diff --git a/api/src/test/java/io/opentelemetry/metrics/DoubleObserverTest.java b/api/src/test/java/io/opentelemetry/metrics/DoubleObserverTest.java index a8538f8045..e7339beb2e 100644 --- a/api/src/test/java/io/opentelemetry/metrics/DoubleObserverTest.java +++ b/api/src/test/java/io/opentelemetry/metrics/DoubleObserverTest.java @@ -30,7 +30,7 @@ import org.junit.runners.JUnit4; public class DoubleObserverTest { @Rule public ExpectedException thrown = ExpectedException.none(); - private final Meter meter = OpenTelemetry.getMeterProvider().get("observer_double_test"); + private final Meter meter = OpenTelemetry.getMeter("observer_double_test"); @Test public void preventNonPrintableName() { diff --git a/api/src/test/java/io/opentelemetry/metrics/LongCounterTest.java b/api/src/test/java/io/opentelemetry/metrics/LongCounterTest.java index eabc7384de..bf705507a1 100644 --- a/api/src/test/java/io/opentelemetry/metrics/LongCounterTest.java +++ b/api/src/test/java/io/opentelemetry/metrics/LongCounterTest.java @@ -34,7 +34,7 @@ public class LongCounterTest { private static final String DESCRIPTION = "description"; private static final String UNIT = "1"; - private final Meter meter = OpenTelemetry.getMeterProvider().get("counter_long_test"); + private final Meter meter = OpenTelemetry.getMeter("counter_long_test"); @Test public void preventNonPrintableName() { diff --git a/api/src/test/java/io/opentelemetry/metrics/LongObserverTest.java b/api/src/test/java/io/opentelemetry/metrics/LongObserverTest.java index a40efa60cf..d753ea6774 100644 --- a/api/src/test/java/io/opentelemetry/metrics/LongObserverTest.java +++ b/api/src/test/java/io/opentelemetry/metrics/LongObserverTest.java @@ -30,7 +30,7 @@ import org.junit.runners.JUnit4; public class LongObserverTest { @Rule public ExpectedException thrown = ExpectedException.none(); - private final Meter meter = OpenTelemetry.getMeterProvider().get("observer_long_test"); + private final Meter meter = OpenTelemetry.getMeter("observer_long_test"); @Test public void preventNonPrintableName() { diff --git a/api/src/test/java/io/opentelemetry/trace/attributes/SemanticAttributesTest.java b/api/src/test/java/io/opentelemetry/trace/attributes/SemanticAttributesTest.java index ebfb362ed2..0f98716e32 100644 --- a/api/src/test/java/io/opentelemetry/trace/attributes/SemanticAttributesTest.java +++ b/api/src/test/java/io/opentelemetry/trace/attributes/SemanticAttributesTest.java @@ -37,7 +37,7 @@ public class SemanticAttributesTest { @Before public void setUp() { - Tracer tracer = OpenTelemetry.getTracerProvider().get("io.telemetry.api"); + Tracer tracer = OpenTelemetry.getTracer("io.telemetry.api"); span = tracer.spanBuilder("junit").startSpan(); } diff --git a/contrib/runtime_metrics/src/main/java/io/opentelemetry/contrib/metrics/runtime/GarbageCollector.java b/contrib/runtime_metrics/src/main/java/io/opentelemetry/contrib/metrics/runtime/GarbageCollector.java index f93e73fc05..3a975f2ed4 100644 --- a/contrib/runtime_metrics/src/main/java/io/opentelemetry/contrib/metrics/runtime/GarbageCollector.java +++ b/contrib/runtime_metrics/src/main/java/io/opentelemetry/contrib/metrics/runtime/GarbageCollector.java @@ -50,7 +50,7 @@ public final class GarbageCollector { /** Constructs a new module that is capable to export metrics about "jvm_gc". */ public GarbageCollector() { this.garbageCollectors = ManagementFactory.getGarbageCollectorMXBeans(); - this.meter = OpenTelemetry.getMeterProvider().get("jvm_gc"); + this.meter = OpenTelemetry.getMeter("jvm_gc"); } /** Export all metrics generated by this module. */ diff --git a/contrib/runtime_metrics/src/main/java/io/opentelemetry/contrib/metrics/runtime/MemoryPools.java b/contrib/runtime_metrics/src/main/java/io/opentelemetry/contrib/metrics/runtime/MemoryPools.java index 34b22ac627..08d341643a 100644 --- a/contrib/runtime_metrics/src/main/java/io/opentelemetry/contrib/metrics/runtime/MemoryPools.java +++ b/contrib/runtime_metrics/src/main/java/io/opentelemetry/contrib/metrics/runtime/MemoryPools.java @@ -63,7 +63,7 @@ public final class MemoryPools { public MemoryPools() { this.memoryBean = ManagementFactory.getMemoryMXBean(); this.poolBeans = ManagementFactory.getMemoryPoolMXBeans(); - this.meter = OpenTelemetry.getMeterProvider().get("jvm_memory"); + this.meter = OpenTelemetry.getMeter("jvm_memory"); } /** Export only the "area" metric. */ diff --git a/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldClient.java b/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldClient.java index cc46b0bd49..019ad063c3 100644 --- a/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldClient.java +++ b/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldClient.java @@ -51,7 +51,7 @@ public class HelloWorldClient { // OTel API Tracer tracer = - OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.HelloWorldClient");; + OpenTelemetry.getTracer("io.opentelemetry.example.HelloWorldClient");; // Export traces as log LoggingSpanExporter exporter = new LoggingSpanExporter(); // Share context via text headers diff --git a/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldClientStream.java b/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldClientStream.java index cf4985fa44..d2db13d06e 100644 --- a/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldClientStream.java +++ b/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldClientStream.java @@ -54,7 +54,7 @@ public class HelloWorldClientStream { // OTel API Tracer tracer = - OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.HelloWorldClient");; + OpenTelemetry.getTracer("io.opentelemetry.example.HelloWorldClient");; // Export traces as log LoggingSpanExporter exporter = new LoggingSpanExporter(); // Share context via text headers diff --git a/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldServer.java b/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldServer.java index 55fc125018..369fd9b1a1 100644 --- a/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldServer.java +++ b/examples/grpc/src/main/java/io/opentelemetry/example/HelloWorldServer.java @@ -49,7 +49,7 @@ public class HelloWorldServer { // OTel API Tracer tracer = - OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.HelloWorldServer"); + OpenTelemetry.getTracer("io.opentelemetry.example.HelloWorldServer"); // Export traces as log LoggingSpanExporter exporter = new LoggingSpanExporter(); // Share context via text diff --git a/examples/http/src/main/java/io/opentelemetry/example/http/HttpClient.java b/examples/http/src/main/java/io/opentelemetry/example/http/HttpClient.java index 77d617db70..d3d7a2c985 100644 --- a/examples/http/src/main/java/io/opentelemetry/example/http/HttpClient.java +++ b/examples/http/src/main/java/io/opentelemetry/example/http/HttpClient.java @@ -37,7 +37,7 @@ public class HttpClient { // OTel API private static Tracer tracer = - OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.http.HttpClient"); + OpenTelemetry.getTracer("io.opentelemetry.example.http.HttpClient"); // Export traces to log private static LoggingSpanExporter loggingExporter = new LoggingSpanExporter(); // Inject the span context into the request diff --git a/examples/http/src/main/java/io/opentelemetry/example/http/HttpServer.java b/examples/http/src/main/java/io/opentelemetry/example/http/HttpServer.java index b89fc23fff..31295d5503 100644 --- a/examples/http/src/main/java/io/opentelemetry/example/http/HttpServer.java +++ b/examples/http/src/main/java/io/opentelemetry/example/http/HttpServer.java @@ -28,7 +28,6 @@ import io.opentelemetry.exporters.logging.LoggingSpanExporter; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.export.SimpleSpansProcessor; -import io.opentelemetry.trace.*; import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; @@ -101,7 +100,7 @@ public class HttpServer { // OTel API private static Tracer tracer = - OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.http.HttpServer"); + OpenTelemetry.getTracer("io.opentelemetry.example.http.HttpServer"); // Export traces to log private static LoggingSpanExporter loggingExporter = new LoggingSpanExporter(); // Extract the context from http headers diff --git a/examples/jaeger/src/main/java/io/opentelemetry/example/JaegerExample.java b/examples/jaeger/src/main/java/io/opentelemetry/example/JaegerExample.java index 5c4467256b..05e08b648a 100644 --- a/examples/jaeger/src/main/java/io/opentelemetry/example/JaegerExample.java +++ b/examples/jaeger/src/main/java/io/opentelemetry/example/JaegerExample.java @@ -16,7 +16,7 @@ public class JaegerExample { // OTel API private Tracer tracer = - OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.JaegerExample"); + OpenTelemetry.getTracer("io.opentelemetry.example.JaegerExample"); // Export traces to Jaeger private JaegerGrpcSpanExporter jaegerExporter; diff --git a/exporters/jaeger/src/test/java/io/opentelemetry/exporters/jaeger/JaegerIntegrationTest.java b/exporters/jaeger/src/test/java/io/opentelemetry/exporters/jaeger/JaegerIntegrationTest.java index 3b915de0a6..54bc8c4ba0 100644 --- a/exporters/jaeger/src/test/java/io/opentelemetry/exporters/jaeger/JaegerIntegrationTest.java +++ b/exporters/jaeger/src/test/java/io/opentelemetry/exporters/jaeger/JaegerIntegrationTest.java @@ -49,8 +49,7 @@ public class JaegerIntegrationTest { private static final String JAEGER_VERSION = "1.17"; private static final String SERVICE_NAME = "E2E-test"; private static final String JAEGER_URL = "http://localhost"; - private final Tracer tracer = - OpenTelemetry.getTracerProvider().get(getClass().getCanonicalName()); + private final Tracer tracer = OpenTelemetry.getTracer(getClass().getCanonicalName()); @SuppressWarnings("rawtypes") @ClassRule diff --git a/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TraceShimTest.java b/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TraceShimTest.java index 90902b40fc..f7ef37e536 100644 --- a/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TraceShimTest.java +++ b/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TraceShimTest.java @@ -31,7 +31,7 @@ public class TraceShimTest { @Test public void createTracerShim_default() { TracerShim tracerShim = (TracerShim) TraceShim.createTracerShim(); - assertEquals(OpenTelemetry.getTracerProvider().get("opentracingshim"), tracerShim.tracer()); + assertEquals(OpenTelemetry.getTracer("opentracingshim"), tracerShim.tracer()); assertEquals(OpenTelemetry.getCorrelationContextManager(), tracerShim.contextManager()); } diff --git a/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TracerShimTest.java b/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TracerShimTest.java index 3ded967b92..8e8e9ed87e 100644 --- a/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TracerShimTest.java +++ b/opentracing_shim/src/test/java/io/opentelemetry/opentracingshim/TracerShimTest.java @@ -42,7 +42,7 @@ public class TracerShimTest { tracerShim = new TracerShim( new TelemetryInfo( - OpenTelemetry.getTracerProvider().get("opentracingshim"), + OpenTelemetry.getTracer("opentracingshim"), OpenTelemetry.getCorrelationContextManager(), OpenTelemetry.getPropagators())); } diff --git a/sdk/src/main/java/io/opentelemetry/sdk/trace/export/BatchSpansProcessor.java b/sdk/src/main/java/io/opentelemetry/sdk/trace/export/BatchSpansProcessor.java index c64045f8ec..0a70674cf2 100644 --- a/sdk/src/main/java/io/opentelemetry/sdk/trace/export/BatchSpansProcessor.java +++ b/sdk/src/main/java/io/opentelemetry/sdk/trace/export/BatchSpansProcessor.java @@ -155,7 +155,7 @@ public final class BatchSpansProcessor implements SpanProcessor { private static final class Worker implements Runnable { static { - Meter meter = OpenTelemetry.getMeterProvider().get("io.opentelemetry.sdk.trace"); + Meter meter = OpenTelemetry.getMeter("io.opentelemetry.sdk.trace"); LongCounter droppedSpansCounter = meter .longCounterBuilder("droppedSpans")