启用 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 http://127.0.0.1:9000/health/ready

如果命令返回状态 0,则 Keycloak 为 liveready,具体取决于您调用的端点。否则存在问题。

Kubernetes

定义一个 HTTP 探测,以便 Kubernetes 可以外部监控健康端点。不要使用活动性命令。

HEALTHCHECK

Containerfile 的 HEALTHCHECK 指令定义一个命令,该命令将在容器运行时定期在容器内部执行。Keycloak 容器没有安装任何 CLI HTTP 客户端。请考虑安装 curl 作为附加的 RPM,如 在容器中运行 Keycloak 指南中所述。请注意,由于此原因,您的容器可能不太安全。

可用检查

下表显示了可用的检查。

检查 描述 需要指标

数据库

返回数据库连接池的状态。

对于某些检查,您还需要启用指标,如 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

true, false (默认)

在此页面上