Mark Ku's Blog
開源專案 · GitHub

Uptime Kuma Cluster

把單機版 Uptime Kuma 升級成高可用叢集 — 智慧負載平衡、自動 Failover、健康檢查,一行 Docker Compose 就能啟動。

免費 · 開源 (MIT)🐳 自架 · Docker Compose 一鍵啟動
叢集架構

核心功能

為了在大規模監控下維持高可用而生的設計

⚖️

智慧負載平衡

OpenResty + Lua 兩階段路由,依各節點目前的監控數量與狀態,動態把新監控分配到最閒的節點。

🔁

自動故障移轉

節點掛掉時自動把它的監控重新分配到健康節點;節點恢復後再還原,過程不中斷。

❤️

健康檢查

週期性檢查每個節點的 /api/v1/health 端點,連續失敗即判定故障並觸發移轉(預設 30 秒)。

🗄️

共享資料庫

以 MariaDB 取代本機 SQLite 作為共享狀態,支援多節點同時讀寫。

水平擴展

可動態增減 Uptime Kuma 節點,監控規模成長時加機器即可,不必砍掉重練。

🧩

叢集管理 API

補上原生版沒有的一組 REST API,方便程式化查狀態、觸發健康檢查與重新分配。

📌

固定節點除錯

用 cookie 把流量釘到指定節點方便除錯;該節點離線時自動解除釘選。

🐳

Docker 一鍵啟動

docker-compose-cluster.yaml 一行指令拉起 OpenResty、多個節點與 MariaDB。

原生版 vs 叢集版

本專案相對於原生 Uptime Kuma 補強了什麼

項目原生 Uptime Kuma本專案(Cluster)
架構單機多節點 HA 叢集
資料庫SQLite(本機)MariaDB(共享)
負載平衡OpenResty + Lua 智慧路由
故障處理服務中斷自動重新分配監控
水平擴展不支援可動態增減節點
健康檢查週期性端點檢查
叢集管理 API提供一組 REST API

叢集管理 API

全部以 /lb 為前綴,方便自動化監控與管理

GET
/lb/ping

存活檢查

GET
/lb/health

叢集健康狀態

GET
/lb/system-status

完整系統狀態報告

GET
/lb/available-nodes

列出可用節點與負載指標

GET
/lb/fixed-node/{node}

把流量釘到指定節點

POST
/lb/trigger-health-check

手動觸發一次健康掃描

GET
/lb/trigger-rebalancing

強制重新分配監控

GET
/lb/rebalancing-status

查看重新分配進度

快速啟動

  1. 1

    git clone https://github.com/markku636/uptime-kuma-cluster 並進入專案目錄。

  2. 2

    執行下方 Docker Compose 指令,一次拉起 OpenResty、三個 Uptime Kuma 節點與 MariaDB。

  3. 3

    用 curl http://localhost:8084/lb/health 與 /lb/available-nodes 確認叢集正常運作。

需要 Docker 與 Docker Compose;節點數、健康檢查間隔等皆可在環境變數調整。

需要扛得住大規模監控的高可用平台?

免費、開源(MIT)、可自架。到 GitHub 看完整說明、Docker Compose 與原始碼。

Uptime Kuma Cluster — 高可用監控叢集(開源)| Mark Ku 的技術部落格 - Mark Ku's Blog