Getting Started
Get up and running with Jaeger in your local environment
If you are new to distributed tracing, please check the Introduction page.
Instrumentation
Your applications must be instrumented before they can send tracing data to Jaeger. We recommend using the OpenTelemetry instrumentation and SDKs.
The Jaeger SDKs are no longer supported by the Jaeger project, the legacy Jaeger format is still supported for receiving traces.
Default configuration
jaeger is a single binary which can serve multiple purposes. It has a configuration embedded which provides full functionality for testing with an in memory storage component. If you would like to change the configuration you may create a YAML configuration file.
Run the jaeger(.exe)
executable from the binary distribution archives:
jaeger
You can then navigate to http://localhost:16686
to access the Jaeger UI.
The binary exposes the following ports:
Port | Protocol | Component | Function |
---|---|---|---|
(used by legacy clients only) | |||
5778 | HTTP | collector | serve configs (sampling, etc.) |
4317 | HTTP | collector | accept OpenTelemetry Protocol (OTLP) over gRPC |
4318 | HTTP | collector | accept OpenTelemetry Protocol (OTLP) over HTTP |
14268 | HTTP | collector | accept jaeger.thrift directly from clients |
14250 | gRPC | collector | accept model.proto |
9411 | HTTP | collector | Zipkin compatible endpoint (optional) |
16686 | HTTP | query | serve frontend |
With Service Performance Monitoring (SPM)
Please refer to Service Performance Monitoring (SPM).
On Kubernetes
Please see Kubernetes Operator: https://github.com/jaegertracing/jaeger-operator
Sample App: HotROD
HotROD (Rides on Demand) is a demo application that consists of several microservices and illustrates the use of OpenTelemetry and distributed tracing. A tutorial / walkthrough is available in the blog post: Take Jaeger for a HotROD ride .
The HotROD app can be run standalone, but requires Jaeger backend to view the traces.
Features
- Discover architecture of the whole system via data-driven dependency diagram.
- View request timeline and errors; understand how the app works.
- Find sources of latency and lack of concurrency.
- Highly contextualized logging.
- Use baggage propagation to diagnose inter-request contention (queueing) and time spent in a service.
- Use open source libraries from
opentelemetry-contrib
to get vendor-neutral instrumentation for free.
Running
We recommend running Jaeger and HotROD together via docker compose
.
With Docker Compose
git clone git@github.com:jaegertracing/jaeger.git jaeger
cd jaeger/examples/hotrod
docker compose up
# Ctrl-C to stop
With Docker
docker run --rm -it --link jaeger \
-p8080-8083:8080-8083 \
-e OTEL_EXPORTER_OTLP_ENDPOINT="http://jaeger:4318" \
jaegertracing/example-hotrod:next-release-v2.0 \
all --otel-exporter=otlp
From Source
In order to run from source you need:
- Go toolchain installed on your machine (see go.mod file for minimum required Go version).
- A running Jaeger backend to view the traces.
git clone git@github.com:jaegertracing/jaeger.git jaeger
cd jaeger
go run ./examples/hotrod/main.go all
From binary distribution
Run example-hotrod(.exe)
executable from the binary distribution archives:
example-hotrod all
Then navigate to http://localhost:8080
.
Migrating from Zipkin
The jaeger collector role service exposes Zipkin compatible REST API /api/v1/spans
which accepts both Thrift and JSON. Also there is /api/v2/spans
for JSON and Proto.
By default it’s disabled. It can be enabled with --collector.zipkin.host-port=:9411
.
Zipkin Thrift IDL and Zipkin Proto IDL files can be found in jaegertracing/jaeger-idl repository. They’re compatible with openzipkin/zipkin-api Thrift and Proto .