PM2 — JavaScript (Node.js) 应用监控

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 PM2?

PM2(Process Manager 2)是一个用于 Node.js 应用程序的强大进程管理器。它不仅能够启动和重启应用程序,还提供了内置的性能监控、集群管理以及实时指标收集工具。

为什么需要 PM2?

在部署 Node.js 生产级应用时,会遇到以下需求:故障时自动重启、CPU 核心间的负载均衡、日志查看以及内存/CPU 使用情况跟踪。PM2 开箱即用地解决了所有这些需求,取代了多个工具(如 nodemon、forever、cluster)。

安装

npm install -g pm2

全局安装允许你在系统的任何位置运行 PM2。

主要监控功能

  • pm2 list — 显示所有正在运行的进程,包括 PID、状态、内存和 CPU 消耗。
  • pm2 monit — 交互式终端监控器,实时显示每个进程的指标。
  • pm2 show <id> — 特定进程的详细信息:运行时间、重启次数、Node.js 版本、环境变量。
  • pm2 logs — 查看所有应用程序或特定进程的合并日志。
  • pm2 status — 所有应用程序的简要状态。

代码示例(Node.js)

创建一个文件 app.js:

const http = require('http');const server = http.createServer((req, res) => {  res.writeHead(200, {'Content-Type': 'text/plain'});  res.end('Hello from monitored app!');});server.listen(3000, () => {  console.log('Server running on port 3000');});

启动并启用监控:

pm2 start app.js --name my-app --watchpm2 monit

标志 --watch 会在文件发生变化时自动重启应用程序。命令 pm2 monit 将打开一个面板,你可以在其中看到 CPU 负载、内存、请求数量和运行时间。

何时使用

PM2 非常适合生产环境:Web 服务器(Express、Koa)、API 服务、机器人、微服务。当需要以下功能时,它不可或缺:

  • 确保应用程序 24/7 运行
  • 故障后自动重启
  • 将应用程序扩展到所有处理器核心
  • 收集指标以供后续分析
  • 集中管理日志

PM2 不适用于一次性脚本或本地开发(这种情况下 nodemon 更合适)。

结论

PM2 是监控 Node.js 应用程序的事实标准。它安装简单,提供丰富的指标集,并且可以轻松与告警系统集成(通过插件)。从 pm2 monit 开始,实时查看应用程序的健康状况。

推荐