{
"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 http://127.0.0.1:9000/health/ready
如果命令返回状态 0,则 Keycloak 为 live
或 ready
,具体取决于您调用的端点。否则存在问题。
定义一个 HTTP 探测,以便 Kubernetes 可以外部监控健康端点。不要使用活动性命令。
Containerfile 的 HEALTHCHECK
指令定义一个命令,该命令将在容器运行时定期在容器内部执行。Keycloak 容器没有安装任何 CLI HTTP 客户端。请考虑安装 curl
作为附加的 RPM,如 在容器中运行 Keycloak 指南中所述。请注意,由于此原因,您的容器可能不太安全。
下表显示了可用的检查。
检查 | 描述 | 需要指标 |
---|---|---|
数据库 |
返回数据库连接池的状态。 |
是 |
对于某些检查,您还需要启用指标,如 Requires Metrics
列所示。要启用指标,请使用以下 metrics-enabled
选项
bin/kc.[sh|bat] build --health-enabled=true --metrics-enabled=true
值 | |
---|---|
|
|