ヘルスチェックによるインスタンスの状態追跡

インスタンスが起動を完了し、ヘルスRESTエンドポイントを呼び出すことでリクエストを処理できる状態になっているかを確認します。

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

Keycloakのliveまたはready状態を判断するために、シンプルなHTTP HEADリクエストを使用できます。curlはこの目的に適したHTTPクライアントです。

Keycloakがコンテナにデプロイされている場合、前述のセキュリティ対策のため、このコマンドをコンテナ外部から実行する必要があります。例:

curl --head -fsS http://localhost:9000/health/ready

コマンドがステータス0で返された場合、Keycloakは呼び出したエンドポイントに応じてliveまたはreadyです。それ以外の場合は問題があります。

Kubernetes

Kubernetesがヘルスエンドポイントを外部から監視できるように、HTTPプローブを定義してください。livenessコマンドは使用しないでください。

HEALTHCHECK

ContainerfileのHEALTHCHECK命令は、コンテナの実行中にコンテナ内で定期的に実行されるコマンドを定義します。Keycloakコンテナには、CLI HTTPクライアントがインストールされていません。コンテナでのKeycloakの実行ガイドで詳しく説明されているように、追加のRPMとしてcurlをインストールすることを検討してください。ただし、これによりコンテナのセキュリティが低下する可能性があることに注意してください。

利用可能なチェック

以下の表は、利用可能なチェックを示しています。

チェック 説明 メトリクスが必要

データベース

データベース接続プールの状態を返します。

はい

一部のチェックでは、Requires Metrics列で示されているように、メトリクスも有効にする必要があります。メトリクスを有効にするには、次のように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(デフォルト)

このページについて