健康检查

极狐GitLab 提供 liveness 和 readiness 探测,指示服务运行状况和所需服务的可达性。这些探测报告数据库连接、Redis 连接和文件系统访问的状态。这些端点可以提供给像 Kubernetes 这样的调度程序,保持流量直到系统准备好或根据需要重新启动容器。

健康检查端点为负载均衡和需要在重定向流量之前确定服务是否可用的 Kubernetes 调度系统所用。

你不应该使用这些端点来确定大型 Kubernetes 部署的有效正常运行时间。这样做可能会显示假阴性结果,当由于自动扩缩容、节点故障或其他正常的、非破坏性的操作需求而移除容器组(pods)时。

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

IP 许可名单

要访问监控资源,需要将请求的客户端 IP 包含在白名单中。

在本地使用端点

使用默认许可名单设置,可以使用以下 URL 从本地主机访问探针:

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

健康

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

GET /-/health

示例请求:

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

示例响应:

GitLab OK

Readiness

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

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

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

示例请求:

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

示例响应:

{
   "master_check":[{
      "status":"failed",
      "message": "unexpected Master check result: false"
   }],
   ...
}

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

该检查免于 Rack Attack。

Liveness

caution 在极狐GitLab 12.4 中,Liveness 检查的响应体已更改,和如下示例中的相匹配。

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

GET /-/liveness

示例请求:

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

示例响应:

成功时,端点返回一个 200 HTTP 状态代码,以及如下所示的响应。

{
   "status": "ok"
}

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

该检查免于 Rack Attack。

Sidekiq

学习如何配置 Sidekiq 健康检查