- Overview of Collector core components
- Minimal Collector config that prints telemetry to console
- Docker Compose to run Collector + Jaeger locally
- Collector configuration updated to export to Jaeger via OTLP
- Commands to run the stack and generate telemetry
- Verification steps in Jaeger UI
- receivers: how the collector receives telemetry from applications
- processors: how the collector processes telemetry
- exporters: where the collector forwards telemetry for storage/analysis
- service pipelines: connect receivers → processors → exporters (configurable per-signal: traces, metrics, logs)
| Service | Purpose | Port(s) |
|---|---|---|
| Collector OTLP | OTLP ingest from apps (gRPC / HTTP) | 4317 / 4318 |
| Jaeger UI | Web UI to view traces | 16686 |
| Jaeger OTLP/gRPC | Jaeger ingest endpoints | 14250 |
| Jaeger agent (UDP) | Thrift-based agent ports | 6831/udp, 6832/udp |
- When running both services in Docker Compose the Collector can reach Jaeger at
jaeger:4317(the Compose service name resolves on the network). - You do not have to expose port
4317to the host unless you need external access to Jaeger’s OTLP port.
otlp/<name> pattern. The example below defines otlp/jaeger and retains the console debug exporter:
When you require multiple OTLP exporters (for example, one to Jaeger and another to a different backend), name them like
otlp/jaeger and otlp/backend2. Use those exact names in your pipeline exporter lists.- Open the Jaeger UI: http://localhost:16686
- Under “Services” find your service (for example,
telemetrygen) - Click “Find Traces” to view the traces exported by the Collector

- OpenTelemetry Collector documentation: https://opentelemetry.io/docs/collector/
- Jaeger OTLP documentation: https://www.jaegertracing.io/docs/1.43/deployment/#opentelemetry-collector
- telemetrygen project (example generator): https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/telemetrygen