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 端点提供相同的数据,因此它们在功能上是等效的,区别仅在于其性能特征。
要启用专用服务器:
-
编辑
/etc/gitlab/gitlab.rb文件,添加(或找到并取消注释)以下几行。确保puma['exporter_enabled']设置为true:puma['exporter_enabled'] = true puma['exporter_address'] = "127.0.0.1" puma['exporter_port'] = 8083 -
使用 GitLab 内置的 Prometheus 时,请确保其
scrape_config指向localhost:8083/metrics。关于如何配置抓取器目标,请参考添加自定义抓取配置页面。对于外部 Prometheus 设置,请转而参考使用外部 Prometheus 服务器。 -
保存文件并重新配置 GitLab以使更改生效。
现在,指标可以从 localhost:8083/metrics 提供并被抓取。
启用 HTTPS
要通过 HTTPS 而不是 HTTP 来提供指标,请在导出器设置中启用 TLS:
-
编辑
/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" -
保存文件并重新配置 GitLab以使更改生效。
启用 TLS 后,将使用与前面所述相同的 port 和 address。指标服务器不能同时提供 HTTP 和 HTTPS 服务。
故障排查
Docker 容器空间不足
在 Docker 中运行 GitLab 时,您的容器可能会空间不足。如果您启用了某些会增加空间消耗的功能(例如 Web Exporter),就可能会发生这种情况。
要解决此问题,请更新您的 shm-size。