啟用 Keycloak 健康檢查

了解如何啟用和使用 Keycloak 健康檢查

Keycloak 內建支援健康檢查。本指南說明如何啟用和使用 Keycloak 健康檢查。Keycloak 健康檢查預設會透過管理連接埠 9000 暴露。詳細資訊請參閱設定管理介面

Keycloak 健康檢查端點

Keycloak 暴露 4 個健康檢查端點

  • /health/live

  • /health/ready

  • /health/started

  • /health

關於每個端點的含義,請參閱Quarkus SmallRye Health 文件

這些端點在成功時會回應 HTTP 狀態 200 OK,失敗時會回應 503 Service Unavailable,並包含類似以下的 JSON 物件

不包含額外個別檢查資訊的端點之成功回應
{
    "status": "UP",
    "checks": []
}
包含資料庫連線資訊的端點之成功回應
{
    "status": "UP",
    "checks": [
        {
            "name": "Keycloak database connections health check",
            "status": "UP"
        }
    ]
}

啟用健康檢查

可以使用建置時選項 health-enabled 來啟用健康檢查。

bin/kc.[sh|bat] build --health-enabled=true

預設情況下,健康檢查端點不會傳回任何檢查結果。

使用健康檢查

建議透過外部 HTTP 請求來監控健康檢查端點。由於安全措施會從 Keycloak 容器映像中移除 curl 和其他套件,因此本機基於命令的監控將無法輕鬆運作。

如果您未使用容器中的 Keycloak,則可以使用任何您想要的方法來存取健康檢查端點。

curl

您可以使用簡單的 HTTP HEAD 請求來判斷 Keycloak 的 liveready 狀態。curl 是適合此目的的 HTTP 客戶端。

如果 Keycloak 部署在容器中,您必須從容器外部執行此命令,因為先前已提及的安全措施。例如:

curl --head -fsS https://127.0.0.1:9000/health/ready

如果命令傳回狀態 0,則 Keycloak 處於 liveready 狀態,具體取決於您呼叫的端點。否則表示有問題。

Kubernetes

定義一個 HTTP 探針,以便 Kubernetes 可以外部監控健康檢查端點。請勿使用存活命令。

HEALTHCHECK

Containerfile 的 HEALTHCHECK 指令定義一個會在容器執行時定期在容器內執行的命令。Keycloak 容器沒有安裝任何 CLI HTTP 客戶端。請考慮安裝 curl 作為額外的 RPM,如在容器中執行 Keycloak 指南中所述。請注意,您的容器可能會因此變得較不安全。

可用的檢查

下表顯示可用的檢查。

檢查 說明 需要指標

資料庫

傳回資料庫連線集區的狀態。

對於某些檢查,您還需要啟用指標,如「需要指標」欄所示。若要啟用指標,請使用以下 metrics-enabled 選項:

bin/kc.[sh|bat] build --health-enabled=true --metrics-enabled=true

相關選項

health-enabled

伺服器是否應公開健康檢查端點。

如果啟用,則健康檢查可在 /health/health/ready/health/live 端點上使用。

CLI: --health-enabled
Env: KC_HEALTH_ENABLED

truefalse (預設)

在此頁面