用 Uptime Kuma 監控網站:從部署到收到第一則故障通知

在 Zenavo 上用範本部署 Uptime Kuma,新增網站與 API 監控,設定 Telegram 或電子郵件通知,驗證故障與恢復提醒,並做好磁碟區備份。

本文亦提供 English、简体中文、日本語、Español 和 Bahasa Indonesia。

網站或服務上線後,與其等使用者來告訴你「打不開了」,不如讓監控在憑證過期或服務停機的第一時間發訊息通知你。

Uptime Kuma 是一個輕量、開源的自架監控工具:支援 HTTP(s)、關鍵字、TCP 連接埠、DNS、憑證到期等多種檢查方式,內建狀態頁與數十種通知管道(Telegram、Slack、Discord、電子郵件、Webhook 等)。本文用 Zenavo 的 Uptime Kuma 範本,從部署一路走到收到第一則真實告警。

部署在哪裡比較合適

開始之前,先想好要把 Uptime Kuma 裝在哪一台伺服器上:

  • 和業務在同一台伺服器:適合剛起步。某個容器掛了、憑證快過期了,它都能正常發通知;但如果整台伺服器斷網或停機,監控自己也會一起失聯。
  • 放在另一台獨立的小伺服器上:適合正式業務。Uptime Kuma 占用的資源很小,和業務分開部署才能在業務伺服器徹底停機時發出提醒。

從範本部署

先在 Zenavo 中連接一台 Linux 伺服器,再開啟 Uptime Kuma 範本,選擇伺服器並部署。

目前範本的設定如下:

設定 值或用途
映像檔 louislam/uptime-kuma:1
HTTP 連接埠 3001
持久化目錄 /app/data,SQLite 資料庫、監控項目、歷史紀錄和通知憑證都在這裡

在 uptime-kuma 服務的 網路 頁為 3001 連接埠綁定網域,例如 status.example.com,在 DNS 新增指向伺服器的 A 記錄,等待 HTTPS 生效。步驟見網域文件。

網域生效後立即開啟網站建立管理員帳號。 第一個開啟頁面的人可以直接設定管理員使用者名稱和密碼,請儘快自己完成這一步。

新增第一條監控

登入後點擊左上角 新增監控項目(Add New Monitor)。常見設定建議:

設定項目 建議
監控類型 一般網頁或 API 選 HTTP(s);檢查回傳內容是否包含特定文字選 HTTP(s) - 關鍵字
名稱 寫清楚環境與用途,例如 正式站 - 首頁 或 API - /healthz
URL 使用者實際造訪的完整 https:// 網址
心跳間隔 60 秒
重試次數 設為 2 或 3 次,避免網路偶發抖動一下就半夜把你吵醒
憑證到期通知 開啟,提前 7–14 天提醒續期異常

如果你的應用程式依賴資料庫,除了監控靜態首頁,建議再加一條專門檢查 /healthz 等健康狀態端點的監控,確認後端與資料庫連線也正常。

設定通知,並做一次真實演練

在右上角頭像選單開啟 設定 → 通知(Notifications),或直接在編輯監控項目時點擊 設定通知:

  1. 選擇你常用的管道(例如 Telegram、Webhook、SMTP 郵件),填入對應的 Token 或帳號資訊。
  2. 點擊 測試(Test),確認手機或信箱收到一則測試訊息。
  3. 打開 預設啟用(Default enabled),或在具體監控項目裡勾選這個通知管道,然後儲存監控項目(很多人點了測試收到訊息,卻忘了把它勾到監控項目上並儲存)。

為了確認真正出故障時能收到提醒,用一個測試服務演練一次:

  1. 為一個不對外承接流量的測試服務新增監控,等待狀態變成綠色的 Up。
  2. 在 Zenavo 裡暫停這個測試服務,等待 1–3 分鐘(取決於你設定的間隔與重試次數),確認監控變成紅色的 Down,且手機收到故障通知。
  3. 重新啟動測試服務,確認收到恢復(Up)通知。

公開狀態頁(選用)

如果你想做一個像 status.example.com/status/main 這樣給使用者看的狀態頁,點頂部列的 狀態頁面(Status Pages) 新增一個,挑出適合公開的服務放進去。內部管理後台、資料庫連接埠與不希望暴露的服務名稱不要放上公開狀態頁。

備份與升級

監控項目、通知金鑰與可用率歷史都在 /app/data 磁碟區裡。在 uptime-kuma 服務的 備份與還原 中可以備份這個磁碟區:

  1. 停止專案(磁碟區備份需要專案處於停止狀態)。
  2. 建立備份,完成後重新啟動專案。
  3. 下載一份備份妥善保存(裡面包含你的通知 Webhook / Bot Token)。詳見備份與還原。

範本使用的是 louislam/uptime-kuma:1(固定在 v1 大版本)。如果要升級到後續大版本,務必先讀 Uptime Kuma 的發行說明並先備份 /app/data;跨大版本遷移資料庫後,直接把映像檔改回舊版本通常無法回退,需要還原升級前的備份。

常見問題

點了「測試通知」能收到,服務掛了卻沒收到提醒? 開啟該監控項目的編輯頁,看右側 通知 清單裡有沒有把剛才設好的通知管道勾上,勾上後點底部的 儲存。

需要掛載宿主機的 Docker Socket 嗎? 不需要。透過 HTTP(s) 和 TCP 連接埠就能檢查絕大部分服務,不掛載 docker.sock 更安全。監控同一個 Zenavo 專案裡的其他服務時,也可以填私有網路網址(如 http://api.zenavo.internal:3000/healthz)。

經常收到誤報怎麼辦? 把監控項目裡的 重試次數(Retries) 從 0 調到 2–3 次,並把逾時時間適當放寬,過濾掉單次網路抖動。

從 Uptime Kuma 範本開始:綁定網域、建立管理員,設好通知並用測試服務演練一次停機與恢復,你的監控才算真正就位。