Skip to main content
Every app that serves traffic through a domain gets request rate, error rate and latency percentiles with no setup and no change to the app. The numbers are measured at the embedded ingress, kept on the node that served the requests, and queried on demand.

What you see

Open an app and choose Traffic under Observe, or run traffic <app> in the CLI. For the window you pick (5 minutes, 1 hour or 24 hours):

Bounded by design

Memory and storage stay flat as traffic grows.
  • Latency uses a fixed 12 bucket histogram per app and per replica. Percentiles are estimated from the buckets, so they are accurate to the bucket width.
  • Routes are normalized templates such as /api/users/:id. Ids, tokens, query strings and client addresses are never read or stored. The number of distinct routes and replicas kept per tick is capped, and the rest fall into an other bucket.
  • The sample log keeps failed requests (5xx and upstream failures) and a fraction of slow ones, capped per tick and per app, and expires with a retention period.

Settings

All settings are environment variables on the control plane or agent.

Alerts

A threshold alert rule can watch three request metrics, so “error rate above X for Y” and “p99 above X for Y” need no new rule type: A window with no requests neither fires nor resolves a rule. For error-budget alerting use an SLO burn rule, which this page’s budget figure reads.

API

GET /api/v1/apps/{name}/traffic?window=5m|1h|24h returns the totals, status_classes, latency, replicas, slow_routes, samples and, when an SLO burn rule exists, slo. It needs read access to the app. Time series for the charts come from GET /api/v1/apps/{name}/requests.

CLI

With --watch --json each refresh is printed as one JSON line.

Limits

  • Replica figures need the request to pass through a reverse proxy upstream. Static sites and requests answered by the ingress itself have no replica.
  • Percentiles are histogram estimates. A p99 above 10 seconds reports the last bucket bound.
  • The report is not available through the MCP server.
Last modified on October 17, 2026