温馨提示×

Debian系统如何监控js运行状态

小樊
48
2025-09-17 09:24:55
栏目: 编程语言

Debian系统监控JavaScript运行状态的常用方法

1. 使用pm2进程管理器(推荐)

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

  • 安装与启动:全局安装pm2后,通过命令启动应用并进入监控模式:
    sudo npm install pm2 -g
    pm2 start app.js --name "my-js-app"  # 启动应用并命名
    pm2 monit  # 实时监控CPU、内存、日志输出
    
  • 核心功能
    • pm2 status:查看应用运行状态(进程ID、状态、CPU/内存占用);
    • pm2 logs:实时查看应用日志(支持过滤错误日志);
    • pm2 restart app-name:重启指定应用;
    • pm2 save:保存当前进程列表,pm2 startup:设置开机自启。

2. 利用Node.js内置模块

Node.js自带processperf_hooks等模块,无需额外安装即可获取基础运行数据。

  • process模块:获取进程基本信息(内存、CPU、PID):
    console.log('内存使用:', process.memoryUsage()); // { rss, heapTotal, heapUsed等 }
    console.log('CPU使用:', process.cpuUsage());   // 用户态/内核态CPU时间
    console.log('进程PID:', process.pid);          // 当前进程ID
    
  • perf_hooks模块:性能分析(代码执行时间、函数耗时):
    const { performance, PerformanceObserver } = require('perf_hooks');
    const obs = new PerformanceObserver((list) => {
      list.getEntries().forEach(entry => console.log(`${entry.name}: ${entry.duration}ms`));
    });
    obs.observe({ entryTypes: ['measure'] });
    performance.mark('start');
    // 你的业务逻辑(如数据库查询、接口处理)
    performance.mark('end');
    performance.measure('业务逻辑耗时', 'start', 'end');
    

3. 系统自带工具监控

通过Debian系统工具监控JS应用占用的系统资源,适合快速排查系统级性能问题。

  • top/htop
    • top:实时显示进程CPU、内存占用(按P按CPU排序,M按内存排序);
    • htop(需安装):增强版top,支持颜色高亮、鼠标操作:
      sudo apt install htop
      htop
      
  • vmstat:查看虚拟内存、CPU使用情况(每秒刷新一次):
    vmstat 1  # 输出包括内存、交换分区、CPU利用率等
    

4. 第三方监控工具(生产环境推荐)

  • Prometheus + Grafana
    搭建定制化监控平台,适合大规模应用。步骤:
    1. 安装Prometheus(抓取指标)、Grafana(可视化);
    2. 在JS应用中集成prom-client库,暴露/metrics接口:
      const client = require('prom-client');
      const collectDefaultMetrics = client.collectDefaultMetrics;
      collectDefaultMetrics(); // 收集默认指标(CPU、内存、请求量等)
      app.get('/metrics', (req, res) => {
        res.set('Content-Type', client.register.contentType);
        res.end(client.register.metrics());
      });
      
    3. 配置Prometheus抓取目标,Grafana导入Node.js仪表盘(如社区提供的“Node Exporter Full”)。
  • New Relic/Datadog
    商业APM工具,提供全链路追踪、错误分析、数据库查询监控等功能。以New Relic为例:
    1. 安装newrelic包:npm install newrelic --save
    2. 在应用入口文件引入:require('newrelic')
    3. 登录New Relic控制台查看实时性能数据(如响应时间、错误率、吞吐量)。

5. 日志管理与分析

通过日志记录应用运行状态,便于后续排查问题。

  • 代码埋点:使用winstonmorgan记录日志(如请求日志、错误日志):
    const winston = require('winston');
    const logger = winston.createLogger({
      level: 'info',
      format: winston.format.json(),
      transports: [
        new winston.transports.File({ filename: 'error.log', level: 'error' }),
        new winston.transports.File({ filename: 'combined.log' })
      ]
    });
    logger.info('应用启动成功');
    logger.error('数据库连接失败:', err);
    
  • 日志查看:使用journalctl查看systemd服务的实时日志(若应用以systemd运行):
    sudo journalctl -u my-js-app -f  # -f表示实时跟踪
    
  • ELK Stack:搭建Elasticsearch+Logstash+Kibana日志分析平台,适合海量日志处理。

0