1515 */
1616package com .google .cloud .opentelemetry .example .autoconf ;
1717
18- import io .opentelemetry .api .GlobalOpenTelemetry ;
1918import io .opentelemetry .api .common .AttributeKey ;
2019import io .opentelemetry .api .common .Attributes ;
2120import io .opentelemetry .api .metrics .DoubleHistogram ;
2423import io .opentelemetry .api .trace .Span ;
2524import io .opentelemetry .api .trace .Tracer ;
2625import io .opentelemetry .context .Scope ;
26+ import io .opentelemetry .sdk .OpenTelemetrySdk ;
27+ import io .opentelemetry .sdk .autoconfigure .AutoConfiguredOpenTelemetrySdk ;
28+ import io .opentelemetry .sdk .common .CompletableResultCode ;
2729import java .util .Objects ;
2830import java .util .Random ;
31+ import java .util .concurrent .TimeUnit ;
2932
3033public class AutoconfExample {
3134 private static final Random random = new Random ();
3235 private static final AttributeKey <String > DESCRIPTION_KEY = AttributeKey .stringKey ("description" );
3336
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 ;
3840
39- private void myUseCase (String description ) {
41+ private static void myUseCase (String description ) {
4042 Span span = tracer .spanBuilder (description ).startSpan ();
4143 try (Scope scope = span .makeCurrent ()) {
4244 useCaseCount .add (1 , Attributes .of (DESCRIPTION_KEY , description ));
@@ -54,7 +56,7 @@ private void myUseCase(String description) {
5456 }
5557 }
5658
57- private void doWork (String description ) {
59+ private static void doWork (String description ) {
5860 // Child span
5961 Span span = tracer .spanBuilder (description ).startSpan ();
6062 try (Scope scope = span .makeCurrent ()) {
@@ -71,11 +73,24 @@ private void doWork(String description) {
7173
7274 public static void main (String [] args ) {
7375 // 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 ();
7587
76- AutoconfExample example = new AutoconfExample ();
7788 // 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 );
8095 }
8196}
0 commit comments