Jaeger is an open-source distributed tracing system that ingests, stores, queries, and visualizes traces. Its web UI helps users search traces, inspect details, and view microservice architecture. section 6.2.1
Tracing a microservices request
An OpenTelemetry collector receives traces from a frontend and two backend services, sends them to Jaeger, and stores spans in ClickHouse. Opening Jaeger at port 16686 exposes trace search and detailed trace views, including requests filtered by tags such as http.status_code=404. section 6.2.1
Jaeger’s main roles and operational choices include:
- Collector: receives traces from OpenTelemetry or Jaeger agents, validates and enriches them, and writes them to storage. section 6.2.1
- Query service and UI: retrieve traces, support search and analysis, and display a microservice graph. section 6.2.1
- Ingester: reads traces from Apache Kafka and writes them to a storage backend; the optional agent sends traces over UDP. section 6.2.1
- Storage ranges from in-memory all-in-one experimentation to Apache Cassandra, Elasticsearch/OpenSearch, and ClickHouse through storage integrations. section 6.2.1
- Open-source alternatives include Zipkin and Grafana Tempo, so backend selection should consider community activity, storage, integrations, and operational needs. section 5.4.2
Jaeger also supports signal correlation: an alert can lead from Prometheus metrics to a trace ID, then from Jaeger trace errors and duration data to service logs. This workflow helps confirm hypotheses during incident response. section 1.5.2
Listing 2.11 Using docker-compose.yaml to stand up Jaeger and Grafana
version: "3.5"
networks:
jaeger:
services:
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "6831:6831/udp"
- "16686:16686"
- "14268:14268"
networks:
- jaeger
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
networks:
- jaeger
Use the Docker Compose manifest to run Jaeger’s all-in-one distribution alongside Grafana, expose the Jaeger UI, and connect Jaeger as a Grafana data source. section 2.5.2



