{
"status": "UP",
"checks": []
}
Keycloak 内置了对健康检查的支持。本指南介绍如何启用和使用 Keycloak 健康检查。默认情况下,Keycloak 健康检查在管理端口 9000
上公开。有关更多详细信息,请参阅 配置管理接口
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,请使用任何您想要的方式来访问健康检查端点。
您可以使用简单的 HTTP HEAD 请求来确定 Keycloak 的 live
或 ready
状态。curl
是用于此目的的良好 HTTP 客户端。
如果 Keycloak 部署在容器中,由于前面提到的安全措施,您必须从容器外部运行此命令。例如
curl --head -fsS https://127.0.0.1:9000/health/ready
如果命令返回状态 0,则 Keycloak 处于 live
或 ready
状态,具体取决于您调用的端点。否则,就会出现问题。
定义一个 HTTP 探针,以便 Kubernetes 可以外部监控健康端点。不要使用存活命令。
Containerfile 的 HEALTHCHECK
指令定义了一个将在容器运行时定期在容器内部执行的命令。Keycloak 容器没有安装任何 CLI HTTP 客户端。考虑安装 curl
作为额外的 RPM,如 在容器中运行 Keycloak 指南中所详述。请注意,您的容器可能会因此变得不太安全。