express-status-monitor
Simple, self-hosted module based on Socket.io and Chart.js to report realtime server metrics for Express-based node servers.
Demo
Demo available here
Support for other Node.js frameworks
Installation & setup
- Run
npm install express-status-monitor --save
- Before any other middleware or router add following line:
app.use(require('express-status-monitor')());
- Run server and go to
/status
Run examples
- Go to
cd examples/
- Run
npm i
- Run server
npm start
- Go to
http://0.0.0.0:3000
Options
Monitor can be configured by passing options object into expressMonitor
constructor.
Default config:
title: 'Express Status',
path: '/status',
websocket: existingSocketIoInstance,
spans: [{
interval: 1,
retention: 60
}, {
interval: 5,
retention: 60
}, {
interval: 15,
retention: 60
}]
Securing endpoint
Example using https://www.npmjs.com/package/connect-ensure-login
const ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn()
app.get('/status', ensureLoggedIn, require('express-status-monitor')())
Credits to @mattiaerre
Example using http-auth
const auth = require('http-auth');
const basic = auth.basic({realm: 'Monitor Area'}, function(user, pass, callback) {
callback(user === 'username' && pass === 'password');
});
app.get('/status', auth.connect(basic), require('express-status-monitor')());
Using module with socket.io in project
If you're using socket.io in your project, this module could break your project because this module by default will spawn its own socket.io instance. To mitigate that, fill websocket parameter with your main socket.io instance as well as port parameter.
Tests and coverage
In order to run test and coverage use the following npm commands:
npm test
npm run coverage
License
MIT License © Rafal Wilinski