温馨提示×

Debian上如何监控Node.js应用

小樊
36
2025-11-09 01:50:12
栏目: 编程语言

使用PM2进行进程管理与监控
PM2是Node.js生态中最流行的进程管理工具之一,提供进程守护、实时监控、日志管理等功能,非常适合Debian环境下的Node.js应用监控。

  • 安装PM2:通过npm全局安装,命令为sudo npm install -g pm2
  • 启动应用:使用pm2 start app.js --name "my-node-app"启动应用(将app.js替换为你的入口文件,my-node-app为自定义应用名称)。
  • 查看状态:通过pm2 status命令查看所有管理的应用状态,包括CPU、内存使用率、进程ID、运行时间等信息。
  • 实时监控pm2 monit命令打开实时交互界面,动态显示应用的CPU、内存波动及日志输出;pm2 logs用于查看实时日志,帮助快速定位问题。
  • 其他常用命令pm2 restart my-node-app重启应用,pm2 stop my-node-app停止应用,pm2 delete my-node-app删除管理。

利用系统工具进行基础监控
Debian自带的系统工具可快速查看Node.js进程的资源占用情况,适合简单监控需求。

  • top/htoptop命令实时显示系统中所有进程的CPU、内存使用率(按P键按CPU排序,M键按内存排序);htoptop的增强版,提供更友好的界面(需安装:sudo apt install htop)。
  • ps命令:通过ps aux | grep node过滤出Node.js进程,查看其PID、CPU占用、内存占用等详细信息。
  • vmstat/iostatvmstat 1每秒刷新一次系统资源使用情况(包括内存、交换区、IO等);iostat用于监控磁盘IO性能(需安装sysstat包)。

集成Prometheus+Grafana实现高级监控与可视化
若需要更详细的性能指标(如请求延迟、错误率)及可视化 dashboard,可搭建Prometheus+Grafana监控体系。

  • 安装Prometheus:下载Debian版Prometheus(如prometheus_2.34.0.linux-amd64.deb),通过sudo dpkg -i安装;编辑配置文件/etc/prometheus/prometheus.yml,添加Node.js应用的抓取任务(需Node.js应用暴露/metrics端点,可通过prom-client库实现)。
  • 配置Node.js应用暴露指标:安装prom-client库(npm install prom-client),在应用中添加以下代码暴露CPU、内存等指标:
    const promClient = require('prom-client');
    const collectDefaultMetrics = promClient.collectDefaultMetrics;
    collectDefaultMetrics({ timeout: 5000 }); // 收集默认系统指标
    // 自定义业务指标(如请求数)
    const httpRequestCounter = new promClient.Counter({
      name: 'http_requests_total',
      help: 'Total number of HTTP requests',
    });
    // 在路由中增加计数
    app.get('/', (req, res) => {
      httpRequestCounter.inc();
      res.send('Hello World');
    });
    
  • 安装Grafana:下载Grafana(如grafana-8.2.0.linux-amd64.tar.gz),解压后启动(sudo ./bin/grafana-server);通过浏览器访问http://<服务器IP>:3000登录(默认账号admin,密码admin)。
  • 配置Grafana数据源与Dashboard:在Grafana中添加Prometheus为数据源(URL为http://localhost:9090),导入Node.js监控模板(如Grafana官方库中的“Node.js”模板),即可查看CPU、内存、请求延迟等可视化图表。

借助第三方APM工具实现全栈监控
若需要更全面的性能分析(如代码级性能瓶颈、错误追踪、数据库查询分析),可使用New Relic或Datadog等APM工具。

  • New Relic:注册New Relic账号,安装newrelic库(npm install newrelic),在应用入口文件(如app.js)顶部引入require('newrelic');配置newrelic.js文件(包含应用名称、License Key等信息),New Relic会自动收集应用的性能数据并提供可视化 dashboard。
  • Datadog:注册Datadog账号,安装dd-trace库(npm install dd-trace),在应用入口文件中初始化Datadog(const tracer = require('dd-trace').init({ service: 'my-node-app' }));配置Datadog Agent收集数据,即可查看应用的实时性能、错误日志及分布式追踪信息。

编写自定义监控脚本
若需要监控特定业务指标(如订单数量、缓存命中率),可编写自定义脚本定期采集数据并存储(如写入数据库或发送到监控系统)。

  • 示例代码:使用setInterval定期采集内存使用情况,并通过日志或API发送到远程服务器:
    const process = require('process');
    setInterval(() => {
      const memoryUsage = process.memoryUsage();
      const cpuUsage = process.cpuUsage();
      const data = {
        timestamp: new Date().toISOString(),
        freeMemory: memoryUsage.freemem(),
        totalMemory: memoryUsage.totalmem(),
        cpuUser: cpuUsage.user,
        cpuSystem: cpuUsage.system,
      };
      console.log('Memory and CPU Usage:', data);
      // 发送数据到远程服务器(如通过HTTP API)
      // require('axios').post('http://your-monitoring-server/api/data', data);
    }, 5000); // 每5秒采集一次
    

0