Jaeger

Embed
Preview of the card
<a href="https://forumulate.com/p/watchtower/docs/jaeger"><img src="https://forumulate.com/api/public/orgs/watchtower/spaces/docs/pages/b5f60de8-0a1a-4ce0-8025-6df21981d41c/social-card.svg?v=3e7ae33eec8b" alt="Jaeger" width="600" height="315"></a>

Send spans from Jaeger clients or a Jaeger agent directly to the gateway. Needs an ingestion key with ingest:traces, sent as Authorization: Bearer <key> (HTTP) or the authorization metadata entry (gRPC).

POST /api/traces                               Thrift binary Batch (Content-Type: application/vnd.apache.thrift.binary)
jaeger.api_v2.CollectorService/PostSpans       gRPC, on the OTLP gRPC port (4317)

The gRPC method is on by default; set WT_GATEWAY_JAEGER_GRPC=false on the gateway to turn it off. Only the Batch, Span, Tag, Log and reference parts of the Jaeger models are read.

Mapping: process.serviceName becomes service.name and the process tags become resource attributes. Span tags become attributes, span.kind sets the span kind, and error=true marks the span as failed. Logs become span events (the event field is the event name). Thrift parentSpanId is the parent; for gRPC the first CHILD_OF reference in the same trace is the parent. Every other reference (FOLLOWS_FROM, or another trace) becomes a span link. Thrift trace ids are the low and high 64-bit halves combined into 128 bits; microsecond times are stored as nanoseconds.

Jaeger UDP (6831/6832 compact and binary) is not served by the gateway; point the client at the HTTP endpoint or run an OpenTelemetry Collector with the jaeger receiver and an otlphttp exporter.

Delivery is at-least-once: clients retry failed batches, so duplicates are possible. Do not set wt.* tags; the gateway deletes them.

Status: unit-tested against hand-built payloads, not yet run against a real Jaeger client.

Updated