Use Cases

Nobody deployed. Latency doubled anyway.

In a distributed system, the service that got slow is rarely the one that broke. The map shows which edge degraded first, and the trace shows how far the wait spread.

signal api-gateway p95 1.9 s · was 0.9 s, no deploy

The path

Two hops from the symptom to the cause

payment-svc@1.4.2 shipped four hours before latency went up. The map, the trace and the logs below are all filtered to it.

  1. map T+0:00 · deploy payment-svc@1.4.2

    The map shows a slow edge

    api-gateway is the service being paged about, but its own spans are fine. The degraded edge is two hops in: payment-svc to user-db, p95 up from 12 ms to 210 ms.

    A service neighborhood showing API, database and cache dependencies with live request flow
  2. trace T+1:10 · deploy payment-svc@1.4.2

    The trace shows the wait

    Open a slow request and the db span is almost all of it. The query itself takes 4 ms, but the span takes 210 ms. The other 206 ms was spent waiting before the query ran.

    A span selected in the waterfall with its full attribute set open alongside
  3. logs T+2:40 · deploy payment-svc@1.4.2

    The logs name the release

    Lines from that span read pool wait 206 ms, acquired after 3 attempts. Filter by service.version and they start at 1.4.2, which raised concurrency without raising the pool.

    A log detail with linked trace and span IDs, correlated events and full resource attributes

outcome

Pool size raised to match the new concurrency. The p95 edge latency returned to 14 ms without a rollback.

2
hops from the page
12 → 210 ms
p95 edge latency, before and after
98%
of the span was waiting

What it does

Why the cause was findable

edge latency
Edges carry their own latency
The map measures each caller-callee pair separately, so a dependency that degraded for one caller and not another is visible as one edge.
db.statement
A db span is wait plus work
The client span covers getting a connection as well as running the query. When the pool runs dry, span duration and query duration drift apart, and you can see the gap.
service.version
Old releases are filterable too
service.version is on every span, so you can ask which release a span came from. A release from four hours ago is as easy to find as one from four minutes ago.

Keep going

The same data, other jobs

Point OTLP at Maple.

One endpoint, one key. Traces, logs, metrics and sessions, linked from the first request.