溫馨提示×

Debian上JS項目如何監控

小樊
41
2025-10-17 03:20:46
欄目: 編程語言

Debian上JS項目(以Node.js為主)監控方案匯總

1. 進程與日志管理:基礎運行狀態監控

  • PM2(進程管理器)
    是Debian上最流行的Node.js進程管理工具,提供實時監控、自動重啟、日志管理等功能。安裝后(sudo npm install pm2 -g),可通過pm2 start app.js --name "my-app"啟動應用,pm2 monit查看實時CPU/內存/請求量,pm2 logs跟蹤日志,pm2 status查看進程狀態(如運行時間、端口、重啟次數)。適合生產環境快速部署和監控。
  • Systemd(系統級進程管理)
    通過創建systemd服務文件(如/etc/systemd/system/my-js-app.service),將JS應用托管為系統服務。配置Restart=always實現崩潰自動重啟,StandardOutput=syslog將日志重定向到系統日志,再通過journalctl -u my-js-app -f實時查看日志。適合需要與系統深度集成的場景。
  • 日志庫(結構化日志記錄)
    使用winstonmorgan等日志庫,在代碼中添加分級日志(如info、error)。例如,winston配置可將error日志寫入單獨文件(error.log),combined.log記錄所有日志。結合journalctl或ELK Stack(Elasticsearch+Logstash+Kibana)分析日志,快速定位錯誤根源。

2. 實時性能監控:資源與請求追蹤

  • 內置模塊(快速自查)
    Node.js內置process模塊可快速獲取應用性能指標:process.memoryUsage()(返回RSS、堆內存使用量)、process.cpuUsage()(返回用戶/系統CPU時間)、process.hrtime()(高精度時間戳,用于測量函數執行時間)。適合開發調試或簡單監控。
  • 第三方APM工具(深度分析)
    • Prometheus + Grafana:通過prom-client庫在Node.js應用中暴露性能指標(如HTTP請求數、響應時間、內存使用),Prometheus定時拉取數據,Grafana創建儀表盤可視化。適合需要自定義監控項和長期存儲的場景。
    • New Relic/Datadog:商業APM工具,提供端到端性能追蹤(如請求鏈路、數據庫查詢耗時)、錯誤分析(如異常堆棧、頻率)、實時告警(如CPU超過閾值)。無需修改大量代碼,適合企業級復雜應用。
  • 輕量級監控工具(快速部署)
    • NetData:實時系統監控工具,支持Node.js應用監控(如CPU、內存、磁盤IO),開箱即用(sudo apt install netdata),通過Web界面查看實時圖表。
    • Uptime Kuma:自托管監控工具,支持HTTP/HTTPS、TCP等協議,可監控JS應用的可用性(如響應時間、狀態碼),并提供實時通知(郵件、Slack、短信)。

3. 健康檢查:主動探測應用狀態

  • 自定義健康端點
    在應用中添加/health接口,返回應用狀態(如數據庫連接、緩存狀態)。例如,使用http模塊創建簡單接口:
    const http = require('http');
    http.createServer((req, res) => {
      if (req.url === '/health') {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('OK'); // 數據庫連接正常時返回200
      }
    }).listen(3000);
    
    通過curl http://localhost:3000/health或監控工具(如Prometheus的blackbox_exporter)定期探測,確保應用可訪問。

4. 開發環境輔助:代碼變更與性能分析

  • Nodemon(開發環境監控)
    監控JS文件變化(如.js、.json),自動重啟Node.js應用,避免手動重啟。安裝(sudo npm install nodemon -g)后,用nodemon app.js啟動應用,適合開發階段快速驗證代碼變更。
  • 性能分析工具(瓶頸定位)
    • Chrome DevTools:通過node --inspect app.js啟動應用,連接Chrome瀏覽器,在“Performance”面板記錄性能,分析CPU占用高的函數或內存泄漏。
    • heapdump:生成內存快照(require('heapdump').writeSnapshot('/tmp/heapdump.heapsnapshot')),用Chrome DevTools分析內存使用情況,定位內存泄漏。

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