Performance · APM

Slow routes surface before users file tickets.

Per-transaction timing for every web request and background job, broken into DB, view, and external components. Spans carry normalized SQL and a source location — and latency spikes feed the incident engine.

routes · ox-coffee · productionlast 1h
routetputp95err
GET /products1.2k/m96 ms0.1%
POST /checkout/payment214/m4,823 ms9.4%
spanself
controller · create
38 ms
db · SELECT orders
112 ms
external · api.stripe.com
4,210 ms
view · payment.html.erb
91 ms
SELECT * FROM orders WHERE id = ? LIMIT ? · charge.rb:74
GET /api/cart860/m61 ms0.0%
How it works

From request to root span.

The SDK times transactions automatically. You drill from the route to the span to the line.

01 · Time

Every transaction

Web requests and background jobs alike. Each transaction records total time plus throughput, latency, and error health per route.

02 · Break down

DB, view, external

Component timings show where the time went — your code, your queries, or someone else’s API.

03 · Drill

Spans with receipts

Each span carries normalized SQL and the source location that issued it. The slow query points at the file and line.

04 · Feed

Spikes become incidents

p95 at 2× baseline is one of the six incident heuristics. A latency regression shows up as an incident, not a dashboard you forgot to check.

Span waterfall

Where 4.8 seconds actually went.

The waterfall makes the breakdown unarguable: 38 ms of controller, 112 ms of database, 4.2 seconds waiting on an external API. The fix conversation starts from facts.

  • Normalized SQL — literals masked, shape preserved
  • Source location on every span
routes · ox-coffee · productionlast 1h
routetputp95err
GET /products1.2k/m96 ms0.1%
POST /checkout/payment214/m4,823 ms9.4%
spanself
controller · create
38 ms
db · SELECT orders
112 ms
external · api.stripe.com
4,210 ms
view · payment.html.erb
91 ms
SELECT * FROM orders WHERE id = ? LIMIT ? · charge.rb:74
GET /api/cart860/m61 ms0.0%
Route health

Throughput. Latency. Errors. Per route.

The route table is the triage view: every endpoint and job with its throughput, p95, and error rate. Sort by what hurts.

  • Web requests and background jobs, side by side
  • Latency anomalies feed Incident Intelligence
route healththroughput · latency · errors
routetputp95err
GET /products1.2k/m96 ms0.1%
GET /api/cart860/m61 ms0.0%
POST /checkout/payment214/m4,823 ms9.4%
job · OrderMailerJob95/m740 ms0.4%
GET /search64/m212 ms0.2%

Close the errorgap.

Start free, no credit card. Turn scattered production signals into one investigable incident in under five minutes. Cancel anytime, keep your data.