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"
ext {
openTelemetryVersion = "0.14.1"
openTelemetryVersion = "0.15.0"
openTelemetryAlphaVersion = "0.15.0-alpha"
grpcVersion = '1.34.1'
protobufVersion = '3.11.4'
protocVersion = protobufVersion

View File

@ -36,7 +36,7 @@ class ExampleConfiguration {
() -> {
System.err.println(
"*** forcing the Span Exporter to shutdown and process the remaining spans");
openTelemetrySdk.getTracerManagement().shutdown();
sdkTracerProvider.shutdown();
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.StatusCode;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.api.trace.attributes.SemanticAttributes;
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
@ -31,6 +30,7 @@ import io.opentelemetry.exporter.logging.LoggingSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
@ -163,12 +163,11 @@ public class HelloWorldClientStream {
}
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
sdkTracerProvider.addSpanProcessor(SimpleSpanProcessor.builder(exporter).build());
SdkTracerProvider sdkTracerProvider =
SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(exporter)).build();
// install the W3C Trace Context propagator
return OpenTelemetrySdk.builder()
.setTracerProvider(sdkTracerProvider)
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))

View File

@ -34,15 +34,8 @@ public class HelloWorldServer {
// lifecycle.
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
TextMapPropagator.Getter<Metadata> getter =
private static final TextMapPropagator.Getter<Metadata> getter =
new TextMapPropagator.Getter<>() {
@Override
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 {
/* The port on which the server should run */

View File

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

View File

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

View File

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

View File

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

View File

@ -9,11 +9,11 @@ dependencies {
implementation("io.opentelemetry:opentelemetry-api")
implementation("io.opentelemetry:opentelemetry-sdk")
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")
implementation("io.opentelemetry:opentelemetry-sdk-metrics:${openTelemetryVersion}-alpha")
implementation("io.opentelemetry:opentelemetry-exporter-otlp-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-extension-autoconfigure:${openTelemetryAlphaVersion}")
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"
}

View File

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

View File

@ -8,7 +8,7 @@ ext.moduleName = "io.opentelemetry.examples.prometheus"
dependencies {
compile("io.opentelemetry:opentelemetry-api")
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_httpserver:0.8.1")
}

View File

@ -8,7 +8,6 @@ package io.opentelemetry.sdk.example;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.SdkTracerManagement;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.SpanProcessor;
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
@ -21,7 +20,7 @@ public class ConfigureSpanProcessorExample {
private static final LoggingSpanExporter exporter = new LoggingSpanExporter();
private static final OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().build();
// Get the Tracer Management interface
private static final SdkTracerManagement tracerManagement = openTelemetry.getTracerManagement();
private static final SdkTracerProvider tracerManagement = openTelemetry.getSdkTracerProvider();
// Acquire a tracer
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.
BatchSpanProcessor batchSpansProcessor =
BatchSpanProcessor.builder(exporter)
.setExportOnlySampled(true) // send to the exporter only spans that have been sampled
.setMaxExportBatchSize(512) // set the maximum batch size to use
.setMaxQueueSize(2048) // set the queue size. This must be >= the export batch size
.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.export.SimpleSpanProcessor;
import io.opentelemetry.sdk.trace.samplers.Sampler;
import io.opentelemetry.sdk.trace.samplers.SamplingDecision;
import io.opentelemetry.sdk.trace.samplers.SamplingResult;
import java.util.List;
@ -71,10 +72,7 @@ class ConfigureTraceExample {
// - alwaysOn: it samples all traces
// - alwaysOff: it rejects all traces
// - probability: it samples traces based on the probability passed in input
TraceConfig alwaysOff = TraceConfig.builder().setSampler(Sampler.alwaysOff()).build();
TraceConfig alwaysOn = TraceConfig.builder().setSampler(Sampler.alwaysOn()).build();
TraceConfig probability =
TraceConfig.builder().setSampler(Sampler.traceIdRatioBased(0.5)).build();
Sampler traceIdRatioBased = Sampler.traceIdRatioBased(0.5);
// We build an SDK with the alwaysOff sampler.
openTelemetrySdk =
@ -82,7 +80,7 @@ class ConfigureTraceExample {
.setTracerProvider(
SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter()))
.setTraceConfig(alwaysOff)
.setSampler(Sampler.alwaysOff())
.build())
.build();
@ -98,7 +96,7 @@ class ConfigureTraceExample {
.setTracerProvider(
SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter()))
.setTraceConfig(alwaysOn)
.setSampler(Sampler.alwaysOn())
.build())
.build();
printTraceConfig(openTelemetrySdk);
@ -115,7 +113,7 @@ class ConfigureTraceExample {
.setTracerProvider(
SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter()))
.setTraceConfig(probability)
.setSampler(traceIdRatioBased)
.build())
.build();
printTraceConfig(openTelemetrySdk);
@ -142,9 +140,7 @@ class ConfigureTraceExample {
Attributes attributes,
List<LinkData> parentLinks) {
return SamplingResult.create(
name.contains("SAMPLE")
? SamplingResult.Decision.RECORD_AND_SAMPLE
: SamplingResult.Decision.DROP);
name.contains("SAMPLE") ? SamplingDecision.RECORD_AND_SAMPLE : SamplingDecision.DROP);
}
@Override
@ -154,13 +150,12 @@ class ConfigureTraceExample {
}
// Add MySampler to the Trace Configuration
TraceConfig mySampler = TraceConfig.builder().setSampler(new MySampler()).build();
openTelemetrySdk =
OpenTelemetrySdk.builder()
.setTracerProvider(
SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter()))
.setTraceConfig(mySampler)
.setSampler(new MySampler())
.build())
.build();
printTraceConfig(openTelemetrySdk);
@ -181,7 +176,7 @@ class ConfigureTraceExample {
}
private static void printTraceConfig(OpenTelemetrySdk sdk) {
TraceConfig config = sdk.getTracerManagement().getActiveTraceConfig();
TraceConfig config = sdk.getSdkTracerProvider().getActiveTraceConfig();
System.err.println("==================================");
System.err.print("Max number of attributes: ");
System.err.println(config.getMaxNumberOfAttributes());
@ -194,6 +189,6 @@ class ConfigureTraceExample {
System.err.print("Max number of links: ");
System.err.println(config.getMaxNumberOfLinks());
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;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
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
@ -26,23 +29,22 @@ public class ExampleConfiguration {
static OpenTelemetry initializeOpenTelemetry(String ip, int port) {
String httpUrl = String.format("http://%s:%s", ip, port);
ZipkinSpanExporter zipkinExporter =
ZipkinSpanExporter.builder()
.setEndpoint(httpUrl + ENDPOINT_V2_SPANS)
.setServiceName(SERVICE_NAME)
.build();
ZipkinSpanExporter.builder().setEndpoint(httpUrl + ENDPOINT_V2_SPANS).build();
Resource serviceNameResource =
Resource.create(Attributes.of(ResourceAttributes.SERVICE_NAME, SERVICE_NAME));
// Set to process the spans by the Zipkin Exporter
SdkTracerProvider tracerProvider =
SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(zipkinExporter))
.setResource(Resource.getDefault().merge(serviceNameResource))
.build();
OpenTelemetrySdk openTelemetry =
OpenTelemetrySdk.builder()
.setTracerProvider(
SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(zipkinExporter))
.build())
.buildAndRegisterGlobal();
OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).buildAndRegisterGlobal();
// add a shutdown hook to shut down the SDK
Runtime.getRuntime()
.addShutdownHook(new Thread(() -> openTelemetry.getTracerManagement().shutdown()));
Runtime.getRuntime().addShutdownHook(new Thread(tracerProvider::shutdown));
// return the configured instance so it can be used for instrumentation.
return openTelemetry;