UNPKG

@vaibhavkaul69/monitoring-logger

Version:

Reusable monitoring and logging middleware for backend servicses

37 lines (30 loc) 1.03 kB
require("dotenv").config(); const client = require("prom-client"); const responseTime = require("response-time"); client.collectDefaultMetrics(); const reqResTime = new client.Histogram({ name: "http_request_duration_seconds", help: "Duration of HTTP requests in seconds", labelNames: ["route", "status_code"], buckets: [0.1, 0.5, 1, 1.5, 2, 5], }); const getOnlyRouteFromRequest = (url) => { // Customize this based on your use case return url.split("?")[0]; }; const monitoringMiddleware = (app) => { app.use( responseTime((req, res, time) => { const timeInSeconds = time / 1000; const route = getOnlyRouteFromRequest(req.originalUrl); const statusCode = res.statusCode; reqResTime.labels(route, statusCode).observe(timeInSeconds); }) ); app.get("/metrics", async (req, res) => { res.setHeader("Content-Type", client.register.contentType); const metrics = await client.register.metrics(); res.send(metrics); }); }; module.exports = monitoringMiddleware;