温馨提示×

如何在Ubuntu上进行Nodejs性能监控

小樊
58
2025-08-05 03:15:55
栏目: 编程语言

在Ubuntu上进行Node.js性能监控可以通过多种工具和方法实现。以下是一些常用的监控解决方案:

系统级性能监控工具

  • tophtop:实时显示系统中各个进程的资源占用情况,包括CPU和内存。
  • vmstat:显示系统的虚拟内存统计信息,如内存使用率和交换区使用情况。
  • iostat:监控系统的磁盘I/O操作,包括读写速度和等待时间。
  • sar:收集、报告和保存系统活动信息,如CPU使用率、内存使用情况和网络流量。
  • dstat:一个多功能的系统资源监控工具,可以实时显示CPU、内存、磁盘I/O和网络流量等信息。
  • glances:一个跨平台的系统监控工具,可以快速查看系统的状态和性能。
  • Conky:一个轻量级的系统监视工具,可以监控服务器的运行状态、网络流量和服务可用性等。

Node.js应用级性能监控工具

  • 内置模块
    • console.time()console.timeEnd():用于测量代码块的执行时间。
    • process.memoryUsage():获取进程的内存使用情况。
    • process.cpuUsage():获取CPU使用率。
  • 第三方库
    • xprofiler:提供详细的性能分析功能,如高精度计时器。
    • node-inspector:基于Blink开发工具的Node.js调试器,提供类似Chrome DevTools的功能。
    • electron-profiler:Electron的官方性能分析工具,收集应用程序运行时的各种信息。
    • express-status-monitor:提供实时的服务器性能指标和健康检查。
    • PrometheusGrafana:用于更详细的性能监控和可视化。

使用PM2进行监控与自动重启

  • 安装PM2
    npm install pm2 -g
    
  • 启动应用
    pm2 start app.js --watch
    
  • 监控应用
    pm2 monit
    
  • 查看日志
    pm2 logs
    
  • 查看资源使用情况
    pm2 top
    

使用Prometheus和Grafana进行监控

  • 安装Node.js的Prometheus客户端
    npm install prom-client
    
  • 在Node.js应用程序中定义和记录指标
    const client = require('prom-client');
    const requestDuration = new client.histogram({ name: 'http_request_duration_seconds', help: 'duration of http requests in seconds', labelnames: ['method', 'status'] });
    const activeRequests = new client.gauge({ name: 'active_requests', help: 'number of active requests' });
    app.use((req, res, next) => {
      const end = requestDuration.startTimer();
      activeRequests.inc();
      res.on('finish', () => {
        end({ method: req.method, status: res.statusCode });
        activeRequests.dec();
      });
      next();
    });
    
  • 公开指标端点
    app.get('/metrics', async (req, res) => {
      res.set('content-type', client.register.contentType);
      res.send(await client.register.metrics());
    });
    
  • 使用Grafana进行可视化:将Prometheus连接到Grafana并创建自定义仪表板以可视化请求率、延迟和内存使用等指标。

通过上述方法,可以有效地监控Node.js应用在Ubuntu上的性能和资源使用情况,确保应用的稳定性和高可用性。结合使用Prometheus、Grafana、Winston和Tinymonit等工具,可以获得全面的监控数据,从而更好地理解和优化您的应用。

0