Files
François MassotandClaude Opus 4.7 5a9739fcc1 Release 0.9.0 (#6316)
* 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>
2026-07-25 16:19:10 +02:00

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:

Jaeger search view Jaeger 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:INFO
  • span_duration_millis:>100
  • resource_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.

Next tutorials