Lesson 31 / 32
Monitoring & Observability
Monitor Fastify with structured logs, Prometheus metrics and traces to troubleshoot production issues.
Observability pillars
Three pillars: logs (structured via Pino), metrics (request counts, latency), and traces (request paths through your system).
Metrics with Prometheus
Expose metrics in Prometheus format for scraping by monitoring systems.
import promClient from 'prom-client';
const httpRequestDuration = new promClient.Histogram({
name: 'http_request_duration_ms',
help: 'Duration of HTTP requests in ms',
labelNames: ['method', 'route', 'status_code'],
});
fastify.addHook('onResponse', (request, reply, done) => {
const duration = Date.now() - request.startTime;
httpRequestDuration.observe({
method: request.method,
route: request.url,
status_code: reply.statusCode,
}, duration);
done();
});
fastify.get('/metrics', async () => {
return promClient.register.metrics();
});