AdminJS与PM2集成:Node.js应用的进程管理与监控
【免费下载链接】adminjs AdminJS is an admin panel for apps written in node.js 项目地址: https://gitcode.***/gh_mirrors/ad/adminjs
在Node.js应用开发中,AdminJS作为一款强大的自动管理界面工具,能够帮助开发者快速构建数据库模型的管理界面。然而,当应用部署到生产环境后,如何确保其稳定运行、高效监控以及故障自动恢复成为了关键问题。PM2(Process Manager 2)作为Node.js应用的进程管理工具,能够完美解决这些问题。本文将详细介绍如何将AdminJS与PM2集成,实现Node.js应用的进程管理与监控。
AdminJS应用的部署痛点
AdminJS应用在生产环境中面临着诸多挑战,如应用崩溃后无法自动重启、无法实时监控应用性能、多实例部署复杂等。这些问题严重影响了应用的稳定性和可用性。
传统部署方式的弊端
传统的部署方式通常是通过node index.js命令直接启动应用,这种方式存在以下缺点:
- 应用崩溃后需要手动重启,增加了运维成本。
- 无法实时监控应用的CPU、内存使用情况等关键指标。
- 不支持多实例部署,无法充分利用服务器资源。
PM2简介
PM2是一款开源的Node.js应用进程管理工具,它具有以下核心功能:
- 进程守护:应用崩溃后自动重启。
- 性能监控:实时监控应用的CPU、内存、磁盘I/O等指标。
- 负载均衡:支持多实例部署,提高应用的并发处理能力。
- 日志管理:集中管理应用日志,便于问题排查。
AdminJS与PM2集成步骤
1. 安装PM2
首先,需要在服务器上全局安装PM2:
npm install pm2 -g
2. 创建PM2配置文件
在AdminJS应用的根目录下创建ecosystem.config.js文件,用于配置PM2的运行参数。以下是一个基本的配置示例:
module.exports = {
apps: [{
name: 'adminjs-app', // 应用名称
script: 'index.js', // 应用入口文件
instances: 'max', // 启用多实例,根据CPU核心数自动分配
exec_mode: 'cluster', // 集群模式
env: {
NODE_ENV: 'production', // 环境变量
},
log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志日期格式
merge_logs: true, // 合并日志
max_memory_restart: '1G', // 内存使用超过1G时自动重启
}]
};
3. 启动AdminJS应用
使用PM2启动AdminJS应用:
pm2 start ecosystem.config.js
4. 查看应用状态
启动后,可以使用以下命令查看应用的运行状态:
pm2 status
5. 监控应用性能
PM2提供了实时监控功能,可以通过以下命令查看应用的性能指标:
pm2 monit
AdminJS应用的PM2高级配置
1. 日志管理
PM2可以将应用日志输出到指定文件,便于后续分析。在ecosystem.config.js中添加以下配置:
module.exports = {
apps: [{
// ...其他配置
error_file: './logs/err.log', // 错误日志文件路径
out_file: './logs/out.log', // 输出日志文件路径
log_file: './logs/***bined.log', // 合并日志文件路径
log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志日期格式
}]
};
2. 自动部署
PM2支持通过配置实现自动部署,减少手动部署的工作量。首先,需要在ecosystem.config.js中添加部署相关配置:
module.exports = {
apps: [{
// ...其他配置
}],
deploy: {
production: {
user: 'ssh_user', // SSH用户名
host: 'ssh_host', // SSH主机地址
ref: 'origin/main', // Git分支
repo: 'git@gitcode.***:gh_mirrors/ad/adminjs.git', // 代码仓库地址
path: '/var/www/adminjs-app', // 部署路径
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production', // 部署后执行的命令
}
}
};
然后,使用以下命令进行部署:
pm2 deploy ecosystem.config.js production
3. 应用监控与告警
PM2提供了丰富的监控指标,同时支持通过第三方工具(如Datadog、New Relic等)进行告警。此外,PM2还可以通过pm2-logrotate模块实现日志轮转,避免日志文件过大。
安装pm2-logrotate模块:
pm2 install pm2-logrotate
配置日志轮转参数:
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
AdminJS应用的PM2常用命令
以下是一些常用的PM2命令,用于管理AdminJS应用:
| 命令 | 描述 |
|---|---|
pm2 start ecosystem.config.js |
启动应用 |
pm2 stop adminjs-app |
停止应用 |
pm2 restart adminjs-app |
重启应用 |
pm2 reload adminjs-app |
零停机重启应用 |
pm2 delete adminjs-app |
删除应用 |
pm2 logs |
查看应用日志 |
pm2 logs --lines 100 |
查看最近100行日志 |
pm2 monit |
实时监控应用性能 |
pm2 save |
保存当前应用列表,开机自启 |
pm2 startup |
设置开机自启 |
集成效果展示
通过将AdminJS与PM2集成,可以实现以下效果:
1. 进程守护
当AdminJS应用因异常崩溃时,PM2会自动重启应用,确保应用的持续可用。
2. 性能监控
通过pm2 monit命令,可以实时查看应用的CPU、内存使用情况等指标,及时发现性能瓶颈。
3. 多实例部署
在多核服务器上,PM2可以自动分配多个实例,提高应用的并发处理能力。例如,在4核CPU服务器上,PM2会自动启动4个AdminJS应用实例。
总结
将AdminJS与PM2集成,能够有效解决AdminJS应用在生产环境中的进程管理与监控问题。通过PM2的进程守护、性能监控、负载均衡等功能,可以提高应用的稳定性和可用性,降低运维成本。希望本文能够帮助开发者更好地部署和管理AdminJS应用。
官方文档:README.md PM2配置文件示例:ecosystem.config.js(需手动创建) AdminJS入口文件:index.js
【免费下载链接】adminjs AdminJS is an admin panel for apps written in node.js 项目地址: https://gitcode.***/gh_mirrors/ad/adminjs