docs

Requests

Throughput, error rates and latency for every endpoint your servers handle, with per-endpoint detail and recent requests.

Requests shows how every endpoint of your HTTP services behaves: how often it is called, how often it fails and how long it takes. Use it to find the route that got slower after a release, or the one that returns the most 5xx.

The list lives at /o/:org/projects/:project/requests and an endpoint at /o/:org/projects/:project/requests/detail?key=GET%20/orders/:id.

What counts as a request

A request is a SERVER span that carries http.request.method. The AdonisJS agent creates one for every request your router handles, and any OpenTelemetry HTTP server instrumentation does the same. Legacy attribute names such as http.method and http.target are renamed on ingest, see Semantic conventions.

Three kinds of server spans are never counted, so they cannot drag averages around:

  • OPTIONS requests. The AdonisJS agent also drops them before export while ignoreOptionsRequests is true, its default.
  • Long-lived connections whose span has http.connection_type set to sse or websocket.
  • HTTP spans that are not SERVER spans. Outbound calls belong to External Calls.

How endpoints are grouped

Each row is one endpoint of one service. The key is the method plus http.route, so GET /orders/1 and GET /orders/2 with http.route=/orders/:id collapse into GET /orders/:id.

When a span has no http.route, Unhandled falls back to url.path with the query string removed and dynamic segments replaced by :id. A segment is dynamic when it is all digits, a UUID, 8 or more hex characters, or at least 16 word characters including a digit. When there is no path either, the path counts as /, so the key is the method plus /.

Two services serving the same route produce two rows. The Service column is hidden when exactly one service is selected in the top bar.

The list

Four cards cover the selected range:

CardValueHint
Total RequestsAll counted requestsNumber of endpoints
Error rate · 5xxShare of responses with a 5xx statusNumber of server errors
Client errors · 4xxShare of responses with a 4xx statusNumber of client errors
Response Time · P9595th percentile durationP50 and P99

Server and client errors are separate cards because a 4xx is often a validation error or a missing page rather than something you broke. The Overview error rate also counts 5xx only.

Requests by Status stacks volume per bucket into 2xx, 4xx and 5xx. Response Time plots the median and P95, and the legend adds P99. Both show deployment markers and zoom on drag.

The table shows up to 200 endpoints with Service, Endpoint, Requests, 4xx, 5xx, Avg, P95 and Last called. Sort orders it by Volume (the default), Errors, Avg or P95. An error is a request with a 5xx status or an error span status. When Compare is on in the top bar, the table adds Δ P95 and Δ calls against the comparison window.

Show picks which keys appear:

  • All endpoints, the default, lists every key.
  • Matched routes lists endpoints that always had an http.route.
  • Unmatched paths lists keys built from a raw path, such as 404s for URLs no route matched, or a framework that does not set http.route.

Endpoint detail

Click a row to open the endpoint. The header names the service, and the cards and charts repeat for that endpoint alone.

When you reach an endpoint that more than one service serves without picking a service, for example from a shared link, the page first asks you to choose one, listing each service with its call count.

Latency distribution is a heatmap of requests by start time and duration. Drag a box over cells, or click Slowest 10%, to compare the requests inside the box with the rest of the range. The comparison lists, per attribute such as service, version, instance, user, status code and region, the values whose share differs most between the box and the rest, with Filter to and Exclude buttons. Each side counts at most 200,000 requests, so shares on busy endpoints are estimates.

Where the time goes splits the self time of the latest 200 requests in the range into app code, database, external calls, cache and other, and names the operations that contribute most.

Slowest executions lists the 50 longest requests in the range with Time, Path, Status, User, Duration and a link to the trace. Status filters to All, 2xx (any status below 400, so 3xx too), 4xx or 5xx, and Show switches to Recent executions, the 50 latest. User shows user.name, user.email or user.id, whichever the request carries first. See Users for how to set it.

Create alert, shown when the key is a method and a path, opens the alert form prefilled with this endpoint's method, route, service and environment. See Alerts.

Answering "which route is failing for customers?"

  1. Sort by Errors and keep Show on Matched routes.
  2. Open the top endpoint and set the executions Status to 5xx.
  3. Keep Show on Slowest to see whether failures are also slow, which points at a timeout rather than a bug.
  4. Open a trace to find the failing span, or check Issues for the exception it threw.
  5. Click Create alert so the next spike pages you.