ipx-web and ipx-directory send no traces #213

Closed
opened 2026-10-12 09:09:41 -07:00 by rays · 1 comment
Owner

Only ipx sends traces to Tempo. ipx-web (Caddy) sends none and does not pass a traceparent on, so a page request's trace starts at ipx. ipx-directory sends none, and ipx does not put a traceparent on its requests to the directory, so a Directory page view is ipx's span alone. Wanted: Caddy's tracing directive to the same OTLP endpoint (one trace browser, Caddy, ipx, joining the page's own from #190); the directory with ipx's tracing-opentelemetry setup (service ipx-directory), reading traceparent, and ipx injecting it on directory calls; then the dashboard's traces row and the prod-check skill to cover all three.

Only ipx sends traces to Tempo. ipx-web (Caddy) sends none and does not pass a traceparent on, so a page request's trace starts at ipx. ipx-directory sends none, and ipx does not put a traceparent on its requests to the directory, so a Directory page view is ipx's span alone. Wanted: Caddy's tracing directive to the same OTLP endpoint (one trace browser, Caddy, ipx, joining the page's own from #190); the directory with ipx's tracing-opentelemetry setup (service ipx-directory), reading traceparent, and ipx injecting it on directory calls; then the dashboard's traces row and the prod-check skill to cover all three.
rays added the enhancement label 2026-10-12 09:09:41 -07:00
Author
Owner

Done and deployed: ipx-web in a370876, the directory and ipx's propagation in 44e75df. ipx-web: Caddy's tracing directive, on with WEB_TRACING=on (production only, so the tests and the sample do not log failed exports). The directory: a span a request, a child of the caller's traceparent, and a trace a refresher round with a span a feed; the exporter and traceparent parsing are shared in ipx_directory::otel. ipx sends traceparent on its directory calls and wraps each share in a span. Checked: GET /api/directory/{id} through Caddy with a known traceparent is one trace, ipx-web 125ms > ipx 124ms > ipx-directory GET /v1/feeds/{id} 39ms. Dashboard's Traces row (recent, slow, failed) and the prod-check skill cover all three. CLAUDE.md now says traces first.

Done and deployed: ipx-web in a370876, the directory and ipx's propagation in 44e75df. ipx-web: Caddy's tracing directive, on with WEB_TRACING=on (production only, so the tests and the sample do not log failed exports). The directory: a span a request, a child of the caller's traceparent, and a trace a refresher round with a span a feed; the exporter and traceparent parsing are shared in ipx_directory::otel. ipx sends traceparent on its directory calls and wraps each share in a span. Checked: GET /api/directory/{id} through Caddy with a known traceparent is one trace, ipx-web 125ms > ipx 124ms > ipx-directory GET /v1/feeds/{id} 39ms. Dashboard's Traces row (recent, slow, failed) and the prod-check skill cover all three. CLAUDE.md now says traces first.
rays closed this issue 2026-10-12 09:24:46 -07:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: rays/ipx#213