Find what’s slowing down your application.

Follow a request across your services and see the operation that took the time. A trace shows which call waited, on what, and for how long — your own code or something downstream.

IngestNative OTLP
SamplingKeeps the slow ones
Joined toErrors, logs, profiles
Trace a41f…9c22.41s · 1.9s waiting on db
Duration2.41sp50 388ms
Spans10
Services5
Errors1
webGET /checkout2.41s
authauth.verify38ms
authsession.load22ms
cartcart.load92ms
cartinventory.check41ms
checkout-apidb.acquire1.90s
checkout-apidb.query orders61ms
paymentsstripe.charge44ms
paymentswebhook.enqueue6ms
webrender9ms
Spandb.acquire
servicecheckout-api
db.systempostgresql
pool.size20
pool.in_use20 / 20
pool.wait1 902ms
hostprod-web-07
Events
  1. +1.20spool wait above 1s
  2. +1.90sacquire timeout · TimeoutError
Linked
Issue · TimeoutError: pool exhausted
Profile · cpu 14:02 · checkout-api

Narrow a slow endpoint to one span

A trace turns “checkout is slow” into the operation responsible for it. Here is one endpoint, from the latency alert to the span that explains it.

INC-402 · Checkout latency above SLO
Resolved
14:02:11 → 14:19:44 · 17m 33s
14:01:58
p95 on checkout crosses its SLO
Measured as latency budget burn rather than a raw threshold, so a slow afternoon reads differently.
APM
14:06:40
One span holds 88% of the request
db.pool.acquire, waiting for a connection that never becomes free.
Traces
14:09:12
Compared against the release before
Same endpoint and percentile on the previous deploy: the span took 6ms there.
Release compare

Follow requests across your services

Distributed tracing over OTLP, with the search, comparison and sampling controls that keep it usable at volume.

Full trace waterfall

Every span with its own timing, attributes, events and errors, across services, in one view.

waterfall
Search traces

Filter by duration, status, service, route, span attribute or error to find the requests you want.

trace-search
Database and cache spans

Statement shape, row counts and time in the driver, without the statement text leaving your systems.

db-spans
Service map

Which service calls which, at what rate and with what error share, drawn from the traces themselves.

service-map
Release comparison

The same endpoint at the same percentile, before and after a deploy, side by side.

compare
Tail sampling

Keep errors and slow requests in full and thin the routine successful ones.

sampling
Continue into the profile

When a span is using CPU rather than waiting, open the profile covering the same period.

profiles

See which endpoints cost the most.

The same trace data answers a slower question week to week: where your latency budget is going, and which endpoint is worth the time to fix.

  • Ranked by impact. Request rate times duration, so a slow endpoint nobody calls ranks low.
  • p50, p95 and p99 together. A p99 that moved alone points somewhere different from a p50 that moved.
  • Error share alongside. See whether a slow endpoint is also failing.
  • Open a real example. From any cell to an actual trace at that percentile, not an average.
Endpoints · checkout-apilast 1h
POST /api/checkout1 284 req · 24.1% errorsp95 9841ms
POST /api/cart/items8 902 req · 0.4% errorsp95 612ms
GET /api/catalogue41 220 req · 0.0% errorsp95 88ms
GET /api/session52 118 req · 0.0% errorsp95 21ms

Start tracing your services.

Send OTLP from the instrumentation you already have and see your first trace waterfall in minutes. Start on the free plan with no card.