最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Ubuntu Nodejs运行怎么监控
时间:2026-06-08 08:17:00 编辑:袖梨 来源:一聚教程网
Ubuntu系统监控Node.js运行的常用方法

1. 使用PM2进行进程管理与监控
PM2是Node.js生态中最流行的进程管理工具,不仅能保持应用持续运行(自动重启崩溃的进程),还提供实时监控功能。
- 安装与启动:通过npm全局安装PM2,启动应用时指定名称(便于后续管理),例如:
sudo npm install pm2 -g;pm2 start app.js --name "my-app"。 - 核心监控命令:
pm2 monit可打开实时监控面板,显示应用的CPU、内存使用率、日志输出及进程状态;pm2 status查看所有进程的详细信息(如运行状态、CPU/内存占用、重启次数);pm2 logs my-app实时查看应用日志(支持过滤关键字)。 - 额外功能:PM2还支持集群模式(提升应用性能)、日志轮转(避免日志文件过大)及零停机重启(更新应用时不中断服务)。
2. 利用系统自带工具查看资源占用
Ubuntu自带的命令行工具可快速查看Node.js进程的系统资源使用情况,适合快速排查资源瓶颈。
- htop:交互式进程查看器,比
top更直观。安装命令:sudo apt install htop;运行后通过F3搜索“node”进程,查看其实时CPU、内存、线程使用情况。 - top/ps:
top命令实时显示系统进程的资源占用(按M按内存排序,按P按CPU排序);ps aux | grep node快速查找Node.js进程的PID及资源使用情况。 - vmstat/iostat:
vmstat 1每秒刷新一次系统整体资源使用情况(包括内存、CPU、IO);iostat -x 1查看磁盘IO的详细指标(如读写速率、等待时间)。
3. 通过系统日志与服务管理监控
将Node.js应用作为系统服务运行,借助systemd实现开机自启、状态监控及日志管理。
- 创建systemd服务:编辑服务文件
sudo nano /etc/systemd/system/my-app.service,内容如下(根据实际路径修改):[Unit]Description=Node.js Application ServiceAfter=network.target[Service]Type=simpleUser=your-usernameWorkingDirectory=/path/to/your/appExecStart=/usr/bin/node /path/to/your/app/app.jsRestart=always# 应用崩溃时自动重启Environment=NODE_ENV=production[Install]WantedBy=multi-user.target - 管理与服务状态:
sudo systemctl daemon-reload重新加载服务配置;sudo systemctl start my-app启动服务;sudo systemctl status my-app查看服务状态(包括进程PID、运行时间、最近日志);sudo journalctl -u my-app -f实时查看应用日志。
4. 使用第三方APM工具进行深度监控
第三方APM(应用性能管理)工具提供全面的性能分析、错误跟踪及可视化功能,适合生产环境。
- Prometheus + Grafana:
- Prometheus是开源时间序列数据库,用于收集和存储指标;Grafana是可视化工具,用于创建仪表板。
- 集成步骤:在Node.js应用中安装
prom-client库,定义指标(如HTTP请求延迟、内存使用)并暴露/metrics端点;Prometheus配置抓取目标(指向应用的/metrics端点);Grafana添加Prometheus数据源,创建仪表板展示指标。
- New Relic/Datadog:
- New Relic:全栈APM工具,支持Node.js应用的性能监控、错误跟踪、日志分析,提供实时洞察;
- Datadog:云原生监控平台,支持Node.js应用的实时监控、日志管理、分布式追踪,适合云环境。
5. 内置模块与日志记录
Node.js内置模块可用于获取应用级别的性能数据,结合日志库可实现自定义监控。
- 内置模块:
process.memoryUsage():返回应用的内存使用情况(如rss(常驻内存)、heapUsed(堆内存使用));process.cpuUsage():返回应用的CPU使用时间(用户态+内核态);process.hrtime():高精度计时器,用于计算代码执行时间。
- 日志记录:使用
winston或bunyan等日志库记录应用的关键事件(如请求处理、错误发生、数据库操作),例如:
日志可用于后续分析应用的运行状态及故障原因。const winston = require('winston');const logger = winston.createLogger({level: 'info',format: winston.format.json(),transports: [new winston.transports.File({ filename: 'error.log', level: 'error' }),new winston.transports.File({ filename: 'combined.log' }),new winston.transports.Console()]});logger.info('Application started');logger.error('Something went wrong!', error);
相关文章
- 大学搜题酱怎么关闭悬浮窗 06-12
- easyrecovery如何恢复文件 06-12
- 小红书网页版如何在线刷 06-12
- 鲨鱼浏览器如何关闭书签显示 06-12
- 如何用腾讯视频微信登录别人的会员 06-12
- 2026年QQ邮箱网址是什么 06-12