温馨提示×

CentOS上Node.js如何进行性能监控

小樊
42
2025-10-15 14:58:22
栏目: 编程语言

CentOS上Node.js性能监控的常用方法

1. 使用PM2进行进程管理与监控

PM2是Node.js生态中最流行的进程管理工具之一,提供实时监控、自动重启、日志管理等功能,适合生产环境使用。

  • 安装与启动:通过npm全局安装PM2,启动应用时添加--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:设置开机自启。

2. 利用Node.js内置模块获取基础指标

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()); // 秒 
  • 自定义HTTP接口:通过Express框架暴露/status接口,实时返回服务器状态(便于外部工具调用)。

3. 第三方APM工具(应用性能管理)

APM工具提供端到端性能追踪,包括事件循环延迟、数据库查询耗时、错误堆栈分析等,适合复杂应用:

  • New Relic:商业工具,提供详细的性能报告和警报功能。
    • 配置步骤:注册账号→安装newrelic包→创建newrelic.js配置文件(填入许可证密钥)→在应用入口引入:
      require('newrelic'); const express = require('express'); const app = express(); // 应用代码... 
  • Datadog:支持多平台监控,集成Node.js客户端dd-trace,可监控应用性能与基础设施指标。

4. 系统级监控工具

通过CentOS自带命令行工具监控系统资源,间接反映Node.js应用的资源消耗:

  • top/htop:实时查看进程CPU、内存占用(htop需安装,更直观);
  • vmstat:监控系统整体性能(进程、内存、IO、CPU):
    vmstat 1 # 每秒刷新一次 
  • iostat:监控磁盘IO性能(需安装sysstat包):
    iostat -x 1 # 查看磁盘详细IO指标 
  • free:查看内存使用情况(-m参数以MB为单位):
    free -m 

5. 日志管理与分析

日志是排查性能问题的关键,通过结构化日志分析工具实现高效管理:

  • 日志记录:使用winstonmorgan库记录应用日志(如请求时间、错误信息):
    const winston = require('winston'); const logger = winston.createLogger({ level: 'info', transports: [ new winston.transports.Console(), new winston.transports.File({ filename: 'app.log' }) ] }); logger.info('应用启动成功'); 
  • 日志分析:使用ELK Stack(Elasticsearch+Logstash+Kibana)收集、存储、可视化日志,快速定位性能瓶颈(如高频错误、慢请求)。

6. Prometheus+Grafana可视化监控

适合大规模分布式系统,通过时间序列数据库存储指标,可视化面板展示趋势:

  • 安装Prometheus:下载并配置Prometheus,添加Node.js应用的/metrics端点(需使用node_exporterprom-client库暴露指标);
  • 安装Grafana:配置Prometheus为数据源,导入Node.js监控面板(如“Node Exporter Full”),展示CPU、内存、请求率等指标。

0