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
库暴露指标);