溫馨提示×

如何在Ubuntu上監控Node.js運行狀態

小樊
42
2025-10-06 04:00:45
欄目: 編程語言

如何在Ubuntu上監控Node.js運行狀態

在Ubuntu系統上,監控Node.js應用的運行狀態需結合進程管理、性能指標、日志分析及系統資源等多維度工具。以下是常用且有效的方法,覆蓋從開發到生產環境的不同需求:

1. 使用PM2進行進程管理與監控

PM2是Node.js生態中最流行的進程管理工具,具備進程守護、實時監控、日志管理、自動重啟等功能,是生產環境的推薦選擇。

  • 安裝PM2:通過npm全局安裝,命令為sudo npm install pm2 -g。
  • 啟動應用:使用pm2 start app.js --name "my-app"(將app.js替換為你的入口文件,my-app為自定義應用名稱)。
  • 查看狀態:通過pm2 status查看所有進程的運行狀態(包括CPU、內存占用、重啟次數等)。
  • 實時監控pm2 monit提供交互式界面,實時顯示應用的CPU、內存使用趨勢及日志輸出。
  • 日志管理pm2 logs實時查看應用日志,pm2 logs --lines 100查看最近100行日志(支持按進程名稱過濾)。

2. 利用Systemd實現服務化監控

若需將Node.js應用作為系統服務管理(開機自啟、狀態檢查),可通過Systemd配置服務文件。

  • 創建服務文件:用sudo nano /etc/systemd/system/my-app.service編輯文件,內容如下(根據實際路徑修改):
    [Unit]
    Description=Node.js Application Service
    After=network.target
    
    [Service]
    Type=simple
    User=your-username  # 替換為運行應用的用戶
    WorkingDirectory=/path/to/your/app  # 應用根目錄
    ExecStart=/usr/bin/node /path/to/your/app/app.js  # 啟動命令
    Restart=always  # 崩潰時自動重啟
    
    [Install]
    WantedBy=multi-user.target
    
  • 啟動與啟用服務:運行sudo systemctl daemon-reload重新加載配置,sudo systemctl start my-app啟動服務,sudo systemctl enable my-app設置開機自啟。
  • 查看狀態sudo systemctl status my-app可查看服務的運行狀態、日志及錯誤信息。

3. 使用htop/top查看系統級資源占用

htop(交互式)和top(命令行)是Ubuntu自帶的系統監控工具,可快速查看CPU、內存、進程等系統級資源使用情況,幫助定位Node.js進程的資源瓶頸。

  • 安裝htopsudo apt install htop(若未安裝)。
  • 啟動htop:運行htop,通過F6鍵選擇排序方式(如按CPU或內存排序),找到Node.js進程(通常名稱為node),查看其實時資源占用。

4. 通過Node.js內置模塊獲取進程信息

Node.js提供process、os等內置模塊,可直接在應用代碼中獲取內存使用、CPU時間、系統信息等,適合簡單的自定義監控。

  • 示例代碼
    const process = require('process');
    const os = require('os');
    
    setInterval(() => {
      // 內存使用情況(單位:字節)
      const memoryUsage = process.memoryUsage();
      console.log(`Memory Usage: RSS=${(memoryUsage.rss / 1024 / 1024).toFixed(2)}MB, Heap=${(memoryUsage.heapUsed / 1024 / 1024).toFixed(2)}MB`);
    
      // CPU使用時間(單位:微秒)
      const cpuUsage = process.cpuUsage();
      console.log(`CPU Usage: User=${cpuUsage.user}μs, System=${cpuUsage.system}μs`);
    
      // 系統信息
      console.log(`System Uptime: ${os.uptime()} seconds`);
      console.log('-----------------------------');
    }, 5000); // 每5秒打印一次
    
  • 作用:通過日志輸出,可跟蹤應用的內存泄漏、CPU占用異常等問題。

5. 第三方專業監控工具(生產環境推薦)

對于需要詳細性能分析、可視化、告警的生產環境,可使用以下工具:

  • Prometheus + Grafana
    • Prometheus是開源時間序列數據庫,用于收集和存儲指標;Grafana用于可視化數據(如請求率、延遲、內存使用)。
    • 步驟:在Node.js應用中安裝prom-client庫,定義指標(如HTTP請求耗時、內存使用),并通過/metrics端點暴露指標;Prometheus定時拉取指標,Grafana創建儀表板展示數據。
  • New Relic/Datadog
    • 全棧APM工具,支持Node.js應用的性能監控、錯誤追蹤、日志管理。只需安裝對應SDK(如newrelic),即可自動采集性能數據并可視化,適合復雜應用的全鏈路監控。

6. 開發環境使用nodemon監控文件變化

nodemon用于開發環境,可監控文件變動并自動重啟Node.js應用,避免手動重啟的麻煩,間接幫助監控應用狀態。

  • 安裝與使用sudo npm install nodemon -g,然后通過nodemon app.js啟動應用。當app.js或其依賴文件修改時,nodemon會自動重啟應用并輸出日志。

以上方法可根據需求組合使用:生產環境推薦PM2+Systemd+Prometheus/Grafana,開發環境使用nodemon+htop,簡單監控可使用內置模塊。通過多維度監控,可全面保障Node.js應用在Ubuntu上的穩定運行。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女