* docs(release): CHANGELOG and upgrade guide for 0.9.0 - Flesh out the CHANGELOG [0.9.0] section with the ~400 user-facing PRs merged since v0.8.2: new Breaking / Migration block, ingest v2 as default, AWS Lambda search offloading (distinct from the removed standalone Lambda mode), Jaeger v2, Trino compat, composite aggregation, and many small fixes/changes. - Add docs/get-started/upgrade.md covering the 0.8.x -> 0.9 migration path: ingest v2 default, `rest_listen_port` deprecation, stemming behind `multilang`, metastore migration, rollback. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * chore(release): bump workspace version to 0.9.0 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(release): refresh 0.9 release notes * docs: fix tag pruning link * docs: sync quickstart index config * docs: fix 0.9 tutorial workflows * chore(release): bump Quickwit UI version to 0.9.0 * docs: correct 0.9 tutorial behavior --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.1 KiB
title, sidebar_position
| title | sidebar_position |
|---|---|
| Traces with Jaeger | 2 |
In this quick start guide, we will set up a Quickwit instance and analyze its own traces with Jaeger using Docker Compose.
You only need a minute to get Jaeger working with Quickwit storage backend.
Start Quickwit and Jaeger
Let's use docker compose with the following configuration:
services:
quickwit:
image: quickwit/quickwit:0.9.0
volumes:
- ./qwdata:/quickwit/qwdata
ports:
- 7280:7280
environment:
- QW_ENABLE_OPENTELEMETRY_OTLP_EXPORTER=true
- OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:7281
command: ["run"]
jaeger-query:
image: jaegertracing/jaeger-query:1.68.0
ports:
- 16686:16686
environment:
- SPAN_STORAGE_TYPE=grpc
- GRPC_STORAGE_SERVER=quickwit:7281
- GRPC_STORAGE_TLS=false
:::note
Jaeger v1 is used here only for this local tutorial. It is end-of-life; use Jaeger v2 for production deployments.
:::
:::caution
This local self-observability setup sends Quickwit's telemetry back into the same Quickwit instance and can generate data rapidly. Stop the services when you finish the tutorial. The indexed data remains in the ./qwdata directory until you remove it.
:::
As you can see in the docker compose file, Quickwit is configured to send its own traces OTEL_EXPORTER_OTLP_ENDPOINT to itself http://localhost:7281.
On the other side, Jaeger is configured to use a gRPC storage server quickwit:7281.
Save and run the recipe:
$ docker compose up
You should be able to access Quickwit's UI on http://localhost:7280/ and Jaeger's UI on http://localhost:16686/.
Searching and viewing traces in Jaeger
Quickwit generates many traces, let's take a look at some of them:
find_traces: generated by the "Find traces" Jaeger button.get_operations: generated by Jaeger when it is fetching the list of operations.get_services: generated by Jaeger when it is fetching the list of services.ingest-spans: generated when Quickwit receives spans on the gRPC OTLP API.- ...
Here are the screenshots of the search and trace view:
Searching traces with Quickwit UI
You can also use the Quickwit UI at http://localhost:7280 to search traces.
Here are a couple of query examples:
service_name:quickwit AND events.event_attributes.level:INFOspan_duration_millis:>100resource_attributes.service.version:"v0.9.0"service_name:quickwit
That's it! You can level up with the following tutorials to discover all Quickwit features.
Clean up
Stop and remove the tutorial containers:
docker compose down
If you no longer need the tutorial data, you can also remove the ./qwdata directory.

