Watchlog APM
Application Performance Monitoring to trace, analyze, and optimize your backend services in real time.
30‑day trial on paid features. No credit card to start.
Why choose Watchlog APM?
- End‑to‑end tracing across services and databases with minimal overhead.
- Timing metrics like avg, p95, and max to spot regressions instantly.
- Automatic error tracking with stack traces and request context.
- SQL/NoSQL insight with slow queries and N+1 detectors.

Track your 95th percentile over time to catch outliers.
Rank routes by average and max duration.
Detect bursts of exceptions and status 5xx.
Find the queries that dominate request time.
Supported frameworks & languages
Node.js (Express)
Drop‑in middleware for route timings & errors
NestJS
Global interceptor for consistent traces
FastAPI
ASGI middleware with low overhead
Django / Flask
WSGI middleware & decorators
Install in minutes
# Nodejs
npm install @watchlog/apm
// index.js — must be first
const { instrument } = require('@watchlog/apm');
// Initialize with your service name and options
const sdk = instrument({
app: 'my-service', // your application name
errorTPS: 5, // max 5 error spans/sec
sendErrorTraces: true, // always send error spans
slowThresholdMs: 300, // always send spans slower than 300ms
sampleRate: 1 // random sample rate (0.0–1.0, capped at 0.3)
});
// Continue loading your application
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(3000, () => console.log('Listening on 3000'));
Deep request visibility
- Per‑route timings with normalized paths
- DB spans for SQL & NoSQL (queries, rows, timings)
- External call instrumentation (HTTP, cache)
Actionable trends
- Requests, errors, avg/p95/max, memory trends
- Compare before/after deploys for regressions
- Top endpoints & slow traces tables
Error context
- Stack traces with request/headers context
- Log correlation to jump from error to logs
- Link to related metrics for a 360° view
Frequently asked questions
How much overhead does APM add?
Typical overhead is < 2–5% CPU depending on sampling and enabled spans. You can tune sampling and disable integrations per service.
Can I sample traces?
Yes. Set global or route‑level sampling rates to balance cost and visibility.
Does it support background jobs?
Yes. You can create custom spans around jobs, queues, or cron tasks.
How are routes normalized?
We normalize dynamic segments (e.g., /users/:id) so high‑cardinality paths roll up correctly.
Can I see database query text?
You can capture query text with safeguards (redaction). For sensitive environments, log only timings and tables.
Ready to trace your first request?
Install the middleware and watch routes, queries, and errors come to life.