Reading a trace

The Traces page lists distributed traces collected from OTLP-instrumented services. Each trace is a single request's path through your system.

Filters (top of page)

FilterNotes
ServiceDropdown of services that have reported traces. Default All services.
Span nameFree-text match against the root span name.
StatusDropdown: All, Ok, Error, Unset.
Min duration (ms)Numeric input. Set to e.g. 100 to find slow traces only.
Time pickerPresets `15m1h6h24h7d` plus explicit From/To datetime inputs.
RefreshTop-right. Re-runs the search.

Source scope

The page respects the source switcher in the left rail. With one source selected, you only see traces from that source. With All sources, you see every trace across the org.

Results table

When traces match, the table shows:

ColumnMeans
Trace IDUnique identifier. Click to open the trace detail.
ServiceService that started the root span (the OTLP service.name).
Root SpanOperation name of the root span (e.g., POST /api/v1/login).
StartWhen the trace began, in your local timezone.
DurationThe trace's wall-clock time (root span start → finish), in milliseconds. In SQL the span column is duration_nsnanoseconds (duration_ns/1e6 for ms).
SpansSpan count.
StatusPill: OK (green), ERROR, or UNSET.

When no traces match: No traces found.

Trace detail

Clicking a Trace ID opens /traces/<id>:

  • Header: "Trace Detail" + the full trace ID.
  • Back arrow top-left to return to the list.
  • Top-right summary: span count + total duration (e.g. 2 spans 250.00ms).
  • Span tree: three columns — Span | Service | Timeline.

- The root span is at the top. Children are indented underneath.

- Each span row shows the span name, its service, and a horizontal timeline bar showing where the span sits within the trace's total duration. The bar's width is proportional to span duration; child spans are positioned at their offset within the parent.

- Each span shows its individual duration on the right edge of its timeline bar.

- The chevron at the start of each span row collapses/expands child spans.

Click any span row. A Span Detail panel slides in from the right with:

  • Name — the span's operation name.
  • Service — service that emitted the span.
  • Kind — span kind (Server, Client, Internal, Producer, Consumer).
  • StatusOK / ERROR / UNSET, with the optional status message below.
  • Duration — span wall-clock time.
  • Trace ID, Span ID, Parent Span ID — full identifiers.
  • Start / End — ISO timestamps.
  • View Logs for this span — deep-link to Log Explorer scoped to the trace ID and time window.
  • View Metrics for `<service>` — deep-link to Metrics scoped to the service.
  • Attributes — full key/value table of every OTLP attribute on the span (http.method, db.statement, custom tags, etc.).
  • Events — JSON-formatted span events, when present.

Close the panel with the X top-right or click another row to compare.

Sending traces

Set up OpenTelemetry in your service:

  • Set OTEL_SERVICE_NAME (this is what shows in the Service column).
  • Point the OTLP exporter at the agent on 4317 (gRPC) or 4318 (HTTP/JSON) on the agent's host.
  • The agent forwards spans to the server, where they appear here within seconds.

Each source has its own API key — agents and exporters authenticate with X-API-Key (or Authorization: Bearer ...) in the request headers.

If a log line carries a trace_id field, the Log Explorer renders it as a clickable link that opens the trace here.