15
15
*/
16
16
package com .google .cloud .opentelemetry .example .otlptrace ;
17
17
18
- import com .google .auth .oauth2 .GoogleCredentials ;
19
18
import io .opentelemetry .api .trace .Span ;
20
19
import 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 ;
25
20
import io .opentelemetry .sdk .OpenTelemetrySdk ;
26
21
import io .opentelemetry .sdk .autoconfigure .AutoConfiguredOpenTelemetrySdk ;
27
22
import io .opentelemetry .sdk .common .CompletableResultCode ;
28
- import io .opentelemetry .sdk .trace .export .SpanExporter ;
29
23
import java .io .IOException ;
30
24
import java .util .Random ;
31
25
import java .util .concurrent .TimeUnit ;
@@ -36,52 +30,6 @@ public class OTLPTraceExample {
36
30
37
31
private static OpenTelemetrySdk openTelemetrySdk ;
38
32
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
-
85
33
private static void myUseCase (String description ) {
86
34
// Generate a span
87
35
Span span =
@@ -93,7 +41,6 @@ private static void myUseCase(String description) {
93
41
String work = String .format ("%s - Work #%d" , description , (i + 1 ));
94
42
doWork (work );
95
43
}
96
-
97
44
span .addEvent ("Event B" );
98
45
} finally {
99
46
span .end ();
@@ -106,7 +53,9 @@ private static void doWork(String description) {
106
53
openTelemetrySdk .getTracer (INSTRUMENTATION_SCOPE_NAME ).spanBuilder (description ).startSpan ();
107
54
try (Scope scope = span .makeCurrent ()) {
108
55
// 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 );
110
59
} catch (InterruptedException e ) {
111
60
throw new RuntimeException (e );
112
61
} finally {
@@ -116,7 +65,7 @@ private static void doWork(String description) {
116
65
117
66
public static void main (String [] args ) throws IOException {
118
67
// Configure the OpenTelemetry pipeline with CloudTrace exporter
119
- openTelemetrySdk = setupTraceExporter ();
68
+ openTelemetrySdk = AutoConfiguredOpenTelemetrySdk . initialize (). getOpenTelemetrySdk ();
120
69
121
70
// Application-specific logic
122
71
myUseCase ("One" );
0 commit comments