UNPKG

express-health-middleware

Version:

This middleware helps to add endpoints to monitor the express applications

46 lines (41 loc) 1.61 kB
const express = require('express'); module.exports = () => { let package = undefined; try { package = require('fs').readFileSync('./package.json', 'utf-8'); if(package) package = JSON.parse(package); }catch(err) { console.warn("Warning!! package.json doesn't exists, '/about' endpoint will not be accessiable"); } let router = express.Router(); if(package) { router.get('/about', (req, res) => { let { name , description, version, author, license, homepage } = package; return res.json({name , description, version, author, license, homepage}); }); } router.get('/health', (req, res) => { return res.sendStatus(200); }); router.get('/uptime', (req, res) => { let secs = process.uptime(); let uptime = ('0' + Math.floor(secs / 3600)).slice(-2) + ":" + ('0' + Math.floor(secs % 3600 / 60)).slice(-2) + ":" + ('0' + Math.floor(secs % 3600 % 60)).slice(-2); return res.json({uptime}); }); router.get('/memory-usage',(req, res) =>{ let mem = process.memoryUsage(); let formatted ={}; for (let key in mem) { formatted[key] = formatMemory(mem[key]); } return res.json(formatted); }); return router; } function formatMemory(bytes) { if(bytes == 0) return '0 Bytes'; var k = 1000, sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; }