Every part of your app,
already on a dashboard.
Endpoints, database queries, jobs, external APIs, cache, emails, and users each get their own dashboard the moment your app sends data. No panels to build, no queries to write.
Throughput, errors, P95 per route
Slowest and costliest patterns
Processing time, queue wait, retries
Ace commands and scheduled tasks
Every third-party API you call
Hit rate and latency per key
Sent, failed, and send time
What each user went through
Every endpoint, with its slow and failing calls
Requests are grouped by route, so GET /users/1 and GET /users/2 both count for GET /users/:id. Sort by volume, errors, or P95 to find the endpoints to work on.
- 4xx and 5xx responses, average and P95 duration, and last call for each route
- Requests that match no route are listed apart, so bots and scanners stay out of the way
- Open an endpoint to see its recent requests with their traces, or set an alert on it
The queries that cost you the most
Every database query is grouped into a pattern. Sort by total time to find what costs the most overall, or by P95 to find the slowest ones.
- Slow queries above 100 ms and failed queries counted on their own
- Each execution shows the endpoint or job that ran it, and opens its trace
- Works with Lucid, Kysely, and Drizzle, and any database instrumentation
Jobs, commands, and the APIs you depend on
Background work and outgoing calls get the same treatment as your endpoints: volume, errors, and duration, down to each run.
- Jobs: throughput, processing time, time spent waiting in the queue, and retries
- Ace commands with the arguments and flags of each run
- External calls grouped by domain and URL pattern, with your own services marked Internal
See what each user went through
When a customer reports a problem, find them by name, email, or ID and see every request they made, the ones that failed, and the latency they got.
- Call Monocle.setUser() in your auth middleware, and every trace knows its user
- Active users over time, requests and server errors per user
- Each request links to its trace, and each issue lists the users it hit
And your own dashboards, when you need them
Put the metrics you care about side by side. Pick a metric, an aggregation, a group by, and filters, and see the preview update as you go.
- Six widget types on a 12-column grid: time series, stat, sparkline, bars, pie, and table
- Any OpenTelemetry metric, with up to six queries in the same widget
- Your AI assistant can create dashboards and add widgets through the Monocle MCP
Plugs into your stack
Lucid
Queries traced by the AdonisJS agent
Kysely & Drizzle
Every query as a span
BullMQ
Jobs from enqueue to run
boringnode/queue & @adonisjs/queue
Traced out of the box
BentoCache
Hits, misses, and latency per key
@adonisjs/mail
Every email sent, traced
See what your apps
are really doing.
Traces, logs, errors and metrics for every app you ship. Bring it all into focus.
