1515 */
1616package com .google .cloud .opentelemetry .example .otlptrace ;
1717
18- import com .google .auth .oauth2 .GoogleCredentials ;
1918import io .opentelemetry .api .trace .Span ;
2019import io .opentelemetry .context .Scope ;
21- import io .opentelemetry .exporter .otlp .http .trace .OtlpHttpSpanExporter ;
22- import io .opentelemetry .exporter .otlp .http .trace .OtlpHttpSpanExporterBuilder ;
23- import io .opentelemetry .exporter .otlp .trace .OtlpGrpcSpanExporter ;
24- import io .opentelemetry .exporter .otlp .trace .OtlpGrpcSpanExporterBuilder ;
2520import io .opentelemetry .sdk .OpenTelemetrySdk ;
2621import io .opentelemetry .sdk .autoconfigure .AutoConfiguredOpenTelemetrySdk ;
2722import io .opentelemetry .sdk .common .CompletableResultCode ;
28- import io .opentelemetry .sdk .trace .export .SpanExporter ;
2923import java .io .IOException ;
3024import java .util .Random ;
3125import java .util .concurrent .TimeUnit ;
@@ -36,52 +30,6 @@ public class OTLPTraceExample {
3630
3731 private static OpenTelemetrySdk openTelemetrySdk ;
3832
39- private static OpenTelemetrySdk setupTraceExporter () throws IOException {
40- GoogleCredentials credentials = GoogleCredentials .getApplicationDefault ();
41-
42- // Update the SDK configured using environment variables and system properties
43- AutoConfiguredOpenTelemetrySdk autoConfOTelSdk =
44- AutoConfiguredOpenTelemetrySdk .builder ()
45- .addSpanExporterCustomizer (
46- (exporter , configProperties ) -> addAuthorizationHeaders (exporter , credentials ))
47- .build ();
48- return autoConfOTelSdk .getOpenTelemetrySdk ();
49- }
50-
51- // Modifies the span exporter initially auto-configured using environment variables
52- // Note: This adds static authorization headers which are set only at initialization time.
53- // This will stop working after the token expires, since the token is not refreshed.
54- private static SpanExporter addAuthorizationHeaders (
55- SpanExporter exporter , GoogleCredentials credentials ) {
56- if (exporter instanceof OtlpHttpSpanExporter ) {
57- try {
58- credentials .refreshIfExpired ();
59- OtlpHttpSpanExporterBuilder builder =
60- ((OtlpHttpSpanExporter ) exporter )
61- .toBuilder ()
62- .addHeader (
63- "Authorization" , "Bearer " + credentials .getAccessToken ().getTokenValue ());
64-
65- return builder .build ();
66- } catch (IOException e ) {
67- System .out .println ("error:" + e .getMessage ());
68- }
69- } else if (exporter instanceof OtlpGrpcSpanExporter ) {
70- try {
71- credentials .refreshIfExpired ();
72- OtlpGrpcSpanExporterBuilder builder =
73- ((OtlpGrpcSpanExporter ) exporter )
74- .toBuilder ()
75- .addHeader (
76- "Authorization" , "Bearer " + credentials .getAccessToken ().getTokenValue ());
77- return builder .build ();
78- } catch (IOException e ) {
79- throw new RuntimeException (e );
80- }
81- }
82- return exporter ;
83- }
84-
8533 private static void myUseCase (String description ) {
8634 // Generate a span
8735 Span span =
@@ -93,7 +41,6 @@ private static void myUseCase(String description) {
9341 String work = String .format ("%s - Work #%d" , description , (i + 1 ));
9442 doWork (work );
9543 }
96-
9744 span .addEvent ("Event B" );
9845 } finally {
9946 span .end ();
@@ -106,7 +53,9 @@ private static void doWork(String description) {
10653 openTelemetrySdk .getTracer (INSTRUMENTATION_SCOPE_NAME ).spanBuilder (description ).startSpan ();
10754 try (Scope scope = span .makeCurrent ()) {
10855 // Simulate work: this could be simulating a network request or an expensive disk operation
109- Thread .sleep (100 + random .nextInt (5 ) * 100 );
56+ int randomSleep = random .nextInt (5 ) * 100 ;
57+ span .setAttribute ("RandomSleep" , randomSleep );
58+ Thread .sleep (100 + randomSleep );
11059 } catch (InterruptedException e ) {
11160 throw new RuntimeException (e );
11261 } finally {
@@ -116,7 +65,7 @@ private static void doWork(String description) {
11665
11766 public static void main (String [] args ) throws IOException {
11867 // Configure the OpenTelemetry pipeline with CloudTrace exporter
119- openTelemetrySdk = setupTraceExporter ();
68+ openTelemetrySdk = AutoConfiguredOpenTelemetrySdk . initialize (). getOpenTelemetrySdk ();
12069
12170 // Application-specific logic
12271 myUseCase ("One" );
0 commit comments