Skip to Content

Jaeger

Use Jaeger as an OTLP-compatible backend for KalamDB distributed tracing.

Download Compose Example

Docker Compose Details

The compose file runs:

yaml snippetYAML
jaeger:  image: jaegertracing/jaeger:latest  environment:    COLLECTOR_OTLP_ENABLED: "true"  ports:    - "16686:16686"   # Jaeger UI    - "4317:4317"     # OTLP gRPC receiver    - "4318:4318"     # OTLP HTTP receiver

Start it:

bash snippetBASH
docker compose up -d

Jaeger UI: http://127.0.0.1:16686

Connect KalamDB → Jaeger

Via gRPC (default, port 4317)

toml snippetTOML
[logging.otlp]enabled = trueendpoint = "http://127.0.0.1:4317"protocol = "grpc"service_name = "kalamdb-server"timeout_ms = 3000

Via HTTP (port 4318)

toml snippetTOML
[logging.otlp]enabled = trueendpoint = "http://127.0.0.1:4318"protocol = "http"service_name = "kalamdb-server"timeout_ms = 3000

The OTLP HTTP exporter appends /v1/traces automatically.

Via Environment Variables

bash snippetBASH
export KALAMDB_OTLP_ENABLED=trueexport KALAMDB_OTLP_ENDPOINT="http://127.0.0.1:4317"export KALAMDB_OTLP_PROTOCOL="grpc"export KALAMDB_OTLP_SERVICE_NAME="kalamdb-server"

What to Expect in Jaeger UI

After starting KalamDB with OTEL enabled:

  1. Open http://127.0.0.1:16686.
  2. Select the service name from the dropdown (default: kalamdb-server).
  3. Click Find Traces.
  4. You should see traces for API requests, SQL execution, and storage operations.

Each trace shows the full request lifecycle — from API entry through SQL parsing, query execution, and storage I/O.

Troubleshooting

SymptomCauseFix
No service in Jaeger dropdownOTEL not enabled or no traffic yetSet enabled = true, execute some SQL, then refresh
Service appears but no tracesEndpoint mismatchVerify protocol matches the port: grpc → 4317, http → 4318
Connection refusedJaeger not running or wrong portRun docker compose ps to verify Jaeger is up
Traces delayedBatch export timeoutDefault timeout is 3000ms; increase timeout_ms if network is slow

For all OTEL configuration options and environment variable overrides, see OpenTelemetry (OTEL).

Last updated on