PM2 - Tools
This package contains a few tools to monitor and use PM2 behind a load balancer like ELB in AWS.
REST - Interface
Will start a server on the specified port with currently the following endpoints
/healthcheck
=> returns 200 if at least one of the watched processes is still live/metrics
=> wraps thepm2 list
command and returns the following structure
Usage
Let your application run with PM2, either via JSON or directly via command line and additionally run this script.
'use strict'; const RestService = RestService; const app = monitor_apps: 'my-application' // if you just want to monitor specific apps; app;
The passed options monitor_apps
allows you to control which PM2 applications you want to monitor. If not passed all will be monitored.
Via PM2
Another possibility is to also start the status/metric server with PM2.
The only important config is the the above described monitor_apps
which needs to be set to ['my-app']
to deliver the correct status, else we would take status into account too and would never get a bad healthcheck.
For Docker finally start with pm2 --no-daemon pm2.json
to keep Docker alive or without --no-daemon
for any other environment.
Metrics
There are 4 different built in metrics.
- Counter => a simple counter which requires no params
- MultiCounter => like counter but accepts one additional param to count for examples requests paths
- Average => a simple average counter to measure response times
- MultiAverage => like average it accepts an additional param that allows to measure for example different averages of request paths
Usage
Register
Before using a custom metric it needs to be registered.
var MultiAverage = MetricsMultiAverage; instance;
Sending data to metrics
The application it self can use the MessageBus
to publish metrics.
var MessageBus = MessageBus;var bus = ; bus;