Help us learn about your current experience with the documentation. Take the survey.

Web 导出器(专用指标服务器)

  • 版本:免费版、专业版、旗舰版
  • 产品:GitLab 自管版

通过从主应用服务器单独收集指标,来提升 GitLab 监控的可靠性和性能。专用指标服务器将监控流量与用户请求隔离开来,防止指标收集影响应用性能。

对于中大型安装实例,这种分离可以在使用高峰期提供更一致的数据收集,并降低在高负载期间丢失关键指标的风险。

GitLab 指标收集的工作原理

使用 Prometheus 监控 GitLab时,GitLab 会运行各种收集器,对应用进行采样以获取与使用情况、负载和性能相关的数据。然后,GitLab 可以通过运行一个或多个 Prometheus 导出器,将这些数据提供给 Prometheus 抓取器。Prometheus 导出器是一个 HTTP 服务器,它将指标数据序列化为 Prometheus 抓取器可以理解的格式。

本页面介绍的是 Web 应用指标。 要导出后台作业指标,请了解如何配置 Sidekiq 指标服务器

我们提供两种导出 Web 应用指标的机制:

  • 通过主 Rails 应用。这意味着我们使用的应用服务器 Puma 会通过其自身的 /-/metrics 端点提供指标数据。这是默认方式,在 GitLab 指标 中有详细说明。对于收集的指标量较小的小型 GitLab 安装实例,我们推荐此默认方式。
  • 通过专用指标服务器。启用此服务器会使 Puma 启动一个额外的进程,其唯一职责就是提供指标。对于非常大的 GitLab 安装实例,这种方法能带来更好的故障隔离和性能,但会增加内存使用。我们为中大型且追求高性能和高可用性的 GitLab 安装实例推荐此方法。

专用服务器和 Rails 的 /-/metrics 端点提供相同的数据,因此它们在功能上是等效的,区别仅在于其性能特征。

要启用专用服务器:

  1. 启用 Prometheus

  2. 编辑 /etc/gitlab/gitlab.rb 文件,添加(或找到并取消注释)以下几行。确保 puma['exporter_enabled'] 设置为 true

    puma['exporter_enabled'] = true
    puma['exporter_address'] = "127.0.0.1"
    puma['exporter_port'] = 8083
  3. 使用 GitLab 内置的 Prometheus 时,请确保其 scrape_config 指向 localhost:8083/metrics。关于如何配置抓取器目标,请参考添加自定义抓取配置页面。对于外部 Prometheus 设置,请转而参考使用外部 Prometheus 服务器

  4. 保存文件并重新配置 GitLab以使更改生效。

现在,指标可以从 localhost:8083/metrics 提供并被抓取。

启用 HTTPS

要通过 HTTPS 而不是 HTTP 来提供指标,请在导出器设置中启用 TLS:

  1. 编辑 /etc/gitlab/gitlab.rb 文件,添加(或找到并取消注释)以下几行:

    puma['exporter_tls_enabled'] = true
    puma['exporter_tls_cert_path'] = "/path/to/certificate.pem"
    puma['exporter_tls_key_path'] = "/path/to/private-key.pem"
  2. 保存文件并重新配置 GitLab以使更改生效。

启用 TLS 后,将使用与前面所述相同的 portaddress。指标服务器不能同时提供 HTTP 和 HTTPS 服务。

故障排查

Docker 容器空间不足

Docker 中运行 GitLab 时,您的容器可能会空间不足。如果您启用了某些会增加空间消耗的功能(例如 Web Exporter),就可能会发生这种情况。

要解决此问题,请更新您的 shm-size