Jaeger v2 with Watchtower (TRC-028)
Jaeger v2 is an OpenTelemetry Collector distribution, so both directions use protocols Watchtower already serves. Nothing is embedded; Jaeger stays your component.
Send traces from Jaeger v2 to Watchtower
Add an otlphttp exporter to the Jaeger v2 config. The token is an ingest credential with scope ingest:traces (POST /v1/projects/{prj}/credentials).
exporters:
otlphttp/watchtower:
endpoint: https://<gateway-host>
headers:
Authorization: "Bearer ${env:WT_INGEST_TOKEN}"
sending_queue: { enabled: true, storage: file_storage }
retry_on_failure: { enabled: true }
service:
pipelines:
traces:
receivers: [otlp, jaeger, zipkin]
exporters: [otlphttp/watchtower]Jaeger v1 clients that post Thrift/JSON to the collector keep working; clients that talk to Watchtower directly can use POST /api/traces (Jaeger), POST /api/v2/spans and POST /api/v1/spans (Zipkin) on the gateway.
Use Jaeger UI on Watchtower traces
Point Jaeger UI (or Grafana's Jaeger data source) at the Jaeger Query JSON API Watchtower serves: https://<api-host>/v1/projects/{prj}/jaeger/api with a read-scoped API key as the bearer token. It supports services, services/{svc}/operations, traces (search) and traces/{id}. A search returns at most 50 traces of 1000 spans each inside one 30 s deadline (the bound that Jaeger's trace-search security advisory GHSA-55pj-w5q5-r3m6 asks for); partial says when something was cut.