---
title: Traces
description: Requests as trees of spans, from services that export OpenTelemetry.
order: 2
---

A trace follows one request through your services as a tree of timed spans. **Traces**
lists the root spans of the environment newest first; open one to see its waterfall.
Filter by service, a search text and a time range.

## Sending spans

Traces come from services that export OpenTelemetry spans over OTLP to the ops collector.
Set the exporter's endpoint in the service's secret group:

```sh
ops secrets set api OTEL_EXPORTER_OTLP_ENDPOINT=<collector address> --text
ops secrets rotate api
```

Ops already sets `OTEL_SERVICE_NAME` on every container, so spans carry the right service
without more setup. With the Rust `ops-sdk`, the `observability` feature exports spans as
soon as the endpoint is set; a collector that cannot be reached never stops the service.

The collector address is not shown in the console yet. Ask whoever administers your ops
for it.

## What is kept

Of each span, ops keeps the ids, the name, the kind, the timing, and the route, method and
status of a request. Every other attribute is dropped before it is stored, so a span never
carries a request body or a person's data into ops.

Traces are kept for seven days.
