如何在Ubuntu上監控Node.js運行狀態
在Ubuntu系統上,監控Node.js應用的運行狀態需結合進程管理、性能指標、日志分析及系統資源等多維度工具。以下是常用且有效的方法,覆蓋從開發到生產環境的不同需求:
PM2是Node.js生態中最流行的進程管理工具,具備進程守護、實時監控、日志管理、自動重啟等功能,是生產環境的推薦選擇。
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行日志(支持按進程名稱過濾)。若需將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可查看服務的運行狀態、日志及錯誤信息。htop(交互式)和top(命令行)是Ubuntu自帶的系統監控工具,可快速查看CPU、內存、進程等系統級資源使用情況,幫助定位Node.js進程的資源瓶頸。
sudo apt install htop(若未安裝)。htop,通過F6鍵選擇排序方式(如按CPU或內存排序),找到Node.js進程(通常名稱為node),查看其實時資源占用。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秒打印一次
對于需要詳細性能分析、可視化、告警的生產環境,可使用以下工具:
prom-client庫,定義指標(如HTTP請求耗時、內存使用),并通過/metrics端點暴露指標;Prometheus定時拉取指標,Grafana創建儀表板展示數據。newrelic),即可自動采集性能數據并可視化,適合復雜應用的全鏈路監控。nodemon用于開發環境,可監控文件變動并自動重啟Node.js應用,避免手動重啟的麻煩,間接幫助監控應用狀態。
sudo npm install nodemon -g,然后通過nodemon app.js啟動應用。當app.js或其依賴文件修改時,nodemon會自動重啟應用并輸出日志。以上方法可根據需求組合使用:生產環境推薦PM2+Systemd+Prometheus/Grafana,開發環境使用nodemon+htop,簡單監控可使用內置模塊。通過多維度監控,可全面保障Node.js應用在Ubuntu上的穩定運行。