Skip to content

Commit a562e65

Browse files
author
Liudmila Molkova
authored
Minor tracing samples improvements (Azure#36226)
* tracing samples - flush otel, remove deprecated jaeger, use autoconfigure
1 parent 4ed2f41 commit a562e65

File tree

13 files changed

+60
-149
lines changed

13 files changed

+60
-149
lines changed

.vscode/cspell.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@
127127
"sdk/core/azure-xml/**",
128128
"sdk/cosmos/azure-cosmos-dotnet-benchmark/**",
129129
"sdk/core/azure-core-tracing-opentelemetry/**",
130+
"sdk/core/azure-core-tracing-opentelemetry-samples/**",
130131
"sdk/cosmos/azure-cosmos-benchmark/**",
131132
"sdk/core/azure-json-gson/**",
132133
"sdk/cosmos/azure-cosmos-spark_3-1_2-12/**",
@@ -339,6 +340,7 @@
339340
"odata",
340341
"ODBC",
341342
"okhttp",
343+
"OTLP",
342344
"OLTP",
343345
"onboarded",
344346
"Onco",

eng/versioning/external_dependencies.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@ io.opentelemetry:opentelemetry-sdk;1.28.0
200200
io.opentelemetry:opentelemetry-sdk-metrics;1.28.0
201201
io.opentelemetry:opentelemetry-sdk-logs;1.28.0
202202
io.opentelemetry:opentelemetry-exporter-logging;1.28.0
203-
io.opentelemetry:opentelemetry-exporter-jaeger;1.28.0
204203
io.opentelemetry:opentelemetry-exporter-otlp;1.28.0
205204
io.opentelemetry:opentelemetry-api-logs;1.26.0-alpha
206205
io.opentelemetry:opentelemetry-sdk-testing;1.28.0

sdk/core/azure-core-metrics-opentelemetry/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,10 @@ SdkMeterProvider meterProvider = SdkMeterProvider.builder()
8181
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build())
8282
.build();
8383

84+
OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().setMeterProvider(meterProvider).build();
8485
// Pass OpenTelemetry instance to MetricsOptions.
8586
MetricsOptions customMetricsOptions = new OpenTelemetryMetricsOptions()
86-
.setOpenTelemetry(OpenTelemetrySdk.builder().setMeterProvider(meterProvider).build());
87+
.setOpenTelemetry(openTelemetry);
8788

8889
// configure Azure Client to use customMetricsOptions - it will use meterProvider
8990
// to create meters and instruments

sdk/core/azure-core-metrics-opentelemetry/pom.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,6 @@
141141
<include>io.opentelemetry:opentelemetry-sdk-testing:[1.28.0]</include> <!-- {x-include-update;io.opentelemetry:opentelemetry-sdk-testing;external_dependency} -->
142142
<include>io.opentelemetry:opentelemetry-exporter-logging:[1.28.0]</include> <!-- {x-include-update;io.opentelemetry:opentelemetry-exporter-logging;external_dependency} -->
143143
<include>io.opentelemetry:opentelemetry-exporter-otlp:[1.28.0]</include> <!-- {x-include-update;io.opentelemetry:opentelemetry-exporter-otlp;external_dependency} -->
144-
<include>io.opentelemetry:opentelemetry-exporter-jaeger:[1.28.0]</include> <!-- {x-include-update;io.opentelemetry:opentelemetry-exporter-jaeger;external_dependency} -->
145144
</includes>
146145
</bannedDependencies>
147146
</rules>

sdk/core/azure-core-metrics-opentelemetry/src/main/java/com/azure/core/metrics/opentelemetry/OpenTelemetryMeterProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public OpenTelemetryMeterProvider() {
6868
* .registerMetricReader&#40;PeriodicMetricReader.builder&#40;OtlpGrpcMetricExporter.builder&#40;&#41;.build&#40;&#41;&#41;.build&#40;&#41;&#41;
6969
* .build&#40;&#41;;
7070
*
71-
* OpenTelemetry openTelemetry = OpenTelemetrySdk.builder&#40;&#41;
71+
* OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder&#40;&#41;
7272
* .setTracerProvider&#40;tracerProvider&#41;
7373
* .setMeterProvider&#40;meterProvider&#41;
7474
* .setPropagators&#40;ContextPropagators.create&#40;W3CTraceContextPropagator.getInstance&#40;&#41;&#41;&#41;

sdk/core/azure-core-metrics-opentelemetry/src/samples/java/com/azure/core/metrics/opentelemetry/MetricsJavaDocCodeSnippets.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import com.azure.core.util.metrics.Meter;
1212
import com.azure.core.util.metrics.MeterProvider;
1313
import io.opentelemetry.api.GlobalOpenTelemetry;
14-
import io.opentelemetry.api.OpenTelemetry;
1514
import io.opentelemetry.api.trace.Span;
1615
import io.opentelemetry.api.trace.Tracer;
1716
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
@@ -93,9 +92,10 @@ public void readmeSampleCustomSdkConfiguration() {
9392
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build())
9493
.build();
9594

95+
OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().setMeterProvider(meterProvider).build();
9696
// Pass OpenTelemetry instance to MetricsOptions.
9797
MetricsOptions customMetricsOptions = new OpenTelemetryMetricsOptions()
98-
.setOpenTelemetry(OpenTelemetrySdk.builder().setMeterProvider(meterProvider).build());
98+
.setOpenTelemetry(openTelemetry);
9999

100100
// configure Azure Client to use customMetricsOptions - it will use meterProvider
101101
// to create meters and instruments
@@ -108,6 +108,7 @@ public void readmeSampleCustomSdkConfiguration() {
108108
sampleClient.methodCall("get items");
109109

110110
// END: readme-sample-customConfiguration
111+
openTelemetry.close();
111112
}
112113

113114
/**
@@ -125,7 +126,7 @@ public void configureClientLibraryToUseCustomMeter() {
125126
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build())
126127
.build();
127128

128-
OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
129+
OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder()
129130
.setTracerProvider(tracerProvider)
130131
.setMeterProvider(meterProvider)
131132
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
@@ -157,6 +158,7 @@ public void configureClientLibraryToUseCustomMeter() {
157158
span.end();
158159

159160
// END: com.azure.core.util.metrics.OpenTelemetryMeterProvider.createMeter#custom
161+
openTelemetry.close();
160162
}
161163

162164
/**

sdk/core/azure-core-tracing-opentelemetry-samples/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@
5959
</dependency>
6060
<dependency>
6161
<groupId>io.opentelemetry</groupId>
62-
<artifactId>opentelemetry-exporter-jaeger</artifactId>
63-
<version>1.28.0</version> <!-- {x-version-update;io.opentelemetry:opentelemetry-exporter-jaeger;external_dependency} -->
62+
<artifactId>opentelemetry-sdk-extension-autoconfigure</artifactId>
63+
<version>1.28.0</version> <!-- {x-version-update;io.opentelemetry:opentelemetry-sdk-extension-autoconfigure;external_dependency} -->
6464
<scope>test</scope>
6565
</dependency>
6666
<dependency>

sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/CreateConfigurationSettingLoggingExporterSample.java

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33

44
package com.azure.core.tracing.opentelemetry.samples;
55

6+
import com.azure.core.tracing.opentelemetry.OpenTelemetryTracingOptions;
7+
import com.azure.core.util.ClientOptions;
8+
import com.azure.core.util.TracingOptions;
69
import com.azure.data.appconfiguration.ConfigurationClient;
710
import com.azure.data.appconfiguration.ConfigurationClientBuilder;
811
import io.opentelemetry.api.trace.Span;
@@ -18,54 +21,52 @@
1821
* in App Configuration through the {@link ConfigurationClient}.
1922
*/
2023
public class CreateConfigurationSettingLoggingExporterSample {
21-
private static final Tracer TRACER = configureLoggingExporter();
2224
private static final String CONNECTION_STRING = "<YOUR_CONNECTION_STRING>";
2325

2426
/**
2527
* The main method to run the application.
2628
*
2729
* @param args Ignored args.
2830
*/
31+
@SuppressWarnings("try")
2932
public static void main(String[] args) {
30-
configureLoggingExporter();
33+
OpenTelemetrySdk openTelemetry = configureTracing();
34+
35+
// In this sample we configured OpenTelemetry without registering global instance, so we need to pass it explicitly to the Azure SDK.
36+
// If we used ApplicationInsights or OpenTelemetry agent, or registered global instance, we would not need to pass it explicitly.
37+
TracingOptions tracingOptions = new OpenTelemetryTracingOptions().setOpenTelemetry(openTelemetry);
3138

3239
ConfigurationClient client = new ConfigurationClientBuilder()
3340
.connectionString(CONNECTION_STRING)
41+
.clientOptions(new ClientOptions().setTracingOptions(tracingOptions))
3442
.buildClient();
3543

36-
doClientWork(client);
44+
Tracer tracer = openTelemetry.getTracer("sample");
45+
46+
Span span = tracer.spanBuilder("my-span").startSpan();
47+
try (Scope s = span.makeCurrent()) {
48+
// current span propagates into synchronous calls automatically. ApplicationInsights or OpenTelemetry agent
49+
// also propagate context through async reactor calls.
50+
client.setConfigurationSetting("hello", "text", "World");
51+
} finally {
52+
span.end();
53+
}
54+
55+
openTelemetry.close();
3756
}
3857

3958
/**
40-
* Configure the OpenTelemetry {@link LoggingSpanExporter} to enable tracing.
41-
*
42-
* @return The OpenTelemetry {@link Tracer} instance.
59+
* Configure the OpenTelemetry to print traces with {@link LoggingSpanExporter}.
4360
*/
44-
private static Tracer configureLoggingExporter() {
61+
private static OpenTelemetrySdk configureTracing() {
62+
// configure OpenTelemetry explicitly or with io.opentelemetry:opentelemetry-sdk-extension-autoconfigure package
4563
SdkTracerProvider tracerProvider =
4664
SdkTracerProvider.builder()
4765
.addSpanProcessor(BatchSpanProcessor.builder(LoggingSpanExporter.create()).build())
4866
.build();
4967

5068
return OpenTelemetrySdk.builder()
5169
.setTracerProvider(tracerProvider)
52-
.buildAndRegisterGlobal()
53-
.getTracer("AppConfig-Sample");
54-
}
55-
56-
/**
57-
* Creates the {@link ConfigurationClient} and creates a configuration in Azure App Configuration with distributed
58-
* tracing enabled and using the Logging exporter to export telemetry events.
59-
*/
60-
@SuppressWarnings("try")
61-
private static void doClientWork(ConfigurationClient client) {
62-
Span span = TRACER.spanBuilder("my-span").startSpan();
63-
try (Scope s = span.makeCurrent()) {
64-
// current span propagates into synchronous calls automatically. ApplicationInsights or OpenTelemetry agent
65-
// also propagate context through async reactor calls.
66-
client.setConfigurationSetting("hello", "text", "World");
67-
} finally {
68-
span.end();
69-
}
70+
.build();
7071
}
7172
}

sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/ListKeyVaultSecretsAutoConfigurationSample.java

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
import com.azure.security.keyvault.secrets.SecretClient;
99
import com.azure.security.keyvault.secrets.SecretClientBuilder;
1010
import com.azure.security.keyvault.secrets.models.KeyVaultSecret;
11-
import io.opentelemetry.api.GlobalOpenTelemetry;
1211
import io.opentelemetry.api.trace.Span;
1312
import io.opentelemetry.api.trace.Tracer;
1413
import io.opentelemetry.context.Scope;
15-
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
14+
import io.opentelemetry.sdk.OpenTelemetrySdk;
15+
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
1616
import reactor.util.context.Context;
1717

1818
import static com.azure.core.util.tracing.Tracer.PARENT_TRACE_CONTEXT_KEY;
@@ -26,7 +26,8 @@ public class ListKeyVaultSecretsAutoConfigurationSample {
2626
private static final String VAULT_URL = "<YOUR_VAULT_URL>";
2727
@SuppressWarnings("try")
2828
public void syncClient() {
29-
Tracer tracer = configureTracing();
29+
OpenTelemetrySdk openTelemetry = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
30+
Tracer tracer = openTelemetry.getTracer("sample");
3031

3132
// BEGIN: readme-sample-context-auto-propagation
3233
SecretClient secretClient = new SecretClientBuilder()
@@ -46,10 +47,12 @@ public void syncClient() {
4647
}
4748

4849
// END: readme-sample-context-auto-propagation
50+
openTelemetry.close();
4951
}
5052

5153
public void asyncClient() {
52-
Tracer tracer = configureTracing();
54+
OpenTelemetrySdk openTelemetry = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
55+
Tracer tracer = openTelemetry.getTracer("sample");
5356

5457
// BEGIN: readme-sample-context-manual-propagation
5558
SecretAsyncClient secretAsyncClient = new SecretClientBuilder()
@@ -73,20 +76,7 @@ public void asyncClient() {
7376
} finally {
7477
span.end();
7578
}
76-
7779
// END: readme-sample-context-manual-propagation
78-
}
79-
80-
/**
81-
* Configure the OpenTelemetry {@link LoggingSpanExporter} to enable tracing.
82-
*
83-
* @return The OpenTelemetry {@link Tracer} instance.
84-
*/
85-
private static Tracer configureTracing() {
86-
// configure OpenTelemetry SDK using io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:
87-
// OpenTelemetrySdk sdk = AutoConfiguredOpenTelemetrySdk.initialize()
88-
// .getOpenTelemetrySdk();
89-
90-
return GlobalOpenTelemetry.getTracer("Async-List-KV-Secrets-Sample");
80+
openTelemetry.close();
9181
}
9282
}

sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/ListKeyVaultSecretsJaegerExporterSample.java

Lines changed: 0 additions & 83 deletions
This file was deleted.

0 commit comments

Comments
 (0)