Slowness Detector Express.js

JS
S
JavaScript

Express.js middleware for detecting and alerting on slow API responses. Helps identify performance bottlenecks and improve application responsiveness.

1import logService from '../services/log';
2
3function logResponseTime(req: any, res: any, next: any) {
4  const startHrTime = process.hrtime();
5  const path = req.method + req.url;
6
7  res.on('finish', () => {
8    const elapsedHrTime = process.hrtime(startHrTime);
9    const elapsedTimeInMs = elapsedHrTime[0] * 1000 + elapsedHrTime[1] / 1e6;
10    logService.log('info', `Request Completed at ${elapsedTimeInMs}ms`, { path });
11    if (elapsedTimeInMs > 5000) {
12      logService.log('warning', 'Slow query detected:', { path, time: `${elapsedTimeInMs}ms` });
13    }
14    if (elapsedTimeInMs > 15000) {
15      logService.log('error', 'Super Slow query detected:', { path, time: `${elapsedTimeInMs}ms` });
16    }
17  });
18
19  next();
20}
21
22export { logResponseTime };
23
24
25// ============================
26import { logResponseTime } from '../lib/log-response-time';
27
28// Response times APM
29this.app.use(logResponseTime);

Created on 2/25/2021