Lesson 29 / 30
Monitoring & Observability
Monitor performance and troubleshoot issues in production.
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();
});