PM2 启用监控
在生产环境中,监控是确保 Node.js 应用稳定运行的重要手段。PM2 提供了强大的监控功能,可以实时查看应用的 CPU 使用、内存使用、进程状态等性能指标。通过启用监控,你可以及时发现潜在问题,并做出调整以提高应用的稳定性和效率。
1. 启用监控功能
PM2 提供了内置的监控工具,可以帮助你实时查看应用的性能指标。通过使用 pm2 monit 命令,你可以看到所有正在运行的应用的 CPU 和内存使用情况,以及每个进程的实时状态。
启用监控命令
pm2 monit运行此命令后,PM2 会打开一个终端界面,显示各个进程的实时资源使用情况,包括:
- CPU:每个进程使用的 CPU 百分比。
- Memory:每个进程使用的内存量。
- Uptime:每个进程的运行时长。
- Status:进程的当前状态(如
online或stopped)。
示例输出
┌─────┬──────────────┬────────┬───┬──────┬────────┬───┬─────────────┬─────────────┐
│ id │ name │ mode │ ↺ │ status│ cpu │ memory │ uptime │
├─────┼──────────────┼────────┼───┼──────┼────────┼───┼─────────────┼─────────────┤
│ 0 │ my-app │ fork │ 3 │ online│ 0.5% │ 50MB │ 2h │
└─────┴──────────────┴────────┴───┴──────┴────────┴───┴─────────────┴─────────────┘解释
- id:进程的唯一标识符。
- name:应用的名称。
- mode:进程的启动模式(
fork或cluster)。 - ↺:进程的重启次数。
- status:进程的当前状态(
online、stopped)。 - cpu:进程当前的 CPU 使用率。
- memory:进程当前的内存使用量。
- uptime:进程的运行时长。
2. 启用实时日志监控
除了查看资源使用情况外,PM2 还提供了实时日志监控功能,可以帮助你查看应用的输出和错误日志。使用 pm2 logs 命令,你可以查看所有应用的日志信息,或者只查看特定应用的日志。
查看所有应用日志
pm2 logs查看特定应用的日志
pm2 logs my-app查看错误日志
如果你只关心应用的错误日志,可以使用 --err 参数:
pm2 logs my-app --err3. 配置监控参数
PM2 还允许你通过配置文件定制监控设置,例如监控日志的保存周期和最大日志大小。你可以通过 ecosystem.config.js 文件来配置监控相关的参数。
示例配置文件
module.exports = {
apps: [
{
name: 'my-app',
script: './app.js',
log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志日期格式
max_size: '10M', // 单个日志文件最大 10MB
retain: 7, // 保留 7 个滚动日志文件
watch: true, // 启用文件监控
},
],
};在上述配置中:
- log_date_format:设置日志的日期格式。
- max_size:设置日志文件的最大大小,超过此大小会滚动。
- retain:设置最大日志保留数量,超过的日志文件会被删除。
- watch:启用文件监控,自动重启应用时会检测文件变化。
启动应用
pm2 start ecosystem.config.js4. 启用警报和通知
PM2 的监控功能不仅可以实时查看资源使用,还可以与外部工具集成,发送警报或通知。你可以配置 PM2 在应用达到一定负载时发送通知,帮助你及时采取行动。
配置第三方工具
PM2 支持与第三方监控工具(如 Keymetrics)集成。Keymetrics 是 PM2 提供的监控平台,能够在 Web 界面上实时展示应用的状态和性能指标。
- 要使用 Keymetrics 监控平台,首先需要在 PM2 中配置你的 Keymetrics API 密钥。
pm2 link <public-key> <private-key>查看 Keymetrics 仪表盘
通过 Keymetrics,你可以在 Web 上查看应用的实时数据、历史性能指标、警报通知等。
5. 结语
PM2 的监控功能为 Node.js 应用提供了全面的资源监控、日志管理和报警通知机制。通过启用 PM2 监控,你可以实时了解应用的性能情况,及时发现问题并优化资源使用。
无论是通过 pm2 monit 命令实时查看应用的资源使用,还是通过集成外部监控平台来获取更详细的数据,PM2 都为开发者提供了强大的工具,帮助你保持应用的高效运行和稳定性。