PM2 Server Monitor
pm2-server-monit is a PM2 module designed to automatically monitor crucial server vital signs, integrating seamlessly into the PM2 ecosystem for process management. It tracks key metrics such as CPU average usage, free and used memory, drive space, network speed (input/output), total opened files, running processes, and active TTY/SSH sessions. The current stable version is 3.0.0. While no explicit release cadence is documented, the jump from v2.0 to v3.0 suggests periodic updates incorporating significant feature enhancements or internal changes. Its primary differentiator is its deep integration with PM2, allowing server monitoring to be managed and viewed alongside application processes, making it particularly useful for environments already leveraging PM2 for their Node.js applications. Unlike standalone monitoring agents, pm2-server-monit leverages the PM2 daemon to collect and report system statistics.
Common errors
-
PM2 module consuming excessive CPU
cause Refresh rates for system metrics (CPU, memory, disk, network) are set too low, causing frequent data collection.fixIncrease the refresh rate configuration values for `disk_refresh_rate`, `memory_refresh_rate`, `cpu_refresh_rate`, and `network_refresh_rate` using `pm2 set` commands. -
Metrics are not displayed or missing from monitoring output
cause The specific system metric might not be supported on the operating system platform where the module is running, or an internal error occurred during data collection.fixCheck the module's logs using `pm2 logs pm2-server-monit` for specific error messages or warnings related to the missing metrics to diagnose platform support or runtime issues. -
pm2-server-monit: command not found (or similar PM2 module installation error)
cause PM2 is either not installed globally, or the `pm2 install` command failed due to network issues or permissions.fixEnsure PM2 is installed globally (`npm install -g pm2`) and then retry `pm2 install pm2-server-monit`. Check network connectivity and user permissions if the issue persists.
Warnings
- breaking Version 2.0 introduced significant changes to drive and network monitoring mechanisms. Users upgrading from earlier versions should review their configurations for compatibility and verify expected metric outputs.
- gotcha Configuring refresh rates for CPU, memory, disk, and network too low can lead to excessive CPU usage by the monitoring module itself.
- gotcha Some system metrics might not appear in the monitoring output due to platform-specific incompatibilities or internal errors.
Install
-
npm install pm2-server-monit -
yarn add pm2-server-monit -
pnpm add pm2-server-monit
Imports
- Installation
import pm2ServerMonit from 'pm2-server-monit'
pm2 install pm2-server-monit
- Configuration
const config = require('pm2-server-monit').config;pm2 set pm2-server-monit:drive /
- Logs and Status
import { getStatus } from 'pm2-server-monit'pm2 logs pm2-server-monit
Quickstart
# First, ensure PM2 is installed globally if you haven't already npm install -g pm2 # Install the pm2-server-monit module into PM2 pm2 install pm2-server-monit # Configure the module to monitor multiple drives and adjust a refresh rate # Example: monitoring root '/' and a '/data' partition pm2 set pm2-server-monit:drive "/,/data" pm2 set pm2-server-monit:network_refresh_rate 5 # View the status and initial logs of the module to verify operation echo "Waiting a few seconds for initial metrics to be collected..." sleep 5 pm2 logs pm2-server-monit --lines 50 # To view the collected metrics in a dashboard, use PM2 Plus # or other PM2 monitoring tools, as this module feeds data into PM2's ecosystem.