极狐 GitLab

健康检查

1. Tier: 基础版, 专业版, 旗舰版

1. Offering: 私有化部署

极狐GitLab 提供了存活性和就绪性探测,以指示服务的健康状况和对所需服务的可达性。这些探测报告数据库连接、Redis 连接和文件系统访问的状态。可以将这些端点提供给 Kubernetes 等调度器以在系统准备好之前保持流量,或在需要时重新启动容器。

健康检查端点通常用于负载均衡器和其他 Kubernetes 调度系统,这些系统需要在重定向流量之前确定服务的可用性。

不应使用这些端点来确定大型 Kubernetes 部署的有效运行时间。这样做可能会在自动缩放移除 pod、节点故障或其他正常且不会中断操作的情况下显示假阴性。

要确定大型 Kubernetes 部署的运行时间,请查看 UI 的流量。这是经过适当平衡和调度的,因此是有效运行时间的更好指标。您还可以监控登录页面 /users/sign_in 端点。

在 JihuLab.com 上,使用诸如 Pingdom 和 Apdex 测量工具来确定运行时间。

IP 允许列表#

要访问监控资源,请求的客户端 IP 需要包含在允许列表中。有关详细信息,请参见如何将 IP 添加到监控端点的允许列表

本地使用端点#

使用默认的允许列表设置,可以通过以下 URL 从 localhost 访问探测:

plaintext
GET http://localhost/-/health
plaintext
GET http://localhost/-/readiness
plaintext
GET http://localhost/-/liveness

健康#

检查应用服务器是否正在运行。它不验证数据库或其他服务是否正在运行。此端点绕过 Rails 控制器,并作为附加中间件 BasicHealthCheck 实现,非常早地进入请求处理生命周期。

plaintext
GET /-/health

请求示例:

shell
curl "https://gitlab.example.com/-/health"

响应示例:

plaintext
极狐GitLab OK

就绪#

就绪探测检查极狐GitLab 实例是否准备好通过 Rails 控制器接受流量。默认情况下,检查仅验证实例检查。

如果指定了 all=1 参数,检查还会验证依赖服务(数据库、Redis、Gitaly 等)并为每个服务提供状态。

plaintext
GET /-/readiness GET /-/readiness?all=1

请求示例:

shell
curl "https://gitlab.example.com/-/readiness"

响应示例:

json
1{ 2 "master_check":[{ 3 "status":"failed", 4 "message": "unexpected Master check result: false" 5 }], 6 ... 7}

失败时,端点返回 503 HTTP 状态码。

此检查被 Rack Attack 豁免。

存活性#

在极狐GitLab 12.4 中,存活性检查的响应主体已更改为匹配下面的示例。

检查应用服务器是否正在运行。此探测用于了解 Rails 控制器是否因多线程而未死锁。

plaintext
GET /-/liveness

请求示例:

shell
curl "https://gitlab.example.com/-/liveness"

响应示例:

成功时,端点返回 200 HTTP 状态码,并返回类似于下面的响应。

json
{ "status": "ok" }

失败时,端点返回 503 HTTP 状态码。

此检查被 Rack Attack 豁免。

Sidekiq#

了解如何配置 Sidekiq 健康检查