使用代理将Omnibus GitLab的exporter集成到外部的Prometheus进行监控
由于我是第一次写,请轻点批评~
GitLab内置了Prometheus和各种导出器,但是如果要从外部的Prometheus访问,就需要对每个导出器进行单独配置。为了省事起见,可以使用exporter-exporter(导出器代理)进行操作。
※ 诚实地说,无论选择哪一种方式,所需的工作量都是一样的。
如果你不太想在防火墙上开放太多的端口,这可能是一个好选择。
最终配置
-
- Ubuntu (GitLab用)
GitLab Omnibus
exporter-exporter (systemdで管理)
その他お好みでExporter
Ubuntu(監視用)
Prometheus
alertmanager
Grafana
请参考官方文档或前辈们的文章,关于GitLab Omnibus的安装并没有在这里提及。
如果在exporter_exporter等情况下不通过反向代理使用gitlab.rb的*_exporter[‘listen-address’] = localhost:*,则需要编辑该文件,并允许外部prometheus主机的设置。
请参考
GitLab 的配置文件
禁用内置的Prometheus, alertmanager和Grafana。
$ vim /etc/gitlab/gitlab.rb
# ...前略
################################################################################
## Prometheus
##! Docs: https://docs.gitlab.com/ee/administration/monitoring/prometheus/
################################################################################
# ...中略
prometheus['enable'] = false
# ...中略
################################################################################
## Prometheus Alertmanager
################################################################################
alertmanager['enable'] = false
# ...中略
################################################################################
## Grafana Dashboards
##! Docs: https://docs.gitlab.com/ee/administration/monitoring/prometheus/#prometheus-as-a-grafana-data-source
################################################################################
grafana['enable'] = false
# ...後略
出口商-出口商
GitHub 的中文释义是”代码托管平台”。
从发布到下载
这次是Ubuntu操作系统,所以使用的是linux-amd64版本。
# DLして解凍
$ wget https://github.com/QubitProducts/exporter_exporter/releases/download/v0.4.5/exporter_exporter-0.4.5.linux-amd64.tar.gz
$ tar xf exporter_exporter-0.4.5.linux-amd64.tar.gz
将二进制文件放置
$ cp ./exporter_exporter-0.4.5.linux-amd64/exporter_exporter /usr/local/bin
创建config文件
由于本次使用的是gitlab-ce,所以我已经将pgbouncer_exporter注释掉了。
$ vim /etc/prometheus/expexp.yml
modules:
################################################################################
## Managed by GitLab Omnibus
################################################################################
redis:
method: http
http:
port: 9121
postgres:
method: http
http:
port: 9187
node:
method: http
http:
port: 9100
gitlab-workhorse:
method: http
http:
port: 9229
gitlab-rails:
method: http
http:
port: 8080
path: '/-/metrics'
gitlab-sidekiq:
method: http
http:
port: 8082
gitlab_exporter_database:
method: http
http:
port: 9168
path: '/database'
gitlab_exporter_sidekiq:
method: http
http:
port: 9168
path: '/sidekiq'
gitlab_exporter_ruby:
method: http
http:
port: 9168
path: '/ruby'
gitaly:
method: http
http:
port: 9236
# pgbouncer:
# method: http
# http:
# port: 9188
使用systemd进行管理
Unit 文件
$ vim /lib/systemd/system/prometheus-exporter-exporter.service
[Unit]
Description=Exporter Exporter - prometheus exporter proxy
Documentation=https://github.com/QubitProducts/exporter_exporter
After=network-online.target
[Service]
ExecStart=/usr/local/bin/exporter_exporter -config.file '/etc/prometheus/expexp.yaml'
ExecStop=/bin/kill -TERM ${MAINPID}
ExecReload=/bin/kill -HUP ${MAINPID}
[Install]
WantedBy=multi-user.target
进行
# Unitファイルを読み込ませる
$ systemctl daemon-reload
# 実行
$ systemctl start prometheus-exporter-exporter.service
$ systemctl status prometheus-exporter-exporter.service
$ curl localhost:9999
<h2>Exporters:</h2>
<ul>
<li><a href="/proxy?module=gitaly">gitaly</a></li>
<li><a href="/proxy?module=gitlab-rails">gitlab-rails</a></li>
<li><a href="/proxy?module=gitlab-sidekiq">gitlab-sidekiq</a></li>
<li><a href="/proxy?module=gitlab-workhorse">gitlab-workhorse</a></li>
<li><a href="/proxy?module=gitlab_exporter_database">gitlab_exporter_database</a></li>
<li><a href="/proxy?module=gitlab_exporter_ruby">gitlab_exporter_ruby</a></li>
<li><a href="/proxy?module=gitlab_exporter_sidekiq">gitlab_exporter_sidekiq</a></li>
<li><a href="/proxy?module=node">node</a></li>
<li><a href="/proxy?module=postgres">postgres</a></li>
<li><a href="/proxy?module=redis">redis</a></li>
</ul>
您可以通过标签的URI来查看每个导出器的度量标准。
普罗米修斯
在接下来,我们会在一个专为监控而建的主机上进行构建,而不是在运行GitLab的主机上。
$ apt install prometheus alertmanager
$ vim /etc/prometheus/prometheus.yml
请将gitlab.example.com替换为安装了GitLab和exporter_exporter的主机的域名或IP地址。
global:
scrape_interval: 15s
scrape_timeout: 15s
external_labels: {}
remote_read: []
remote_write: []
rule_files: []
alerting:
alertmanagers:
- static_configs:
- targets:
- 127.0.0.1:9093
scrape_configs:
################################################################################
## Prometheus
################################################################################
- job_name: prometheus
static_configs:
- targets:
- 127.0.0.1:9090
################################################################################
## Managed by gitlab-ce
################################################################################
- job_name: redis
metrics_path: /proxy
params:
module:
- redis
static_configs:
- targets:
- gitlab.example.com:9999
- job_name: postgres
metrics_path: /proxy
params:
module:
- postgres
static_configs:
- targets:
- gitlab.example.com:9999
- job_name: node
metrics_path: /proxy
params:
module:
- node
static_configs:
- targets:
- gitlab.example.com:9999
- job_name: gitlab-workhorse
metrics_path: /proxy
params:
module:
- gitlab-workhorse
static_configs:
- targets:
- gitlab.example.com:9999
- job_name: gitlab-rails
metrics_path: /proxy
params:
module:
- gitlab-rails
static_configs:
- targets:
- gitlab.example.com:9999
- job_name: gitlab-sidekiq
metrics_path: /proxy
params:
module:
- gitlab-sidekiq
static_configs:
- targets:
- gitlab.example.com:9999
- job_name: gitlab_exporter_database
metrics_path: /proxy
params:
module:
- gitlab_exporter_database
static_configs:
- targets:
- gitlab.example.com:9999
- job_name: gitlab_exporter_sidekiq
metrics_path: /proxy
params:
module:
- gitlab_exporter_sidekiq
static_configs:
- targets:
- gitlab.example.com:9999
- job_name: gitlab_exporter_ruby
metrics_path: /proxy
params:
module:
- gitlab_exporter_ruby
static_configs:
- targets:
- gitlab.example.com:9999
- job_name: gitaly
metrics_path: /proxy
params:
module:
- gitaly
static_configs:
- targets:
- gitlab.example.com:9999
# - job_name: pgbouncer
# metrics_path: /proxy
# params:
# module:
# - pgbouncer
# static_configs:
# - targets:
# - gitlab.example.com:9999
$ systemctl restart prometheus
监视本身在这方面完成!
Grafana 可以用中文翻译为 “格拉法纳”
$ apt install grafana
将仪表盘迁移至其他地方
在GitLab Omnibus的Grafana中已经准备了仪表板,因此我们将对它们进行修改并移植。
原始文件的位置
– /var/opt/gitlab/provisioning
– /opt/gitlab/embedded/service/grafana-dashboards
将数据源和仪表盘定义文件放置在/etc/grafana/provisioning中,配置如下。
GitHub -> GitHub (GitHub)
将PromQL实例的端口指定更改为用于exporter_exporter的9999端口。
/etc/grafana
└── provisioning
├── dashboard_options
│ └── gitlab_omnibus
│ ├── gitaly.json
│ ├── overview.json
│ ├── postgresql.json
│ ├── rails-app.json
│ ├── redis.json
│ └── service_platform_metrics.json
├── dashboards
│ └── gitlab_dashboards.yml
└── datasources
└── gitlab_datasources.yml
$ systemctl restart grafana-server.service
搬移完成啦!
GitLab Omnibus中包含了许多内置组件,每个组件都有许多配置文件,这让我找寻它们非常有趣!
参考/仓库
使用Prometheus监控GitLab。
量子比特产品/出口商_出口商