Health dashboard — monitor service health and metrics.
1const promClient = require("prom-client");23// Collect default metrics4promClient.collectDefaultMetrics();56// Custom metrics7const httpRequestDuration = new promClient.Histogram({8 name: "http_request_duration_seconds",9 help: "Duration of HTTP requests",10 labelNames: ["method", "route", "status"],11 buckets: [0.1, 0.5, 1, 2, 5],12});1314const activeConnections = new promClient.Gauge({15 name: "active_connections",16 help: "Number of active connections",17});1819// Middleware20app.use((req, res, next) => {21 const end = httpRequestDuration.startTimer();22 activeConnections.inc();2324 res.on("finish", () => {25 end({ method: req.method, route: req.route?.path || "unknown", status: res.statusCode });26 activeConnections.dec();27 });2829 next();30});3132// Metrics endpoint33app.get("/metrics", async (req, res) => {34 res.setHeader("Content-Type", promClient.register.contentType);35 res.end(await promClient.register.metrics());36});3738// Health endpoint39app.get("/health", (req, res) => {40 res.json({41 status: "healthy",42 uptime: process.uptime(),43 memory: process.memoryUsage(),44 });45});