使用健康检查跟踪实例状态

通过调用其健康 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

您可以使用简单的 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

true, false (默认)

在此页面上