使用PM2进行进程与应用监控
PM2是Node.js生态中最流行的进程管理工具,可实现对应用的生命周期管理(启动/停止/重启)、实时资源监控及日志集中管理,非常适合CentOS环境下的Node.js应用监控。
pm2 start app.js --name my-api。pm2 list查看所有托管应用的运行状态(包括CPU、内存占用、重启次数等);pm2 describe <app-name>可获取更详细的进程信息(如启动时间、运行环境、端口监听情况)。pm2 monit命令会打开交互式界面,实时展示应用的CPU、内存使用曲线,以及日志输出(支持按Ctrl+C退出)。pm2 logs查看所有应用的合并日志;pm2 logs <app-name>查看指定应用的日志;pm2 logs -f实时跟踪日志更新(类似tail -f)。pm2 startup生成开机自启脚本(需根据提示执行授权命令),pm2 save保存当前进程列表,确保服务器重启后应用自动恢复。系统级资源监控工具
CentOS自带多款命令行工具,可快速查看系统整体资源使用情况及Node.js进程的资源占用:
top是系统默认的性能监控工具,按Shift+P可按CPU使用率排序,按Shift+M按内存使用率排序;htop(需安装:sudo yum install htop)是增强版,支持鼠标操作、颜色高亮及更直观的进程树展示。sudo yum install glances),可展示CPU、内存、磁盘、网络、进程等多维度指标,支持远程监控(通过Web或API)。sudo yum install sysstat),用于收集和报告系统历史数据,例如sar -u 1 3每1秒采样1次CPU使用率,共采样3次;sar -r 1查看内存使用情况。sudo yum install nmon),通过nmon命令进入交互模式,按c查看CPU、m查看内存、d查看磁盘I/O等,适合深度分析性能瓶颈。APM(应用性能管理)工具
APM工具可实现端到端性能监控,覆盖代码级性能分析、数据库查询耗时、外部API调用延迟等,帮助快速定位性能瓶颈:
prometheus.yml,添加Node.js应用的监控目标),负责采集和存储性能指标(如HTTP请求延迟、内存使用量)。wget https://dl.grafana.com/oss/release/grafana-*.linux-amd64.tar.gz && tar -zxvf grafana-*.tar.gz),通过添加Prometheus数据源,创建仪表盘展示CPU、内存、请求量等指标的实时曲线和告警规则。日志管理与分析
日志是排查问题的关键,通过集中化日志管理可快速定位错误和异常:
npm install winston),可自定义日志级别(info/warn/error)、输出格式(控制台/文件/远程服务器),例如:const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('Application started');
logstash.conf,解析Node.js日志格式);代码级性能监控
通过代码嵌入监控逻辑,获取更细粒度的性能数据:
setInterval(() => {
const memoryUsage = process.memoryUsage();
const cpuUsage = process.cpuUsage();
console.log(`Memory: ${JSON.stringify(memoryUsage)} bytes`);
console.log(`CPU: ${JSON.stringify(cpuUsage)} microseconds`);
}, 1000);
npm install express-status-monitor),为Express应用添加实时性能监控页面(如请求速率、响应时间、内存使用情况),适合快速集成到Web应用中。