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
This commit is contained in:
Gregor Zeitlinger 2020-05-06 20:30:33 +02:00 committed by GitHub
parent 19d7e03572
commit ebcd508a88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 81 additions and 22 deletions

View File

@ -40,7 +40,7 @@ monitored. More information is available in the specification chapter [Obtaining
```java ```java
Tracer tracer = Tracer tracer =
OpenTelemetry.getTracerProvider().get("instrumentation-library-name","semver:1.0.0"); OpenTelemetry.getTracer("instrumentation-library-name","semver:1.0.0");
``` ```
### Create basic Span ### Create basic Span
@ -255,7 +255,7 @@ The following is an example of counter usage:
```java ```java
// Gets or creates a named meter instance // 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 // Build counter e.g. LongCounter
LongCounter counter = meter LongCounter counter = meter

View File

@ -74,6 +74,37 @@ public final class OpenTelemetry {
return getInstance().tracerProvider; return getInstance().tracerProvider;
} }
/**
* Gets or creates a named tracer instance.
*
* <p>This is a shortcut method for <code>getTracerProvider().get(instrumentationName)</code>.
*
* @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.
*
* <p>This is a shortcut method for <code>
* getTracerProvider().get(instrumentationName, instrumentationVersion)</code>.
*
* @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}. * Returns a singleton {@link MeterProvider}.
* *
@ -86,6 +117,36 @@ public final class OpenTelemetry {
return getInstance().meterProvider; return getInstance().meterProvider;
} }
/**
* Gets or creates a named meter instance.
*
* <p>This is a shortcut method for <code>getMeterProvider().get(instrumentationName)</code>.
*
* @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.
*
* <p>This is a shortcut method for <code>
* getMeterProvider().get(instrumentationName, instrumentationVersion)</code>.
*
* @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}. * Returns a singleton {@link CorrelationContextManager}.
* *

View File

@ -118,7 +118,7 @@ public class OpenTelemetryTest {
public void testTracerNotFound() { public void testTracerNotFound() {
System.setProperty(TraceProvider.class.getName(), "io.does.not.exists"); System.setProperty(TraceProvider.class.getName(), "io.does.not.exists");
thrown.expect(IllegalStateException.class); thrown.expect(IllegalStateException.class);
OpenTelemetry.getTracerProvider().get("testTracer"); OpenTelemetry.getTracer("testTracer");
} }
@Test @Test

View File

@ -34,7 +34,7 @@ public class DoubleCounterTest {
private static final String DESCRIPTION = "description"; private static final String DESCRIPTION = "description";
private static final String UNIT = "1"; 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 @Test
public void preventNonPrintableName() { public void preventNonPrintableName() {

View File

@ -30,7 +30,7 @@ import org.junit.runners.JUnit4;
public class DoubleObserverTest { public class DoubleObserverTest {
@Rule public ExpectedException thrown = ExpectedException.none(); @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 @Test
public void preventNonPrintableName() { public void preventNonPrintableName() {

View File

@ -34,7 +34,7 @@ public class LongCounterTest {
private static final String DESCRIPTION = "description"; private static final String DESCRIPTION = "description";
private static final String UNIT = "1"; 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 @Test
public void preventNonPrintableName() { public void preventNonPrintableName() {

View File

@ -30,7 +30,7 @@ import org.junit.runners.JUnit4;
public class LongObserverTest { public class LongObserverTest {
@Rule public ExpectedException thrown = ExpectedException.none(); @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 @Test
public void preventNonPrintableName() { public void preventNonPrintableName() {

View File

@ -37,7 +37,7 @@ public class SemanticAttributesTest {
@Before @Before
public void setUp() { public void setUp() {
Tracer tracer = OpenTelemetry.getTracerProvider().get("io.telemetry.api"); Tracer tracer = OpenTelemetry.getTracer("io.telemetry.api");
span = tracer.spanBuilder("junit").startSpan(); span = tracer.spanBuilder("junit").startSpan();
} }

View File

@ -50,7 +50,7 @@ public final class GarbageCollector {
/** Constructs a new module that is capable to export metrics about "jvm_gc". */ /** Constructs a new module that is capable to export metrics about "jvm_gc". */
public GarbageCollector() { public GarbageCollector() {
this.garbageCollectors = ManagementFactory.getGarbageCollectorMXBeans(); this.garbageCollectors = ManagementFactory.getGarbageCollectorMXBeans();
this.meter = OpenTelemetry.getMeterProvider().get("jvm_gc"); this.meter = OpenTelemetry.getMeter("jvm_gc");
} }
/** Export all metrics generated by this module. */ /** Export all metrics generated by this module. */

View File

@ -63,7 +63,7 @@ public final class MemoryPools {
public MemoryPools() { public MemoryPools() {
this.memoryBean = ManagementFactory.getMemoryMXBean(); this.memoryBean = ManagementFactory.getMemoryMXBean();
this.poolBeans = ManagementFactory.getMemoryPoolMXBeans(); this.poolBeans = ManagementFactory.getMemoryPoolMXBeans();
this.meter = OpenTelemetry.getMeterProvider().get("jvm_memory"); this.meter = OpenTelemetry.getMeter("jvm_memory");
} }
/** Export only the "area" metric. */ /** Export only the "area" metric. */

View File

@ -51,7 +51,7 @@ public class HelloWorldClient {
// OTel API // OTel API
Tracer tracer = Tracer tracer =
OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.HelloWorldClient");; OpenTelemetry.getTracer("io.opentelemetry.example.HelloWorldClient");;
// Export traces as log // Export traces as log
LoggingSpanExporter exporter = new LoggingSpanExporter(); LoggingSpanExporter exporter = new LoggingSpanExporter();
// Share context via text headers // Share context via text headers

View File

@ -54,7 +54,7 @@ public class HelloWorldClientStream {
// OTel API // OTel API
Tracer tracer = Tracer tracer =
OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.HelloWorldClient");; OpenTelemetry.getTracer("io.opentelemetry.example.HelloWorldClient");;
// Export traces as log // Export traces as log
LoggingSpanExporter exporter = new LoggingSpanExporter(); LoggingSpanExporter exporter = new LoggingSpanExporter();
// Share context via text headers // Share context via text headers

View File

@ -49,7 +49,7 @@ public class HelloWorldServer {
// OTel API // OTel API
Tracer tracer = Tracer tracer =
OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.HelloWorldServer"); OpenTelemetry.getTracer("io.opentelemetry.example.HelloWorldServer");
// Export traces as log // Export traces as log
LoggingSpanExporter exporter = new LoggingSpanExporter(); LoggingSpanExporter exporter = new LoggingSpanExporter();
// Share context via text // Share context via text

View File

@ -37,7 +37,7 @@ public class HttpClient {
// OTel API // OTel API
private static Tracer tracer = private static Tracer tracer =
OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.http.HttpClient"); OpenTelemetry.getTracer("io.opentelemetry.example.http.HttpClient");
// Export traces to log // Export traces to log
private static LoggingSpanExporter loggingExporter = new LoggingSpanExporter(); private static LoggingSpanExporter loggingExporter = new LoggingSpanExporter();
// Inject the span context into the request // Inject the span context into the request

View File

@ -28,7 +28,6 @@ import io.opentelemetry.exporters.logging.LoggingSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.TracerSdkProvider; import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.export.SimpleSpansProcessor; import io.opentelemetry.sdk.trace.export.SimpleSpansProcessor;
import io.opentelemetry.trace.*;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
@ -101,7 +100,7 @@ public class HttpServer {
// OTel API // OTel API
private static Tracer tracer = private static Tracer tracer =
OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.http.HttpServer"); OpenTelemetry.getTracer("io.opentelemetry.example.http.HttpServer");
// Export traces to log // Export traces to log
private static LoggingSpanExporter loggingExporter = new LoggingSpanExporter(); private static LoggingSpanExporter loggingExporter = new LoggingSpanExporter();
// Extract the context from http headers // Extract the context from http headers

View File

@ -16,7 +16,7 @@ public class JaegerExample {
// OTel API // OTel API
private Tracer tracer = private Tracer tracer =
OpenTelemetry.getTracerProvider().get("io.opentelemetry.example.JaegerExample"); OpenTelemetry.getTracer("io.opentelemetry.example.JaegerExample");
// Export traces to Jaeger // Export traces to Jaeger
private JaegerGrpcSpanExporter jaegerExporter; private JaegerGrpcSpanExporter jaegerExporter;

View File

@ -49,8 +49,7 @@ public class JaegerIntegrationTest {
private static final String JAEGER_VERSION = "1.17"; private static final String JAEGER_VERSION = "1.17";
private static final String SERVICE_NAME = "E2E-test"; private static final String SERVICE_NAME = "E2E-test";
private static final String JAEGER_URL = "http://localhost"; private static final String JAEGER_URL = "http://localhost";
private final Tracer tracer = private final Tracer tracer = OpenTelemetry.getTracer(getClass().getCanonicalName());
OpenTelemetry.getTracerProvider().get(getClass().getCanonicalName());
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
@ClassRule @ClassRule

View File

@ -31,7 +31,7 @@ public class TraceShimTest {
@Test @Test
public void createTracerShim_default() { public void createTracerShim_default() {
TracerShim tracerShim = (TracerShim) TraceShim.createTracerShim(); TracerShim tracerShim = (TracerShim) TraceShim.createTracerShim();
assertEquals(OpenTelemetry.getTracerProvider().get("opentracingshim"), tracerShim.tracer()); assertEquals(OpenTelemetry.getTracer("opentracingshim"), tracerShim.tracer());
assertEquals(OpenTelemetry.getCorrelationContextManager(), tracerShim.contextManager()); assertEquals(OpenTelemetry.getCorrelationContextManager(), tracerShim.contextManager());
} }

View File

@ -42,7 +42,7 @@ public class TracerShimTest {
tracerShim = tracerShim =
new TracerShim( new TracerShim(
new TelemetryInfo( new TelemetryInfo(
OpenTelemetry.getTracerProvider().get("opentracingshim"), OpenTelemetry.getTracer("opentracingshim"),
OpenTelemetry.getCorrelationContextManager(), OpenTelemetry.getCorrelationContextManager(),
OpenTelemetry.getPropagators())); OpenTelemetry.getPropagators()));
} }

View File

@ -155,7 +155,7 @@ public final class BatchSpansProcessor implements SpanProcessor {
private static final class Worker implements Runnable { private static final class Worker implements Runnable {
static { static {
Meter meter = OpenTelemetry.getMeterProvider().get("io.opentelemetry.sdk.trace"); Meter meter = OpenTelemetry.getMeter("io.opentelemetry.sdk.trace");
LongCounter droppedSpansCounter = LongCounter droppedSpansCounter =
meter meter
.longCounterBuilder("droppedSpans") .longCounterBuilder("droppedSpans")