honnamkuan / nestjs-status-monitor

Simple, self-hosted module based on Socket.io and Chart.js to report realtime server metrics for NestJS v7+ based servers.
MIT License
15 stars 5 forks source link

nestjs-status-monitor

NPM

nestjs-status-monitor on npm David Codacy Badge GitHub Workflow Status npm GitHub

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

Status monitor page

Live Demo

Demo available here

Installation & setup NestJS v7

  1. Run npm install nestjs-status-monitor --save
  2. Setup module import:
@Module({
  imports: [StatusMonitorModule.forRoot()] //default config
})
  1. Run server and visit /status

Options

Monitor can be configured by passing options object during initialization of module.

@Module({
  imports: [StatusMonitorModule.forRoot(config)]
})

Default config:

{
  title: 'NestJS Status', // Default title
  path: '/status',
  socketPath: '/socket.io', // In case you use a custom path
  port: null, // Defaults to NestJS port
  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,
  },
  ignoreStartsWith: ['/admin'], // paths to ignore for responseTime stats
  healthChecks: [],
}

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: '/health/alive',
    port: 3001,
  },
  {
    protocol: 'http',
    host: 'localhost',
    path: '/health/dead',
    port: 3001,
  },
];

Local demo

  1. Run the following:
npm i
cd examples/integrate-status-monitor
npm i
npm start
  1. Visit http://localhost:3001/status