Monitoring GitLab with Prometheus
原文:https://docs.gitlab.com/ee/administration/monitoring/prometheus/
- Overview
- Configuring Prometheus
- Viewing performance metrics
- Prometheus as a Grafana data source
- GitLab metrics
- Bundled software metrics
- Configuring Prometheus to monitor Kubernetes
Monitoring GitLab with Prometheus
Notes:
- 本页中列出的 Prometheus 和各种出口商都捆绑在 Omnibus GitLab 软件包中. 查看每个出口商的文档以了解添加的时间表. 对于源安装,您必须自己安装. 在后续版本中,将捕获其他的 GitLab 指标.
- GitLab 9.0 默认情况下会启用 Prometheus 服务.
- Prometheus 及其出口商不对用户进行身份验证,任何可以访问它们的人都可以使用.
Prometheus是一项功能强大的时间序列监视服务,为监视 GitLab 和其他软件产品提供了灵活的平台. GitLab 提供了 Prometheus 的开箱即用监视功能,可轻松访问 GitLab 服务的高质量时间序列监视.
Overview
Prometheus 的工作方式是定期连接到数据源,并通过各种出口商收集其绩效指标. 要查看和使用监视数据,您可以直接连接到 Prometheus或使用仪表板工具(例如Grafana) .
Configuring Prometheus
注意:对于源安装,您必须自己安装和配置.
从 GitLab 9.0 开始,Prometheus 及其出口商默认情况下处于打开状态. Prometheus 将以gitlab-prometheus
用户身份运行,并监听http://localhost:9090
. 默认情况下,只能从 GitLab 服务器本身访问 Prometheus. 除非单独禁用,否则每个出口商将自动设置为 Prometheus 的监视目标.
要禁用 Prometheus 及其所有出口商以及将来添加的任何出口商,请执行以下操作:
- Edit
/etc/gitlab/gitlab.rb
添加或查找并取消注释以下行,确保将其设置为
false
:prometheus_monitoring['enable'] = false
保存文件并重新配置 GitLab,以使更改生效.
Changing the port and address Prometheus listens on
注意: Omnibus GitLab 8.17 中添加了以下更改. 尽管可能,但不建议更改 Prometheus 监听的端口,因为这可能会影响 GitLab 服务器上运行的其他服务或与之冲突. 继续需要您自担风险.
为了从 GitLab 服务器外部访问 Prometheus,您需要在prometheus['listen_address']
设置 FQDN 或 IP. 更改 Prometheus 监听的地址/端口:
- Edit
/etc/gitlab/gitlab.rb
添加或查找并取消注释以下行:
prometheus['listen_address'] = 'localhost:9090'
将
localhost:9090
替换为您希望 Prometheus 监听的地址或端口. 如果要允许除localhost
以外的其他主机访问 Prometheus,请忽略该主机,或使用0.0.0.0
允许公共访问:prometheus['listen_address'] = ':9090'
# or
prometheus['listen_address'] = '0.0.0.0:9090'
保存文件并重新配置 GitLab,以使更改生效
Adding custom scrape configurations
您可以使用Prometheus 刮擦目标配置语法在/etc/gitlab/gitlab.rb
编辑prometheus['scrape_configs']
, /etc/gitlab/gitlab.rb
为 Omnibus GitLab 捆绑的 Prometheus 配置其他刮擦目标.
这是刮取http://1.1.1.1:8060/probe?param_a=test¶m_b=additional_test
的示例配置:
prometheus['scrape_configs'] = [
{
'job_name': 'custom-scrape',
'metrics_path': '/probe',
'params' => {
'param_a' => ['test'],
'param_b' => ['additional_test']
},
'static_configs' => [
'targets' => ['1.1.1.1:8060'],
],
},
]
Using an external Prometheus server
注意: Prometheus 和大多数导出器不支持身份验证. 我们不建议将它们公开在本地网络之外.
需要进行一些配置更改,才能由外部 Prometheus 服务器监视 GitLab. 对于具有多个节点的 GitLab 部署,建议使用外部服务器.
要使用外部 Prometheus 服务器:
- Edit
/etc/gitlab/gitlab.rb
. 禁用捆绑的 Prometheus:
prometheus['enable'] = false
将每个捆绑服务的导出器设置为侦听网络地址,例如:
gitlab_exporter['listen_address'] = '0.0.0.0'
sidekiq['listen_address'] = '0.0.0.0'
gitlab_exporter['listen_port'] = '9168'
node_exporter['listen_address'] = '0.0.0.0:9100'
redis_exporter['listen_address'] = '0.0.0.0:9121'
postgres_exporter['listen_address'] = '0.0.0.0:9187'
gitaly['prometheus_listen_addr'] = "0.0.0.0:9236"
gitlab_workhorse['prometheus_listen_addr'] = "0.0.0.0:9229"
如有必要,请使用官方安装说明安装并设置专用的 Prometheus 实例.
将 Prometheus 服务器 IP 地址添加到监视 IP 白名单 . 例如:
gitlab_rails['monitoring_whitelist'] = ['127.0.0.0/8', '192.168.0.1']
在所有 GitLab Rails(Puma / Unicorn,Sidekiq)服务器上,设置 Prometheus 服务器 IP 地址和监听端口. 例如:
gitlab_rails['prometheus_address'] = '192.168.0.1:9090'
要抓取 NGINX 指标,您还需要配置 NGINX 以允许 Prometheus 服务器 IP. 例如:
nginx['status']['options'] = {
"server_tokens" => "off",
"access_log" => "off",
"allow" => "192.168.0.1",
"deny" => "all",
}
重新配置 GitLab以应用更改.
- 编辑 Prometheus 服务器的配置文件.
将每个节点的导出器添加到 Prometheus 服务器的抓取目标配置中 . 例如,使用
static_configs
的样本片段:scrape_configs:
- job_name: nginx
static_configs:
- targets:
- 1.1.1.1:8060
- job_name: redis
static_configs:
- targets:
- 1.1.1.1:9121
- job_name: postgres
static_configs:
- targets:
- 1.1.1.1:9187
- job_name: node
static_configs:
- targets:
- 1.1.1.1:9100
- job_name: gitlab-workhorse
static_configs:
- targets:
- 1.1.1.1:9229
- job_name: gitlab-rails
metrics_path: "/-/metrics"
static_configs:
- targets:
- 1.1.1.1:8080
- job_name: gitlab-sidekiq
static_configs:
- targets:
- 1.1.1.1:8082
- job_name: gitlab_exporter_database
metrics_path: "/database"
static_configs:
- targets:
- 1.1.1.1:9168
- job_name: gitlab_exporter_sidekiq
metrics_path: "/sidekiq"
static_configs:
- targets:
- 1.1.1.1:9168
- job_name: gitlab_exporter_process
metrics_path: "/process"
static_configs:
- targets:
- 1.1.1.1:9168
- job_name: gitaly
static_configs:
- targets:
- 1.1.1.1:9236
重新加载 Prometheus 服务器.
Viewing performance metrics
您可以访问http://localhost:9090
,以获取 Prometheus 默认提供的仪表板.
注意:如果在您的 GitLab 实例上启用了 SSL,由于HSTS,如果使用相同的 FQDN,则可能无法在与 GitLab 相同的浏览器上访问 Prometheus. 我们计划通过 GitLab 提供访问 ,但是在此期间,有一些解决方法:使用单独的 FQDN,使用服务器 IP,使用单独的 Prometheus 浏览器,重置 HSTS 或使用NGINX 代理 .
Prometheus 收集的性能数据可以在 Prometheus 控制台中直接查看,也可以通过兼容的仪表板工具查看. Prometheus 界面提供了一种灵活的查询语言 ,可与收集的数据一起使用,您可以在其中可视化输出. 要获得功能更全面的仪表板,可以使用 Grafana 并已对 Prometheus 进行了官方支持 .
普罗米修斯样本查询:
- 可用内存百分比:
((node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) or ((node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) / node_memory_MemTotal_bytes)) * 100
- CPU 使用率百分比:
1 - avg without (mode,cpu) (rate(node_cpu_seconds_total{mode="idle"}[5m]))
- 传输的数据:
rate(node_network_transmit_bytes_total{device!="lo"}[5m])
- 收到的数据:
rate(node_network_receive_bytes_total{device!="lo"}[5m])
Prometheus as a Grafana data source
Grafana 允许您导入 Prometheus 性能指标作为数据源,并将指标呈现为图形和仪表板,这有助于可视化.
To add a Prometheus dashboard for a single server GitLab setup:
- 在 Grafana 中创建一个新的数据源.
- 命名您的数据源(如 GitLab).
- 在类型下拉框中选择
Prometheus
. - 将您的 Prometheus 侦听地址添加为 URL,并设置对
Browser
访问权限. - 将 HTTP 方法设置为
GET
. - 保存并测试您的配置以验证其是否有效.
GitLab metrics
在 GitLab 9.3 中引入.
GitLab 监视其自身的内部服务指标,并使其在/-/metrics
端点可用. 与其他导出器不同,此终结点需要身份验证,因为它可以在与用户流量相同的 URL 和端口上使用.
➔ Read more about the GitLab Metrics.
Bundled software metrics
Omnibus GitLab 中捆绑的许多 GitLab 依赖项都已预先配置为导出 Prometheus 指标.
Node exporter
节点导出器允许您测量各种机器资源,例如内存,磁盘和 CPU 利用率.
Read more about the node exporter.
Redis exporter
Redis 导出器允许您测量各种 Redis 指标.
Read more about the Redis exporter.
PostgreSQL exporter
PostgreSQL 导出器允许您测量各种 PostgreSQL 指标.
Read more about the PostgreSQL exporter.
PgBouncer exporter
PgBouncer 导出器允许您测量各种 PgBouncer 指标.
Read more about the PgBouncer exporter.
Registry exporter
注册表导出器允许您测量各种注册表指标.
Read more about the Registry exporter.
GitLab exporter
GitLab 导出器允许您测量从 Redis 和数据库中提取的各种 GitLab 指标.
Read more about the GitLab exporter.
Configuring Prometheus to monitor Kubernetes
版本历史
- 在 GitLab 9.0 中引入.
- 在 GitLab 9.4 中引入了 Pod 监控.
如果您的 GitLab 服务器在 Kubernetes 中运行,则 Prometheus 将从群集中的节点和带注释的 Pod 收集指标,包括每个容器上的性能数据. 如果您的 CI / CD 环境在同一群集中运行,这将特别有用,因为您可以使用Prometheus 项目集成来监视它们.
要禁用对 Kubernetes 的监视:
- Edit
/etc/gitlab/gitlab.rb
. 添加(或查找并取消注释)以下行并将其设置为
false
:prometheus['monitor_kubernetes'] = false
保存文件并重新配置 GitLab,以使更改生效.