CentOS上Node.js性能监控的常用方法
PM2是Node.js生态中最流行的进程管理工具之一,提供实时监控、自动重启、日志管理等功能,适合生产环境使用。
--name参数指定应用名称(便于后续管理):sudo npm install -g pm2
pm2 start app.js --name "my-node-app"
pm2 status:查看应用列表及状态(CPU、内存占用、运行时间、重启次数等);pm2 monit:进入实时交互界面,动态显示CPU、内存、事件循环延迟等指标;pm2 logs:实时查看应用日志(支持-f参数跟踪最新日志);pm2 save:保存当前进程列表,pm2 startup:设置开机自启。Node.js内置模块可直接获取进程级性能数据,适合简单监控或自定义需求:
process模块:获取内存使用(process.memoryUsage())和CPU占用(process.cpuUsage()):setInterval(() => {
console.log('内存使用:', process.memoryUsage()); // { rss, heapTotal, heapUsed, external }
console.log('CPU占用:', process.cpuUsage()); // { user, system }(单位:微秒)
}, 1000);
os模块:获取系统级资源信息(总内存、空闲内存、CPU核心数、系统运行时间):const os = require('os');
console.log('总内存:', os.totalmem()); // 字节
console.log('空闲内存:', os.freemem());
console.log('CPU核心数:', os.cpus().length);
console.log('系统运行时间:', os.uptime()); // 秒
/status接口,实时返回服务器状态(便于外部工具调用)。APM工具提供端到端性能追踪,包括事件循环延迟、数据库查询耗时、错误堆栈分析等,适合复杂应用:
newrelic包→创建newrelic.js配置文件(填入许可证密钥)→在应用入口引入:require('newrelic');
const express = require('express');
const app = express();
// 应用代码...
dd-trace,可监控应用性能与基础设施指标。通过CentOS自带命令行工具监控系统资源,间接反映Node.js应用的资源消耗:
top/htop:实时查看进程CPU、内存占用(htop需安装,更直观);vmstat:监控系统整体性能(进程、内存、IO、CPU):vmstat 1 # 每秒刷新一次
iostat:监控磁盘IO性能(需安装sysstat包):iostat -x 1 # 查看磁盘详细IO指标
free:查看内存使用情况(-m参数以MB为单位):free -m
日志是排查性能问题的关键,通过结构化日志和分析工具实现高效管理:
winston或morgan库记录应用日志(如请求时间、错误信息):const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'app.log' })
]
});
logger.info('应用启动成功');
适合大规模分布式系统,通过时间序列数据库存储指标,可视化面板展示趋势:
/metrics端点(需使用node_exporter或prom-client库暴露指标);