Need help with express-status-monitor?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Global Rank
Topics of expertise
3.1K Stars 210 Forks MIT License 292 Commits 21 Opened issues


🚀 Realtime Monitoring solution for Node.js/Express.js apps, inspired by

Services available


Need anything else?

Contributors list

No Data


Dependency Status devDependencies Status Gitter express-status-monitor on npm npm CircleCI Open Source Helpers

Simple, self-hosted module based on and Chart.js to report realtime server metrics for Express-based node servers.

Monitoring Page


Demo available here

Support for other Node.js frameworks

Installation & setup

  1. Run
    npm install express-status-monitor --save
  2. Before any other middleware or router add following line:
  3. Run server and go to

Note: This plugin works on Node versions > 4.x

Run examples

  1. Go to
    cd examples/
  2. Run
    npm i
  3. Run server
    npm start
  4. Go to


Monitor can be configured by passing options object into


Default config: ```javascript title: 'Express Status', // Default title theme: 'default.css', // Default styles path: '/status', socketPath: '/', // In case you use a custom path websocket: existingSocketIoInstance, spans: [{ interval: 1, // Every second retention: 60 // Keep 60 datapoints in memory }, { interval: 5, // Every 5 seconds retention: 60 }, { interval: 15, // Every 15 seconds retention: 60 }], chartVisibility: { cpu: true, mem: true, load: true, eventLoop: true, heap: true, responseTime: true, rps: true, statusCodes: true }, healthChecks: [], ignoreStartsWith: '/admin'

## Health Checks

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.

```javascript // config healthChecks: [{ protocol: 'http', host: 'localhost', path: '/admin/health/ex1', port: '3000' }, { protocol: 'http', host: 'localhost', path: '/admin/health/ex2', port: '3000' }]

Health Checks

Securing endpoint

The HTML page handler is exposed as a

property on the main middleware function. So the middleware is mounted to intercept all requests while the HTML page handler will be authenticated.

Example using ```javascript const ensureLoggedIn = require('connect-ensure-login').ensureLoggedIn()

const statusMonitor = require('express-status-monitor')(); app.use(statusMonitor); app.get('/status', ensureLoggedIn, statusMonitor.pageRoute) ```

Credits to @mattiaerre

Example using http-auth ```javascript const auth = require('http-auth'); const basic = 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) const statusMonitor = require('express-status-monitor')({ path: '' }); app.use(statusMonitor.middleware); // use the "middleware only" property to manage websockets app.get('/status', basic.check(statusMonitor.pageRoute)); // use the pageRoute property to serve the dashboard html page ```

Using module with in project

If you're using in your project, this module could break your project because this module by default will spawn its own instance. To mitigate that, fill websocket parameter with your main 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


MIT License © Dynobase

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.