- Notifications
You must be signed in to change notification settings - Fork256
🚀 Realtime Monitoring solution for Node.js/Express.js apps, inspired by status.github.com, sponsored byhttps://dynobase.dev
License
RafalWilinski/express-status-monitor
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Simple, self-hosted module based on Socket.io and Chart.js to report realtime server metrics for Express-based node servers.
- koa-monitor for Koa
- hapijs-status-monitor for hapi.js
- 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
Note: This plugin works on Node versions > 4.x
- Go to
cd examples/ - Run
npm i - Run server
npm start - Go to
http://0.0.0.0:3000
Monitor can be configured by passing options object intoexpressMonitor constructor.
Default config:
title:'Express Status',// Default titletheme:'default.css',// Default stylespath:'/status',socketPath:'/socket.io',// In case you use a custom pathwebsocket:existingSocketIoInstance,spans:[{interval:1,// Every secondretention:60// Keep 60 datapoints in memory},{interval:5,// Every 5 secondsretention:60},{interval:15,// Every 15 secondsretention:60}],chartVisibility:{cpu:true,mem:true,load:true,eventLoop:true,heap:true,responseTime:true,rps:true,statusCodes:true},healthChecks:[],ignoreStartsWith:'/admin'
You can add a series of health checks to the configuration that will appear below the other stats. The health check will be considered successful if the endpoint returns a 200 status code.
// confighealthChecks:[{protocol:'http',host:'localhost',path:'/admin/health/ex1',port:'3000'},{protocol:'http',host:'localhost',path:'/admin/health/ex2',port:'3000'}]
The HTML page handler is exposed as apageRoute property on the mainmiddleware function. So the middleware is mounted to intercept all requestswhile the HTML page handler will be authenticated.
Example usinghttps://www.npmjs.com/package/connect-ensure-login
constensureLoggedIn=require('connect-ensure-login').ensureLoggedIn()conststatusMonitor=require('express-status-monitor')();app.use(statusMonitor);app.get('/status',ensureLoggedIn,statusMonitor.pageRoute)
Credits to@mattiaerre
Example usinghttp-auth
constauth=require('http-auth');constbasic=auth.basic({realm:'Monitor Area'},function(user,pass,callback){callback(user==='username'&&pass==='password');});// Set '' to config path to avoid middleware serving the html page (path must be a string not equal to the wanted route)conststatusMonitor=require('express-status-monitor')({path:''});app.use(statusMonitor.middleware);// use the "middleware only" property to manage websocketsapp.get('/status',basic.check(statusMonitor.pageRoute));// use the pageRoute property to serve the dashboard html page
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.
In order to run test and coverage use the following npm commands:
npm testnpm run coverageAbout
🚀 Realtime Monitoring solution for Node.js/Express.js apps, inspired by status.github.com, sponsored byhttps://dynobase.dev
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.

