15
15
*/
16
16
package com .google .cloud .opentelemetry .example .otlptrace ;
17
17
18
+ import com .google .auth .oauth2 .GoogleCredentials ;
18
19
import io .opentelemetry .api .trace .Span ;
19
20
import io .opentelemetry .context .Scope ;
21
+ import io .opentelemetry .exporter .otlp .http .trace .OtlpHttpSpanExporter ;
22
+ import io .opentelemetry .exporter .otlp .http .trace .OtlpHttpSpanExporterBuilder ;
20
23
import io .opentelemetry .sdk .OpenTelemetrySdk ;
21
24
import io .opentelemetry .sdk .autoconfigure .AutoConfiguredOpenTelemetrySdk ;
22
25
import io .opentelemetry .sdk .common .CompletableResultCode ;
26
+ import io .opentelemetry .sdk .trace .export .SpanExporter ;
23
27
import java .io .IOException ;
24
28
import java .util .Random ;
25
29
import java .util .concurrent .TimeUnit ;
@@ -30,9 +34,29 @@ public class OTLPTraceExample {
30
34
31
35
private static OpenTelemetrySdk openTelemetrySdk ;
32
36
33
- private static OpenTelemetrySdk setupTraceExporter () {
34
- // Let the SDK configure itself using environment variables and system properties
35
- return AutoConfiguredOpenTelemetrySdk .initialize ().getOpenTelemetrySdk ();
37
+ private static OpenTelemetrySdk setupTraceExporter () throws IOException {
38
+ GoogleCredentials credentials = GoogleCredentials .getApplicationDefault ();
39
+
40
+ // Update the SDK configured using environment variables and system properties
41
+ AutoConfiguredOpenTelemetrySdk autoConfOTelSdk =
42
+ AutoConfiguredOpenTelemetrySdk .builder ()
43
+ .addSpanExporterCustomizer (
44
+ (exporter , configProperties ) -> addAuthorizationHeaders (exporter , credentials ))
45
+ .build ();
46
+ return autoConfOTelSdk .getOpenTelemetrySdk ();
47
+ }
48
+
49
+ // Configures span exporter using configuration from
50
+ private static SpanExporter addAuthorizationHeaders (
51
+ SpanExporter exporter , GoogleCredentials credentials ) {
52
+ if (exporter instanceof OtlpHttpSpanExporter ) {
53
+ OtlpHttpSpanExporterBuilder builder =
54
+ ((OtlpHttpSpanExporter ) exporter )
55
+ .toBuilder ().addHeader ("Authorization" , "Bearer " + credentials .getAccessToken ());
56
+
57
+ return builder .build ();
58
+ }
59
+ return exporter ;
36
60
}
37
61
38
62
private static void myUseCase (String description ) {
0 commit comments