Skip to content

ntedgi/nestjs-status-monitor

Repository files navigation

@ntlib/status-monitor-nestjs

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

$ npm i @ntlib/status-monitor-nestjs

NodeJS and Nest Compatibility Matrix.

Node Version Nest Version
^18.x ^9.x

Status monitor page

Installation & setup NestJS

  1. Run npm install @ntlib/status-monitor-nestjs @nestjs/platform-socket.io@9.4.3 --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',
  path: '/status',
  socketPath: '/socket.io',
  port: null, 
  spans: [
    {
      interval: 1, 
      retention: 60, 
    },
    {
      interval: 5,
      retention: 60,
    },
    {
      interval: 15, 
      retention: 60,
    },
  ],
  chartVisibility: {
    cpu: true,
    mem: true,
    load: true,
    eventLoop: true,
    heap: true,
    responseTime: true,
    rps: true,
    statusCodes: true,
  },
  ignoreStartsWith: ['/admin'],
  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

About

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

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published