Below is my Otel implementation to instantiate the OpenTelemetry SDKs for Metrics & Traces. I found that Metrics
are getting emitted whenever application requests are getting served but Traces
are only emitted when this application is restarted.
Any suggestions what I’m missing here?
SpanExporter exporter = OtlpGrpcSpanExporter.builder()
.setEndpoint(otlEndPoint)
.build();
SdkTracerProviderBuilder tracerProviderBuilder = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(exporter).build())
.setSampler(Sampler.alwaysOn());
SdkTracerProvider tracerProvider = tracerProviderBuilder
.setResource(resource)
.build();
ContextPropagators propagators = ContextPropagators.create(TextMapPropagator.composite(
W3CTraceContextPropagator.getInstance(),
W3CBaggagePropagator.getInstance()
));
openTelemetry = OpenTelemetrySdk.builder().setMeterProvider(SdkMeterProvider.builder().setResource(resource)
.registerMetricReader(PeriodicMetricReader.builder(otlpGrpcMetricsExporter)
.setInterval(Duration.ofMillis(1000)).build()).build())
.setTracerProvider(tracerProvider)
.setPropagators(propagators)
.buildAndRegisterGlobal();