Jaeger is an open-source distributed-tracing system that receives application trace data and provides a user interface for inspecting requests, spans, and span tags. In a Spring Boot application, it reveals what happens during operations such as answering a user question. section 9.4
A Spring Boot integration requires:
- A Jaeger service in Docker Compose, exposing port 4317 for OTLP trace data and port 16686 for the user interface. section 9.4
- Micrometer-to-OpenTelemetry and OTLP exporter dependencies. section 9.4
- An OtlpGrpcSpanExporter bean configured with a property such as http://localhost:4317. section 9.4
services:
# ...
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "16686:16686"
- "4317:4317"
environment:
- COLLECTOR_OTLP_ENABLED=true
Use this Docker Compose listing to add Jaeger beside the application's other observability services. section 9.4
package com.example.boardgamebuddy;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TracingConfig {
@Bean
public OtlpGrpcSpanExporter otlpHttpSpanExporter(
@Value("${otlp.tracing.url}") String url) {
return OtlpGrpcSpanExporter.builder().setEndpoint(url).build();
}
}
Use this Spring configuration listing to create the OTLP exporter and inject its configurable endpoint. section 9.4
After traces reach Jaeger, the interface can list traces, show the trace for a POST request to /ask, and expose tags on spans such as a Qdrant query. These details help confirm what an AI operation did and why. section 9.4



