如何在Ubuntu上监控Node.js运行状态
在Ubuntu系统上,监控Node.js应用的运行状态需结合进程管理、性能指标、日志分析及系统资源等多维度工具。以下是常用且有效的方法,覆盖从开发到生产环境的不同需求:
PM2是Node.js生态中最流行的进程管理工具,具备进程守护、实时监控、日志管理、自动重启等功能,是生产环境的推荐选择。
sudo npm install pm2 -g。pm2 start app.js --name "my-app"(将app.js替换为你的入口文件,my-app为自定义应用名称)。pm2 status查看所有进程的运行状态(包括CPU、内存占用、重启次数等)。pm2 monit提供交互式界面,实时显示应用的CPU、内存使用趋势及日志输出。pm2 logs实时查看应用日志,pm2 logs --lines 100查看最近100行日志(支持按进程名称过滤)。若需将Node.js应用作为系统服务管理(开机自启、状态检查),可通过Systemd配置服务文件。
sudo nano /etc/systemd/system/my-app.service编辑文件,内容如下(根据实际路径修改):[Unit]
Description=Node.js Application Service
After=network.target
[Service]
Type=simple
User=your-username # 替换为运行应用的用户
WorkingDirectory=/path/to/your/app # 应用根目录
ExecStart=/usr/bin/node /path/to/your/app/app.js # 启动命令
Restart=always # 崩溃时自动重启
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload重新加载配置,sudo systemctl start my-app启动服务,sudo systemctl enable my-app设置开机自启。sudo systemctl status my-app可查看服务的运行状态、日志及错误信息。htop(交互式)和top(命令行)是Ubuntu自带的系统监控工具,可快速查看CPU、内存、进程等系统级资源使用情况,帮助定位Node.js进程的资源瓶颈。
sudo apt install htop(若未安装)。htop,通过F6键选择排序方式(如按CPU或内存排序),找到Node.js进程(通常名称为node),查看其实时资源占用。Node.js提供process、os等内置模块,可直接在应用代码中获取内存使用、CPU时间、系统信息等,适合简单的自定义监控。
const process = require('process');
const os = require('os');
setInterval(() => {
// 内存使用情况(单位:字节)
const memoryUsage = process.memoryUsage();
console.log(`Memory Usage: RSS=${(memoryUsage.rss / 1024 / 1024).toFixed(2)}MB, Heap=${(memoryUsage.heapUsed / 1024 / 1024).toFixed(2)}MB`);
// CPU使用时间(单位:微秒)
const cpuUsage = process.cpuUsage();
console.log(`CPU Usage: User=${cpuUsage.user}μs, System=${cpuUsage.system}μs`);
// 系统信息
console.log(`System Uptime: ${os.uptime()} seconds`);
console.log('-----------------------------');
}, 5000); // 每5秒打印一次
对于需要详细性能分析、可视化、告警的生产环境,可使用以下工具:
prom-client库,定义指标(如HTTP请求耗时、内存使用),并通过/metrics端点暴露指标;Prometheus定时拉取指标,Grafana创建仪表板展示数据。newrelic),即可自动采集性能数据并可视化,适合复杂应用的全链路监控。nodemon用于开发环境,可监控文件变动并自动重启Node.js应用,避免手动重启的麻烦,间接帮助监控应用状态。
sudo npm install nodemon -g,然后通过nodemon app.js启动应用。当app.js或其依赖文件修改时,nodemon会自动重启应用并输出日志。以上方法可根据需求组合使用:生产环境推荐PM2+Systemd+Prometheus/Grafana,开发环境使用nodemon+htop,简单监控可使用内置模块。通过多维度监控,可全面保障Node.js应用在Ubuntu上的稳定运行。