在 Node.js 应用中,当我们需要管理和监控进程时,可以使用 PM2 工具。PM2 是一个 Node.js 进程管理器,它可以帮助我们启动、停止、重启 Node.js 应用,并且可以监控应用程序的 CPU 使用率、内存使用情况和日志输出等信息。
PM2 基础命令
使用 PM2 管理 Node.js 应用程序,需要先安装 PM2。
npm install -g pm2
接着,通过 PM2 启动应用程序。
pm2 start app.js
注意:这里假设我们的应用程序文件名为 app.js。
除了通过应用程序文件名启动应用程序之外,还可以使用应用程序的目录启动应用程序。
pm2 start /path/to/app --name "app"
其中,option name 可以指定应用程序的 name,这里指定为 app。
使用 pm2 list 命令可以查看所有已启动的应用程序。使用 pm2 start,pm2 restart,pm2 stop 和 pm2 delete 命令可以分别启动、重启、停止和删除应用程序。
PM2 CPU 和内存监控
PM2 不仅可以管理和监控应用程序的启动和停止,还可以监控 CPU 和内存等系统性能指标。通过 PM2 的监控面板,我们可以看到应用程序的 CPU 使用率、内存使用情况和日志输出等信息。
使用 pm2 monit 命令可以打开监控面板。
pm2 monit
接着,我们就可以在终端窗口中看到当前应用程序的 CPU 使用率、内存使用情况和日志输出等信息了。
除了使用命令行工具 pm2 monit,还可以使用 PM2 的 web 界面来实现监控和管理。使用 pm2 web 命令可以打开 Web 界面。
pm2 web
之后,就可以在浏览器中访问本地的 9615 端口了。这里默认端口是 9615,当然也可以通过 –port 选项指定其他端口。在 Web 界面中,我们可以看到每个应用程序的 CPU 使用率、内存使用情况和日志输出等信息。
PM2 日志输出
在应用程序中,我们经常需要记录日志以便于问题排查和性能优化等工作。PM2 默认会将应用程序的所有日志输出到终端或者日志文件中。使用 PM2 管理应用程序的日志输出,可以使用命令行工具 pm2 logs。
pm2 logs
通过 pm2 logs 命令,我们可以看到应用程序的所有日志输出。如果需要过滤特定应用程序的日志输出,可以使用 PM2 的 option name 来指定。
pm2 logs --name "app"
除了使用命令行工具 pm2 logs,还可以使用 PM2 的日志系统将应用程序的日志输出到指定的日志文件中。通过在应用程序中使用 console.log,console.error 等方法输出日志信息,然后使用 PM2 的 option out 和 err 来指定输出的日志文件。
pm2 start app.js --log /path/to/out.log --error /path/to/err.log
在这个例子中,我们将应用程序的标准输出重定向到 /path/to/out.log 文件,并将应用程序的错误输出重定向到 /path/to/err.log 文件。
总结
PM2 可以帮助我们管理和监控 Node.js 应用程序。通过 PM2 的命令行工具和监控面板,我们可以对应用程序的运行状态进行管理和监控,并且可以查看应用程序的 CPU 使用率、内存使用情况和日志输出等信息。使用 PM2 的日志系统,我们可以将应用程序的日志输出到指定的文件中,这样有助于我们进行问题排查和性能优化等工作。
附上最常用的 PM2 命令:
- pm2 start <app_name|app.js> - 启动一个应用程序
- pm2 stop <app_name|id> - 停止一个应用程序
- pm2 restart <app_name|id> - 重启一个应用程序
- pm2 delete <app_name|id> - 删除一个应用程序
- pm2 logs <app_name|id> - 查看应用程序日志输出
- pm2 monit <app_name|id> - 查看应用程序运行状态
- pm2 list - 显示所有运行的应用程序
- pm2 startup - 生成开机启动项
- pm2 save - 保存当前应用程序列表
- pm2 deploy <configuration_file> [environment] setup - 用于一键部署应用程序的命令
PM2 不仅仅能够监控和管理 Node.js 应用程序,还支持一键部署等高级功能,更多如此强大的功能值得我们学习和掌握。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ec1179f6b2d6eab365da17