Traefik Dashboard 儀表板:即時監控路由與服務狀態

Traefik 內建了一個非常實用的 Web Dashboard,讓你能夠視覺化目前的路由狀態。這在除錯 (Debug) 或監控服務時非常有幫助。

啟用 Dashboard

在上一章的範例中,我們透過以下參數啟用了 Dashboard:

command:
  - '--api.insecure=true'

參數 --api.insecure=true 做了兩件事:

  1. 啟用 API。
  2. 啟用 Dashboard,並且將其暴露在 8080 port 上,不設任何密碼保護

這在開發本機 (localhost) 環境是非常方便的,但在正式生產環境 (Production) 絕對 禁止 使用此參數,因為這會將你的內部架構暴露給全世界。

Dashboard 功能概覽

打開 http://localhost:8080,你會看到 Dashboard 的首頁。

概覽 (Overview)

首頁會顯示核心元件的統計數據:

  • Routers / Services / Middlewares: 顯示目前有多少個活躍的路由規則、服務和中介軟體。如果有設定錯誤,這裡會顯示紅色的錯誤數量。
  • Features: 顯示目前啟用的功能 (例如 HTTP/2, HTTP/3 等)。
  • Providers: 顯示目前生效的配置來源 (例如 Docker, File)。

HTTP Routers 頁面

點擊左側導航欄的 HTTP -> Routers,你可以看到所有已定義的路由規則。

  • 你可以搜尋 URL 或 Service 名稱。
  • 點擊任一個 Router,可以查看詳細資訊,包括它綁定了哪個 EntryPoint、使用了哪些 Middlewares、以及最終指向哪個 Service。
  • 如果某個 Router 設定有誤 (例如語法錯誤),這裡會顯示警告標示。

HTTP Services 頁面

點擊 HTTP -> Services,顯示所有的後端服務。

  • 這裡可以看到每個 Service 對應到的後端伺服器 (Server) IP 地址。
  • 如果你的 Docker 服務有多個副本 (Replicas),這裡會列出所有副本的 IP。
  • 你可以在這裡檢查負載平衡 (Load Balancer) 的狀態。

生產環境安全性建議

在生產環境中,為了安全啟用 Dashboard,我們必須這麼做:

  1. 移除 --api.insecure=true
  2. 啟用 --api.dashboard=true
  3. 使用 Traefik 的 Router 來公開 Dashboard (就像設定其他 Web 服務一樣),並將其指向 Traefik 內部的 api@internal 服務。
  4. 強制加上 BasicAuth Middleware (帳號密碼認證) 來保護它。

這樣做的好處是,Dashboard 不會直接開在 8080 port,而是像你的其他 App 一樣,透過 https://traefik.yourdomain.com 存取,並且受到 HTTPS 和密碼的保護。

我們將在後續的「Middleware」章節詳細示範如何為 Dashboard 加上密碼保護。現在,請先記得:--api.insecure=true 只能在安全的內部網路或本機開發時使用。

如果你只是想簡單地限制存取,也可以在 Docker Compose 中將 Port 綁定限制為 Localhost (例如 127.0.0.1:8080:8080),這樣 Dashboard 就只能從 Server 本機存取 (可搭配 SSH Tunnel 連線),而不會暴露在公開網路上。

API Access

除了 UI,啟用 API 後,你也可以直接透過 HTTP 請求獲取 JSON 格式的狀態資訊。這對於自動化監控或整合第三方系統很有用。

例如:

  • GET /api/http/routers: 取得所有路由列表。
  • GET /api/http/services: 取得所有服務列表。
  • GET /api/overview: 取得概覽統計。

詳細的 API 文件可以參考 Traefik 官方文件。