15
15
*/
16
16
package com .google .cloud .opentelemetry .example .autoconf ;
17
17
18
- import io .opentelemetry .api .GlobalOpenTelemetry ;
19
18
import io .opentelemetry .api .common .AttributeKey ;
20
19
import io .opentelemetry .api .common .Attributes ;
21
20
import io .opentelemetry .api .metrics .DoubleHistogram ;
24
23
import io .opentelemetry .api .trace .Span ;
25
24
import io .opentelemetry .api .trace .Tracer ;
26
25
import io .opentelemetry .context .Scope ;
26
+ import io .opentelemetry .sdk .OpenTelemetrySdk ;
27
+ import io .opentelemetry .sdk .autoconfigure .AutoConfiguredOpenTelemetrySdk ;
28
+ import io .opentelemetry .sdk .common .CompletableResultCode ;
27
29
import java .util .Objects ;
28
30
import java .util .Random ;
31
+ import java .util .concurrent .TimeUnit ;
29
32
30
33
public class AutoconfExample {
31
34
private static final Random random = new Random ();
32
35
private static final AttributeKey <String > DESCRIPTION_KEY = AttributeKey .stringKey ("description" );
33
36
34
- private final Tracer tracer = GlobalOpenTelemetry .get ().tracerBuilder ("example-auto" ).build ();
35
- private final Meter meter = GlobalOpenTelemetry .get ().meterBuilder ("example-auto" ).build ();
36
- private final LongCounter useCaseCount = meter .counterBuilder ("use_case" ).build ();
37
- private final DoubleHistogram fakeLatency = meter .histogramBuilder ("fakeLatency" ).build ();
37
+ private static Tracer tracer ;
38
+ private static LongCounter useCaseCount ;
39
+ private static DoubleHistogram fakeLatency ;
38
40
39
- private void myUseCase (String description ) {
41
+ private static void myUseCase (String description ) {
40
42
Span span = tracer .spanBuilder (description ).startSpan ();
41
43
try (Scope scope = span .makeCurrent ()) {
42
44
useCaseCount .add (1 , Attributes .of (DESCRIPTION_KEY , description ));
@@ -54,7 +56,7 @@ private void myUseCase(String description) {
54
56
}
55
57
}
56
58
57
- private void doWork (String description ) {
59
+ private static void doWork (String description ) {
58
60
// Child span
59
61
Span span = tracer .spanBuilder (description ).startSpan ();
60
62
try (Scope scope = span .makeCurrent ()) {
@@ -71,11 +73,24 @@ private void doWork(String description) {
71
73
72
74
public static void main (String [] args ) {
73
75
// First, make sure we've configured opentelemetry with autoconfigure module.
74
- Objects .requireNonNull (GlobalOpenTelemetry .get (), "Failed to autoconfigure opentelemetry" );
76
+ OpenTelemetrySdk openTelemetrySdk =
77
+ AutoConfiguredOpenTelemetrySdk .initialize ().getOpenTelemetrySdk ();
78
+ Objects .requireNonNull (openTelemetrySdk , "Failed to autoconfigure opentelemetry" );
79
+
80
+ // Initialize instruments
81
+ tracer = openTelemetrySdk .tracerBuilder ("example-auto" ).build ();
82
+ Meter meter = openTelemetrySdk .meterBuilder ("example-auto" ).build ();
83
+
84
+ // Initialize meters
85
+ useCaseCount = meter .counterBuilder ("use_case" ).build ();
86
+ fakeLatency = meter .histogramBuilder ("fakeLatency" ).build ();
75
87
76
- AutoconfExample example = new AutoconfExample ();
77
88
// Application-specific logic
78
- example .myUseCase ("One" );
79
- example .myUseCase ("Two" );
89
+ myUseCase ("One" );
90
+ myUseCase ("Two" );
91
+
92
+ // Shutdown the OpenTelemetry instance
93
+ CompletableResultCode completableResultCode = openTelemetrySdk .shutdown ();
94
+ completableResultCode .join (10 , TimeUnit .SECONDS );
80
95
}
81
96
}
0 commit comments