All Projects â†’ RafalWilinski â†’ Express Status Monitor

RafalWilinski / Express Status Monitor

Licence: mit
🚀 Realtime Monitoring solution for Node.js/Express.js apps, inspired by status.github.com, sponsored by https://dynobase.dev

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to Express Status Monitor

Tcpdog
eBPF based TCP observability.
Stars: ✭ 119 (-96.4%)
Mutual labels:  socket, monitoring, observability
Practicalnode
Practical Node.js, 1st and 2nd Editions [Apress] 📓
Stars: ✭ 3,694 (+11.87%)
Mutual labels:  express, node-js, expressjs
Applicationinsights Node.js
Microsoft Application Insights SDK for Node.js
Stars: ✭ 229 (-93.06%)
Mutual labels:  monitoring, observability, node-js
Serverless Express
Run Node.js web applications and APIs using existing application frameworks on AWS #serverless technologies such as Lambda, API Gateway, Lambda@Edge, and ALB.
Stars: ✭ 4,265 (+29.16%)
Mutual labels:  express, node-js, expressjs
Gitwar
🚀 Gitwar - Compete with Github
Stars: ✭ 44 (-98.67%)
Mutual labels:  express, node-js, expressjs
Nodebestpractices
✅ The Node.js best practices list (December 2021)
Stars: ✭ 72,734 (+2102.73%)
Mutual labels:  express, node-js, expressjs
Tcpprobe
Modern TCP tool and service for network performance observability.
Stars: ✭ 207 (-93.73%)
Mutual labels:  socket, monitoring, observability
Node Production
Take Your Node.js Project to The Production Environment (VPS/Dedicated Server).
Stars: ✭ 35 (-98.94%)
Mutual labels:  express, node-js, expressjs
Mean Angular4 Chat App
MEAN stack with Angular 4 Chat App
Stars: ✭ 41 (-98.76%)
Mutual labels:  express, socket, expressjs
Node Express Postgresql Server
Basic Node with Express + PostgreSQL Server
Stars: ✭ 74 (-97.76%)
Mutual labels:  express, node-js, expressjs
Express Openapi Validator
🦋 Auto-validates api requests, responses, and securities using ExpressJS and an OpenAPI 3.x specification
Stars: ✭ 436 (-86.8%)
Mutual labels:  middleware, express, expressjs
Csurf
CSRF token middleware
Stars: ✭ 2,183 (-33.89%)
Mutual labels:  middleware, expressjs
Applicationinsights Aspnetcore
ASP.NET Core web applications monitoring
Stars: ✭ 306 (-90.73%)
Mutual labels:  monitoring, observability
Host Validation
Express.js middleware for "Host" and "Referer" header validation to protect against DNS rebinding attacks.
Stars: ✭ 183 (-94.46%)
Mutual labels:  middleware, express
Compression
Node.js compression middleware
Stars: ✭ 2,506 (-24.11%)
Mutual labels:  middleware, expressjs
Pure Http
✨ The simple web framework for Node.js with zero dependencies.
Stars: ✭ 139 (-95.79%)
Mutual labels:  middleware, expressjs
Connext Js
A middleware and route handling solution for Next.js.
Stars: ✭ 211 (-93.61%)
Mutual labels:  middleware, express
Express Basic Auth
Plug & play basic auth middleware for express
Stars: ✭ 241 (-92.7%)
Mutual labels:  middleware, express
node-healthchecks-api
The Node.js implementation of the Health Checks API by Hootsuite
Stars: ✭ 25 (-99.24%)
Mutual labels:  health-check, health-checks
express-boilerplate
ExpressJS boilerplate with Socket.IO, Mongoose for scalable projects.
Stars: ✭ 83 (-97.49%)
Mutual labels:  socket, expressjs

express-status-monitor

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

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

Monitoring Page

Demo

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: app.use(require('express-status-monitor')());
  3. Run server and go to /status

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 http://0.0.0.0:3000

Options

Monitor can be configured by passing options object into expressMonitor constructor.

Default config:

title: 'Express Status',  // Default title
theme: 'default.css',     // Default styles
path: '/status',
socketPath: '/socket.io', // 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.

// 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 pageRoute 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 https://www.npmjs.com/package/connect-ensure-login

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

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 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 © Dynobase

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].