pm2-supervisor
A utility for periodically checking the availability of services launched by the pm2 process manager. Allows you to restart services in the event of a case described in the list of restart rules.
Installation pm2-supervisor
With NPM:
npm i -g @rodewitsch/pm2-supervisor
With Yarn:
yarn global add @rodewitsch/pm2-supervisor
With NPM from Github:
npm i -g git+https://github.com/rodewitsch/pm2-supervisor.git
Start with systemd
[Unit] Description=pm2-supervisor After=network.target [Service] Type=simple User=ubuntu ExecStart=pm2-supervisor Restart=on-failure [Install] WantedBy=multi-user.target
Usage commands
Command | Description |
---|---|
pm2-supervisor -h, --help | Show help |
pm2-supervisor -v, --version | Show version |
pm2-supervisor -t, --test | Test rules config |
pm2-supervisor -e, --edit | Open editor with rules |
pm2-supervisor -l, --list | Print rules |
pm2-supervisor | Execute rules |
Check types
httpStatus
Description
Perform an http request and restart the specified process when response code doesn't match the status code property of rule.
Rule options:
- interval - (optional) executes the rule every specified time value
- skip - (optional) number of skips before restarting the process
- method - http method
- url - url
- body - (optional) http request body
- headers - (optional) http request headers
- statusCode - expected response code
GET example:
Check every second and if the endpoint's statusCode response does not match 200, restart the process named "server"..{ "serviceName": "server", "type": "httpStatus", "options": { "interval": "1s", "method": "GET", "url": "http://localhost:3000/502", "statusCode": 200 } }
POST example:
{ "serviceName": "server", "type": "httpStatus", "options": { "interval": "1s", "method": "POST", "url": "http://localhost:3000/200", "body": [{ "somePayload": 1 }], "headers": { "Content-Type": "application/json" }, "statusCode": 200 } }
httpTimeout
Description
Perform an http request and restart the specified process when response doesn't received during the specified time.
Rule options:
- interval - (optional) executes a rule every specified time value (syntax: 1s, 2m, 3h)
- skip - (optional) number of skips before restarting the process
- method - http method
- url - url
- body - (optional) http request body
- headers - (optional) http request headers
- timeout - request timeout
GET example:
Check every five seconds and if answer does not received during 1 minute, restart the process.{ "serviceName": "server", "type": "httpTimeout", "options": { "interval": "5s", "method": "GET", "url": "http://localhost:3000/200", "query": { "sleep": 5000 }, "timeout": "1m" } }
cpuUsage
Description text
Restart a process when cpu usage is more than setted.
Rule options:
- interval - (optional) executes a rule every specified time value (syntax: 1s, 2m, 3h)
- skip - (optional) number of skips before restarting the process
- usage - usage value
Example:
Check every 5 seconds and if some process with a specified name uses more cpu than written in a usage property, restart the process.{ "serviceName": "server", "type": "cpuUsage", "options": { "interval": "5s", "skip": 5, "usage": 80 } }
memoryUsage
Description text
Restart a process when memory usage is more than setted.
Rule options:
- interval - (optional) executes a rule every specified time value (syntax: 1s, 2m, 3h)
- skip - (optional) number of skips before restarting the process
- usage - memory usage value (syntax: 1kb, 2 mb, 3gb)
Example:
Check every 5 seconds and if any process with the specified name is using more memory than the usage property specified, restart the process.{ "serviceName": "server", "type": "memoryUsage", "options": { "interval": "5s", "skip": 5, "usage": "36mb" } }