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:
OPTIONSrequests. The AdonisJS agent also drops them before export whileignoreOptionsRequestsistrue, its default.- Long-lived connections whose span has
http.connection_typeset tosseorwebsocket. - 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:
| Card | Value | Hint |
|---|---|---|
| Total Requests | All counted requests | Number of endpoints |
| Error rate · 5xx | Share of responses with a 5xx status | Number of server errors |
| Client errors · 4xx | Share of responses with a 4xx status | Number of client errors |
| Response Time · P95 | 95th percentile duration | P50 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?"
- Sort by Errors and keep Show on Matched routes.
- Open the top endpoint and set the executions Status to 5xx.
- Keep Show on Slowest to see whether failures are also slow, which points at a timeout rather than a bug.
- Open a trace to find the failing span, or check Issues for the exception it threw.
- Click Create alert so the next spike pages you.