温馨提示×

Node.js应用在Ubuntu上如何监控

小樊
86
2025-03-18 00:20:39
栏目: 编程语言

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

使用PM2进行监控

PM2是一个流行的Node.js进程管理器,它不仅可以管理你的应用,还可以提供监控和自动重启功能。

  • 安装PM2

    sudo npm install pm2 -g
    
  • 启动应用并监控

    pm2 start app.js --name my-app
    pm2 monitor
    

    使用 pm2 monitor 命令可以查看应用的实时状态、CPU和内存使用情况。

使用Uptime Kuma进行监控

Uptime Kuma是一个轻量级的自托管监控工具,支持多种监控类型,并通过Telegram、Discord、Slack等通知服务发送警报。

  • 安装Uptime Kuma

    docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma
    
  • 访问监控界面: 打开浏览器,访问 http://localhost:3001 查看监控面板。

使用内置的性能监控工具

Node.js提供了一些内置的性能监控工具,如 v8-profilerheapdump,可以帮助你收集关于内存泄漏和性能问题的信息。

  • 使用heapdump

    const heapdump = require('heapdump');
    heapdump.writeSnapshot('/path/to/snapshot.heapsnapshot');
    

    然后可以使用Chrome DevTools的Memory面板来分析生成的堆快照。

使用外部监控服务

外部监控服务如Datadog、New Relic和Prometheus等提供了更全面的监控功能,包括性能监控、错误跟踪和日志分析。

  • 集成Prometheus: 使用 prom-client 库来暴露监控指标,并通过Prometheus服务器抓取这些指标。

    const promClient = require('prom-client');
    const httpRequestDurationMicroseconds = new promClient.Histogram({
      name: 'http_request_duration_ms',
      help: 'Duration of HTTP requests in ms',
      labelNames: ['method', 'route', 'code'],
      buckets: [0.10, 5, 15, 50, 100, 200, 300, 400, 500]
    });
    
    app.use((req, res, next) => {
      const start = Date.now();
      res.on('finish', () => {
        const duration = Date.now() - start;
        httpRequestDurationMicroseconds
          .labels(req.method, req.route, res.statusCode)
          .observe(duration);
      });
      next();
    });
    

    然后在Prometheus服务器上配置抓取目标。

日志记录

日志记录对于监控和故障排除至关重要。可以使用 winstonbunyan 等日志库来记录应用的运行日志。

  • 使用Winston

    const winston = require('winston');
    const logger = winston.createLogger({
      level: 'info',
      format: winston.format.json(),
      transports: [
        new winston.transports.File({ filename: 'combined.log' }),
        new winston.transports.Console()
      ]
    });
    

    通过记录日志,可以追踪应用的运行状态和错误信息。

通过上述方法,你可以有效地监控Node.js应用在Ubuntu上的性能和健康状况,确保应用的稳定性和可靠性。

0