DEV Community

Cover image for 使用 pm2.web 建立免費 PM2 監控系統
Let's Write
Let's Write

Posted on • Originally published at letswrite.tw

使用 pm2.web 建立免費 PM2 監控系統

本篇要解決的問題

PM2 是 Node.js 裡常用的 process manager,一般如果是透過網頁監控、重啟,大概會使用官方的 Keymetrics

但,But!就是這個 But!免費版最多只能監控 4 個 Process,再多就要掏出魔法小卡了。

問了 ChatGPT 後,發現有一個開源的替代方案:pm2.web,可以自己架設,不管幾個 process 都完全免費。

以下筆記如何使用 Vercel + MongoDB Atlas 部署 pm2.web,免費監控我們的 PM2。


架構概念

pm2.web 分成兩部分,如下。

Dashboard

Next.js 寫前端 + API。

本篇選擇放在 Vercel 執行。

Backend

官方文件裡叫 Backend,其實它就是跑在目標伺服器上的 Agent。

Agent 在我們要監控的伺服器上,透過 PM2 BUS API 讀取 process 狀態,再把資料寫到 MongoDB。

Dashboard 與 Backend 之間是透過 MongoDB Atlas 溝通,不需要開防火牆或暴露 192.168.* 內網。


步驟一:MongoDB Atlas 設定

前往 MongoDB Atlas 建一個免費 cluster。

複製連線字串,待會會用到:

MongoDB Atlas 連線字串複製畫面

Network Access 加上 0.0.0.0/0(因為 Vercel 是浮動 IP,否則無法連線):

MongoDB Atlas Network Access 設定介面

允許所有 IP 存取 MongoDB Atlas


步驟二:Vercel 部署 Dashboard

點擊 官方文件 上的「Deploy」按鈕:

Vercel 部署 pm2.web 的 Deploy 按鈕

設定環境變數:

在 Vercel 設定 pm2.web 所需的環境變數

第一次部署後,一定會出現失敗,免緊張、免害怕,選單點擊 Settings → Build & Development Settings → Framework Preset,選 Next.js,之後再重新 Redeploy 一次,就 OK 了。

選擇 Next.js 作為 Vercel 的 Framework

重新部署 Vercel 專案

部署完成後,打開網址會進入註冊頁。

pm2.web Dashboard 的使用者註冊頁面

⚠️ 重要提醒:第一個註冊的帳號會自動成為 owner,之後就能在 UI 裡管理權限。


步驟三:安裝 Backend Agent

官方文件pm2.web - Backend

假設內網伺服器 IP 是 192.168.1.2,進入主機後:

下載與安裝

git clone https://github.com/oxdev03/pm2.web.git
cd pm2.web

# 根目錄先安裝(避免 pm2 報錯)
npm install

# 進入 backend 目錄
cd apps/backend
npm install

# 複製環境變數範例
cp .env.example .env
Enter fullscreen mode Exit fullscreen mode

設定環境變數

編輯 .env 檔:

MONGODB_URI=我們的 Atlas 連線字串
Enter fullscreen mode Exit fullscreen mode

啟動 Agent

接著,終端機要回到專案的根目錄,不能停留在 backend 的資料夾中。

執行以下:

pm2 start npm --name "pm2.web" -- run "start:apps:backend"
pm2 save
pm2 startup  # 重開機後會自動啟動
Enter fullscreen mode Exit fullscreen mode

接著瀏覽器打開 Vercel 提供的網址,就會看到 Dashboard 上出現資料了:

pm2.web Dashboard 成功顯示 PM2 資料

這樣 Backend 就會定期把 PM2 狀態推送到 Atlas,Dashboard 會自動讀取。


效果展示

在 Dashboard 上我們可以:

  • 查看所有 process 的狀態(Running、CPU、Memory 使用率)
  • 遠端重啟、停止 process
  • 監控多台伺服器的 PM2 狀態

pm2.web 顯示多個 Process 狀態的畫面


總結

照著本筆記文的方式依步驟執行後,我們就能用 Vercel + MongoDB Atlas + pm2.web,打造一個:

  • ✅ 完全免費
  • ✅ 介面美觀,有深色模式
  • ✅ 可控管使用者權限
  • ✅ 透過網站進行多機管理

的 PM2 監控系統,不用因為沒有魔法小卡,被 4 個 process 給限制。


參考資源

Top comments (0)