Debian下Node.js性能监控方法
PM2是Node.js生态中最流行的进程管理工具之一,提供进程守护、实时性能监控、日志管理等功能,适合生产环境使用。
--watch参数可自动重启修改后的文件。sudo npm install pm2 -g
pm2 start app.js --name "my-node-app" --watch
pm2 status:查看所有进程的状态(包括CPU、内存使用率、运行时间、重启次数等);pm2 monit:进入实时交互界面,动态显示进程的CPU、内存、日志输出;pm2 logs:实时查看应用日志(支持过滤关键字);pm2 top:类似Linux的top命令,按CPU/内存排序显示所有进程的资源占用。无需安装第三方依赖,通过Node.js原生模块快速获取性能数据,适合简单监控或自定义需求。
process.memoryUsage():获取当前进程的内存使用情况,返回对象包含rss(常驻内存集)、heapUsed(堆已使用内存)、heapTotal(堆总内存)等字段,可计算内存占比。const memory = process.memoryUsage();
console.log(`RSS: ${(memory.rss / 1024 / 1024).toFixed(2)}MB`);
console.log(`Heap Used: ${(memory.heapUsed / 1024 / 1024).toFixed(2)}MB`);
process.cpuUsage():获取当前进程的CPU耗时(单位:微秒),返回对象包含user(用户态CPU时间)、system(内核态CPU时间),可用于计算CPU占用率。const cpu = process.cpuUsage();
console.log(`User CPU: ${cpu.user}μs, System CPU: ${cpu.system}μs`);
os模块扩展:结合os模块获取系统级资源信息(如总内存、空闲内存、CPU核心数),补充进程级数据的上下文。const os = require('os');
const totalMemory = os.totalmem();
const freeMemory = os.freemem();
console.log(`System Memory Usage: ${(1 - freeMemory / totalMemory) * 100}%`);
NetData是一款轻量级、实时的系统监控工具,支持Node.js应用的性能指标采集(如CPU、内存、磁盘I/O、网络流量),并提供直观的Web dashboard。
sudo apt install netdata
sudo systemctl start netdata
http://<服务器IP>:19999,默认用户名/密码为空,进入后选择对应节点即可查看实时性能数据。适合需要长期存储、历史查询和自定义可视化的场景,通过Prometheus采集指标,Grafana展示图表。
wget https://github.com/prometheus/prometheus/releases/download/v2.34.0/prometheus_2.34.0.linux-amd64.deb
sudo dpkg -i prometheus_2.34.0.linux-amd64.deb
/etc/prometheus/prometheus.yml,添加Node.js应用的抓取目标(需配合node_exporter或Node.js客户端暴露/metrics端点)。scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100'] # 假设使用node_exporter暴露端口
提供全面的APM功能,包括性能追踪、错误监控、依赖分析、告警等,适合企业级应用。
npm install newrelic --save;newrelic.js配置文件(放入项目根目录),内容如下:exports.config = {
app_name: ['My Node.js App'],
license_key: 'YOUR_LICENSE_KEY',
logging: { level: 'info' }
};
app.js)顶部引入代理:require('newrelic');;npm install dd-trace --save;const tracer = require('dd-trace').init({
service: 'my-node-app',
analytics: true
});
基于Egg.js的轻量级性能监控工具,适合Egg.js或类似框架的Node.js应用,提供进程监控、错误日志、依赖分析等功能。
npm install easy-monitor -g
// app.js
const easyMonitor = require('easy-monitor');
easyMonitor('my-node-app');
http://localhost:12333,即可查看实时性能数据。