Example updates for 0.15.0 (#2611)

* WIP on updating examples for 0.15.0

* final updates to 0.15.0

* make the getter static
This commit is contained in:
John Watson 2021-02-01 09:24:02 -08:00 committed by GitHub
parent 24cfb4acbf
commit 68ee47108a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 71 additions and 76 deletions

View File

@ -13,7 +13,8 @@ subprojects {
version = "0.1.0-SNAPSHOT" version = "0.1.0-SNAPSHOT"
ext { ext {
openTelemetryVersion = "0.14.1" openTelemetryVersion = "0.15.0"
openTelemetryAlphaVersion = "0.15.0-alpha"
grpcVersion = '1.34.1' grpcVersion = '1.34.1'
protobufVersion = '3.11.4' protobufVersion = '3.11.4'
protocVersion = protobufVersion protocVersion = protobufVersion

View File

@ -36,7 +36,7 @@ class ExampleConfiguration {
() -> { () -> {
System.err.println( System.err.println(
"*** forcing the Span Exporter to shutdown and process the remaining spans"); "*** forcing the Span Exporter to shutdown and process the remaining spans");
openTelemetrySdk.getTracerManagement().shutdown(); sdkTracerProvider.shutdown();
System.err.println("*** Trace Exporter shut down"); System.err.println("*** Trace Exporter shut down");
})); }));

View File

@ -21,7 +21,6 @@ import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.api.trace.StatusCode;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.api.trace.attributes.SemanticAttributes;
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
import io.opentelemetry.context.Context; import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
@ -31,6 +30,7 @@ import io.opentelemetry.exporter.logging.LoggingSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -163,12 +163,11 @@ public class HelloWorldClientStream {
} }
private static OpenTelemetry initOpenTelemetry(LoggingSpanExporter exporter) { private static OpenTelemetry initOpenTelemetry(LoggingSpanExporter exporter) {
// install the W3C Trace Context propagator
// Get the tracer management instance
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder().build();
// Set to process the the spans by the LogExporter // Set to process the the spans by the LogExporter
sdkTracerProvider.addSpanProcessor(SimpleSpanProcessor.builder(exporter).build()); SdkTracerProvider sdkTracerProvider =
SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(exporter)).build();
// install the W3C Trace Context propagator
return OpenTelemetrySdk.builder() return OpenTelemetrySdk.builder()
.setTracerProvider(sdkTracerProvider) .setTracerProvider(sdkTracerProvider)
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance())) .setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))

View File

@ -34,15 +34,8 @@ public class HelloWorldServer {
// lifecycle. // lifecycle.
private static final OpenTelemetry openTelemetry = ExampleConfiguration.initOpenTelemetry(); private static final OpenTelemetry openTelemetry = ExampleConfiguration.initOpenTelemetry();
private Server server;
private final Tracer tracer =
openTelemetry.getTracer("io.opentelemetry.example.HelloWorldServer");
private final TextMapPropagator textFormat =
openTelemetry.getPropagators().getTextMapPropagator();
// Extract the Distributed Context from the gRPC metadata // Extract the Distributed Context from the gRPC metadata
TextMapPropagator.Getter<Metadata> getter = private static final TextMapPropagator.Getter<Metadata> getter =
new TextMapPropagator.Getter<>() { new TextMapPropagator.Getter<>() {
@Override @Override
public Iterable<String> keys(Metadata carrier) { public Iterable<String> keys(Metadata carrier) {
@ -59,6 +52,13 @@ public class HelloWorldServer {
} }
}; };
private Server server;
private final Tracer tracer =
openTelemetry.getTracer("io.opentelemetry.example.HelloWorldServer");
private final TextMapPropagator textFormat =
openTelemetry.getPropagators().getTextMapPropagator();
private void start() throws IOException { private void start() throws IOException {
/* The port on which the server should run */ /* The port on which the server should run */

View File

@ -7,10 +7,9 @@ ext.moduleName = "io.opentelemetry.examples.http"
dependencies { dependencies {
compile("io.opentelemetry:opentelemetry-api") compile("io.opentelemetry:opentelemetry-api")
compile("io.opentelemetry:opentelemetry-semconv") compile("io.opentelemetry:opentelemetry-semconv:${openTelemetryAlphaVersion}")
compile("io.opentelemetry:opentelemetry-sdk") compile("io.opentelemetry:opentelemetry-sdk")
compile("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure") compile("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:${openTelemetryAlphaVersion}")
compile("io.opentelemetry:opentelemetry-exporter-logging") compile("io.opentelemetry:opentelemetry-exporter-logging")
compile "io.grpc:grpc-context" compile "io.grpc:grpc-context"
} }

View File

@ -37,7 +37,7 @@ class ExampleConfiguration {
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance())) .setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
.build(); .build();
Runtime.getRuntime().addShutdownHook(new Thread(() -> sdk.getTracerManagement().shutdown())); Runtime.getRuntime().addShutdownHook(new Thread(sdkTracerProvider::shutdown));
return sdk; return sdk;
} }
} }

View File

@ -8,10 +8,13 @@ package io.opentelemetry.example.jaeger;
import io.grpc.ManagedChannel; import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder; import io.grpc.ManagedChannelBuilder;
import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter; import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
@ -34,23 +37,24 @@ class ExampleConfiguration {
// Export traces to Jaeger // Export traces to Jaeger
JaegerGrpcSpanExporter jaegerExporter = JaegerGrpcSpanExporter jaegerExporter =
JaegerGrpcSpanExporter.builder() JaegerGrpcSpanExporter.builder()
.setServiceName("otel-jaeger-example")
.setChannel(jaegerChannel) .setChannel(jaegerChannel)
.setTimeout(30, TimeUnit.SECONDS) .setTimeout(30, TimeUnit.SECONDS)
.build(); .build();
Resource serviceNameResource =
Resource.create(Attributes.of(ResourceAttributes.SERVICE_NAME, "otel-jaeger-example"));
// Set to process the spans by the Jaeger Exporter // Set to process the spans by the Jaeger Exporter
OpenTelemetrySdk openTelemetry = SdkTracerProvider tracerProvider =
OpenTelemetrySdk.builder()
.setTracerProvider(
SdkTracerProvider.builder() SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(jaegerExporter)) .addSpanProcessor(SimpleSpanProcessor.create(jaegerExporter))
.build()) .setResource(Resource.getDefault().merge(serviceNameResource))
.build(); .build();
OpenTelemetrySdk openTelemetry =
OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
// it's always a good idea to shut down the SDK cleanly at JVM exit. // it's always a good idea to shut down the SDK cleanly at JVM exit.
Runtime.getRuntime() Runtime.getRuntime().addShutdownHook(new Thread(tracerProvider::shutdown));
.addShutdownHook(new Thread(() -> openTelemetry.getTracerManagement().shutdown()));
return openTelemetry; return openTelemetry;
} }

View File

@ -7,5 +7,5 @@ ext.moduleName = "io.opentelemetry.examples.metrics"
dependencies { dependencies {
compile("io.opentelemetry:opentelemetry-api") compile("io.opentelemetry:opentelemetry-api")
compile("io.opentelemetry:opentelemetry-api-metrics:${openTelemetryVersion}-alpha") compile("io.opentelemetry:opentelemetry-api-metrics:${openTelemetryAlphaVersion}")
} }

View File

@ -3,9 +3,9 @@ package io.opentelemetry.example.metrics;
import io.opentelemetry.api.DefaultOpenTelemetry; import io.opentelemetry.api.DefaultOpenTelemetry;
import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.Labels; import io.opentelemetry.api.common.Labels;
import io.opentelemetry.api.metrics.BoundLongCounter;
import io.opentelemetry.api.metrics.GlobalMetricsProvider; 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.Meter; import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Span.Kind; import io.opentelemetry.api.trace.Span.Kind;
@ -16,8 +16,7 @@ import java.io.File;
import javax.swing.filechooser.FileSystemView; import javax.swing.filechooser.FileSystemView;
/** /**
* Example of using {@link LongCounter} and {@link LongCounter.BoundLongCounter} to count searched * Example of using {@link LongCounter} and {@link BoundLongCounter} to count searched directories.
* directories.
*/ */
public class LongCounterExample { public class LongCounterExample {
private static final OpenTelemetry openTelemetry = DefaultOpenTelemetry.builder().build(); private static final OpenTelemetry openTelemetry = DefaultOpenTelemetry.builder().build();

View File

@ -9,11 +9,11 @@ dependencies {
implementation("io.opentelemetry:opentelemetry-api") implementation("io.opentelemetry:opentelemetry-api")
implementation("io.opentelemetry:opentelemetry-sdk") implementation("io.opentelemetry:opentelemetry-sdk")
implementation("io.opentelemetry:opentelemetry-exporter-otlp") implementation("io.opentelemetry:opentelemetry-exporter-otlp")
//pull in the autoconfigure extension so we parse the `otel.resource.attributes` system property used in the example.
implementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
implementation("io.opentelemetry:opentelemetry-api-metrics:${openTelemetryVersion}-alpha") //pull in the autoconfigure extension so we parse the `otel.resource.attributes` system property used in the example.
implementation("io.opentelemetry:opentelemetry-sdk-metrics:${openTelemetryVersion}-alpha") implementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:${openTelemetryAlphaVersion}")
implementation("io.opentelemetry:opentelemetry-exporter-otlp-metrics:${openTelemetryVersion}-alpha") implementation("io.opentelemetry:opentelemetry-api-metrics:${openTelemetryAlphaVersion}")
implementation("io.opentelemetry:opentelemetry-sdk-metrics:${openTelemetryAlphaVersion}")
implementation("io.opentelemetry:opentelemetry-exporter-otlp-metrics:${openTelemetryAlphaVersion}")
implementation "io.grpc:grpc-netty-shaded" implementation "io.grpc:grpc-netty-shaded"
} }

View File

@ -37,17 +37,15 @@ public class ExampleConfiguration {
.setScheduleDelay(100, TimeUnit.MILLISECONDS) .setScheduleDelay(100, TimeUnit.MILLISECONDS)
.build(); .build();
OpenTelemetrySdk openTelemetrySdk = SdkTracerProvider tracerProvider =
OpenTelemetrySdk.builder()
.setTracerProvider(
SdkTracerProvider.builder() SdkTracerProvider.builder()
.addSpanProcessor(spanProcessor) .addSpanProcessor(spanProcessor)
.setResource(Resource.getDefault()) .setResource(Resource.getDefault())
.build()) .build();
.buildAndRegisterGlobal(); OpenTelemetrySdk openTelemetrySdk =
OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).buildAndRegisterGlobal();
Runtime.getRuntime() Runtime.getRuntime().addShutdownHook(new Thread(tracerProvider::shutdown));
.addShutdownHook(new Thread(() -> openTelemetrySdk.getTracerManagement().shutdown()));
return openTelemetrySdk; return openTelemetrySdk;
} }

View File

@ -8,7 +8,7 @@ ext.moduleName = "io.opentelemetry.examples.prometheus"
dependencies { dependencies {
compile("io.opentelemetry:opentelemetry-api") compile("io.opentelemetry:opentelemetry-api")
compile("io.opentelemetry:opentelemetry-sdk") compile("io.opentelemetry:opentelemetry-sdk")
compile("io.opentelemetry:opentelemetry-exporter-prometheus") compile("io.opentelemetry:opentelemetry-exporter-prometheus:${openTelemetryAlphaVersion}")
compile("io.prometheus:simpleclient:0.8.1") compile("io.prometheus:simpleclient:0.8.1")
compile("io.prometheus:simpleclient_httpserver:0.8.1") compile("io.prometheus:simpleclient_httpserver:0.8.1")
} }

View File

@ -8,7 +8,6 @@ package io.opentelemetry.sdk.example;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.exporter.logging.LoggingSpanExporter; import io.opentelemetry.exporter.logging.LoggingSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.SdkTracerManagement;
import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.SpanProcessor; import io.opentelemetry.sdk.trace.SpanProcessor;
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor; import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
@ -21,7 +20,7 @@ public class ConfigureSpanProcessorExample {
private static final LoggingSpanExporter exporter = new LoggingSpanExporter(); private static final LoggingSpanExporter exporter = new LoggingSpanExporter();
private static final OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().build(); private static final OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().build();
// Get the Tracer Management interface // Get the Tracer Management interface
private static final SdkTracerManagement tracerManagement = openTelemetry.getTracerManagement(); private static final SdkTracerProvider tracerManagement = openTelemetry.getSdkTracerProvider();
// Acquire a tracer // Acquire a tracer
private static final Tracer tracer = openTelemetry.getTracer("ConfigureSpanProcessorExample"); private static final Tracer tracer = openTelemetry.getTracer("ConfigureSpanProcessorExample");
@ -64,7 +63,6 @@ public class ConfigureSpanProcessorExample {
// Configure the batch spans processor. This span processor exports span in batches. // Configure the batch spans processor. This span processor exports span in batches.
BatchSpanProcessor batchSpansProcessor = BatchSpanProcessor batchSpansProcessor =
BatchSpanProcessor.builder(exporter) BatchSpanProcessor.builder(exporter)
.setExportOnlySampled(true) // send to the exporter only spans that have been sampled
.setMaxExportBatchSize(512) // set the maximum batch size to use .setMaxExportBatchSize(512) // set the maximum batch size to use
.setMaxQueueSize(2048) // set the queue size. This must be >= the export batch size .setMaxQueueSize(2048) // set the queue size. This must be >= the export batch size
.setExporterTimeout( .setExporterTimeout(

View File

@ -17,6 +17,7 @@ import io.opentelemetry.sdk.trace.config.TraceConfig;
import io.opentelemetry.sdk.trace.data.LinkData; import io.opentelemetry.sdk.trace.data.LinkData;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.sdk.trace.samplers.Sampler; import io.opentelemetry.sdk.trace.samplers.Sampler;
import io.opentelemetry.sdk.trace.samplers.SamplingDecision;
import io.opentelemetry.sdk.trace.samplers.SamplingResult; import io.opentelemetry.sdk.trace.samplers.SamplingResult;
import java.util.List; import java.util.List;
@ -71,10 +72,7 @@ class ConfigureTraceExample {
// - alwaysOn: it samples all traces // - alwaysOn: it samples all traces
// - alwaysOff: it rejects all traces // - alwaysOff: it rejects all traces
// - probability: it samples traces based on the probability passed in input // - probability: it samples traces based on the probability passed in input
TraceConfig alwaysOff = TraceConfig.builder().setSampler(Sampler.alwaysOff()).build(); Sampler traceIdRatioBased = Sampler.traceIdRatioBased(0.5);
TraceConfig alwaysOn = TraceConfig.builder().setSampler(Sampler.alwaysOn()).build();
TraceConfig probability =
TraceConfig.builder().setSampler(Sampler.traceIdRatioBased(0.5)).build();
// We build an SDK with the alwaysOff sampler. // We build an SDK with the alwaysOff sampler.
openTelemetrySdk = openTelemetrySdk =
@ -82,7 +80,7 @@ class ConfigureTraceExample {
.setTracerProvider( .setTracerProvider(
SdkTracerProvider.builder() SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter())) .addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter()))
.setTraceConfig(alwaysOff) .setSampler(Sampler.alwaysOff())
.build()) .build())
.build(); .build();
@ -98,7 +96,7 @@ class ConfigureTraceExample {
.setTracerProvider( .setTracerProvider(
SdkTracerProvider.builder() SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter())) .addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter()))
.setTraceConfig(alwaysOn) .setSampler(Sampler.alwaysOn())
.build()) .build())
.build(); .build();
printTraceConfig(openTelemetrySdk); printTraceConfig(openTelemetrySdk);
@ -115,7 +113,7 @@ class ConfigureTraceExample {
.setTracerProvider( .setTracerProvider(
SdkTracerProvider.builder() SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter())) .addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter()))
.setTraceConfig(probability) .setSampler(traceIdRatioBased)
.build()) .build())
.build(); .build();
printTraceConfig(openTelemetrySdk); printTraceConfig(openTelemetrySdk);
@ -142,9 +140,7 @@ class ConfigureTraceExample {
Attributes attributes, Attributes attributes,
List<LinkData> parentLinks) { List<LinkData> parentLinks) {
return SamplingResult.create( return SamplingResult.create(
name.contains("SAMPLE") name.contains("SAMPLE") ? SamplingDecision.RECORD_AND_SAMPLE : SamplingDecision.DROP);
? SamplingResult.Decision.RECORD_AND_SAMPLE
: SamplingResult.Decision.DROP);
} }
@Override @Override
@ -154,13 +150,12 @@ class ConfigureTraceExample {
} }
// Add MySampler to the Trace Configuration // Add MySampler to the Trace Configuration
TraceConfig mySampler = TraceConfig.builder().setSampler(new MySampler()).build();
openTelemetrySdk = openTelemetrySdk =
OpenTelemetrySdk.builder() OpenTelemetrySdk.builder()
.setTracerProvider( .setTracerProvider(
SdkTracerProvider.builder() SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter())) .addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter()))
.setTraceConfig(mySampler) .setSampler(new MySampler())
.build()) .build())
.build(); .build();
printTraceConfig(openTelemetrySdk); printTraceConfig(openTelemetrySdk);
@ -181,7 +176,7 @@ class ConfigureTraceExample {
} }
private static void printTraceConfig(OpenTelemetrySdk sdk) { private static void printTraceConfig(OpenTelemetrySdk sdk) {
TraceConfig config = sdk.getTracerManagement().getActiveTraceConfig(); TraceConfig config = sdk.getSdkTracerProvider().getActiveTraceConfig();
System.err.println("=================================="); System.err.println("==================================");
System.err.print("Max number of attributes: "); System.err.print("Max number of attributes: ");
System.err.println(config.getMaxNumberOfAttributes()); System.err.println(config.getMaxNumberOfAttributes());
@ -194,6 +189,6 @@ class ConfigureTraceExample {
System.err.print("Max number of links: "); System.err.print("Max number of links: ");
System.err.println(config.getMaxNumberOfLinks()); System.err.println(config.getMaxNumberOfLinks());
System.err.print("Sampler: "); System.err.print("Sampler: ");
System.err.println(config.getSampler().getDescription()); System.err.println(sdk.getSdkTracerProvider().getSampler().getDescription());
} }
} }

View File

@ -6,10 +6,13 @@
package io.opentelemetry.example.zipkin; package io.opentelemetry.example.zipkin;
import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter; import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes;
/** /**
* All SDK management takes place here, away from the instrumentation code, which should only access * All SDK management takes place here, away from the instrumentation code, which should only access
@ -26,23 +29,22 @@ public class ExampleConfiguration {
static OpenTelemetry initializeOpenTelemetry(String ip, int port) { static OpenTelemetry initializeOpenTelemetry(String ip, int port) {
String httpUrl = String.format("http://%s:%s", ip, port); String httpUrl = String.format("http://%s:%s", ip, port);
ZipkinSpanExporter zipkinExporter = ZipkinSpanExporter zipkinExporter =
ZipkinSpanExporter.builder() ZipkinSpanExporter.builder().setEndpoint(httpUrl + ENDPOINT_V2_SPANS).build();
.setEndpoint(httpUrl + ENDPOINT_V2_SPANS)
.setServiceName(SERVICE_NAME) Resource serviceNameResource =
.build(); Resource.create(Attributes.of(ResourceAttributes.SERVICE_NAME, SERVICE_NAME));
// Set to process the spans by the Zipkin Exporter // Set to process the spans by the Zipkin Exporter
OpenTelemetrySdk openTelemetry = SdkTracerProvider tracerProvider =
OpenTelemetrySdk.builder()
.setTracerProvider(
SdkTracerProvider.builder() SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(zipkinExporter)) .addSpanProcessor(SimpleSpanProcessor.create(zipkinExporter))
.build()) .setResource(Resource.getDefault().merge(serviceNameResource))
.buildAndRegisterGlobal(); .build();
OpenTelemetrySdk openTelemetry =
OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).buildAndRegisterGlobal();
// add a shutdown hook to shut down the SDK // add a shutdown hook to shut down the SDK
Runtime.getRuntime() Runtime.getRuntime().addShutdownHook(new Thread(tracerProvider::shutdown));
.addShutdownHook(new Thread(() -> openTelemetry.getTracerManagement().shutdown()));
// return the configured instance so it can be used for instrumentation. // return the configured instance so it can be used for instrumentation.
return openTelemetry; return openTelemetry;