Create a root span for each request with standard HTTP semantic convention attributes.
Requirements
- Root span created at request ingress
- Attributes: HTTP method, path, status code, client IP, request ID
- Attributes: upstream cluster name, upstream address
- Span name:
{method} {path} (e.g. GET /api/v1/models)
- Span kind: SERVER
- Duration covers full request lifecycle
- Request ID must be a recorded span field (not just
an attribute) so it propagates into every tracing
log line emitted within the span tree — filter
execution, upstream connect, error events, etc.
This enables grep-by-request-ID across all log
output, not just access logs.
Implementation Notes
- OpenTelemetry HTTP semantic conventions for attribute names
- Request ID from
RequestIdFilter output
Parent epic: #10
Create a root span for each request with standard HTTP semantic convention attributes.
Requirements
{method} {path}(e.g.GET /api/v1/models)an attribute) so it propagates into every
tracinglog line emitted within the span tree — filter
execution, upstream connect, error events, etc.
This enables grep-by-request-ID across all log
output, not just access logs.
Implementation Notes
RequestIdFilteroutputParent epic: #10