温馨提示×

CentOS Node.js 应用如何监控

小樊
59
2025-09-01 17:26:59
栏目: 编程语言

使用PM2进行进程与应用监控
PM2是Node.js生态中最流行的进程管理工具,可实现对应用的生命周期管理(启动/停止/重启)、实时资源监控日志集中管理,非常适合CentOS环境下的Node.js应用监控。

  • 安装与基础使用:通过npm全局安装最新版PM2,启动应用时指定名称(便于后续识别),例如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/htoptop是系统默认的性能监控工具,按Shift+P可按CPU使用率排序,按Shift+M按内存使用率排序;htop(需安装:sudo yum install htop)是增强版,支持鼠标操作、颜色高亮及更直观的进程树展示。
  • glances:综合监控工具(需安装:sudo yum install glances),可展示CPU、内存、磁盘、网络、进程等多维度指标,支持远程监控(通过Web或API)。
  • sar:系统活动报告工具(属于sysstat包,安装:sudo yum install sysstat),用于收集和报告系统历史数据,例如sar -u 1 3每1秒采样1次CPU使用率,共采样3次;sar -r 1查看内存使用情况。
  • nmon:实时监控工具(需安装:sudo yum install nmon),通过nmon命令进入交互模式,按c查看CPU、m查看内存、d查看磁盘I/O等,适合深度分析性能瓶颈。

APM(应用性能管理)工具
APM工具可实现端到端性能监控,覆盖代码级性能分析、数据库查询耗时、外部API调用延迟等,帮助快速定位性能瓶颈:

  • Prometheus + Grafana
    • Prometheus:开源时间序列数据库(需下载二进制包并配置prometheus.yml,添加Node.js应用的监控目标),负责采集和存储性能指标(如HTTP请求延迟、内存使用量)。
    • Grafana:开源可视化平台(需安装:wget https://dl.grafana.com/oss/release/grafana-*.linux-amd64.tar.gz && tar -zxvf grafana-*.tar.gz),通过添加Prometheus数据源,创建仪表盘展示CPU、内存、请求量等指标的实时曲线和告警规则。
  • Retrace:基于云的APM解决方案(支持CentOS),提供集中式日志管理、错误跟踪、性能监控(如事务追踪、数据库性能分析),适合需要快速部署的企业级应用。
  • App Metrics:IBM开源的性能监控库(需集成到Node.js代码中),专注于收集应用级指标(如请求速率、错误数、垃圾回收情况),支持导出至Prometheus等监控系统。

日志管理与分析
日志是排查问题的关键,通过集中化日志管理可快速定位错误和异常:

  • Winston日志库:Node.js内置的日志库(需安装: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');
    
  • ELK Stack(Elasticsearch + Logstash + Kibana)
    • Elasticsearch:分布式搜索引擎(用于存储和索引日志);
    • Logstash:日志收集和处理工具(需安装并配置logstash.conf,解析Node.js日志格式);
    • Kibana:可视化工具(通过Web界面展示日志分析结果,如错误趋势、请求耗时分布)。
      适合大规模日志分析场景,帮助快速定位高频错误和异常模式。

代码级性能监控
通过代码嵌入监控逻辑,获取更细粒度的性能数据:

  • process模块:Node.js内置模块,可获取进程级性能指标(如CPU使用率、内存占用),例如:
    setInterval(() => {
      const memoryUsage = process.memoryUsage();
      const cpuUsage = process.cpuUsage();
      console.log(`Memory: ${JSON.stringify(memoryUsage)} bytes`);
      console.log(`CPU: ${JSON.stringify(cpuUsage)} microseconds`);
    }, 1000);
    
  • express-status-monitor:Express中间件(需安装:npm install express-status-monitor),为Express应用添加实时性能监控页面(如请求速率、响应时间、内存使用情况),适合快速集成到Web应用中。

0