概要
Omnibus Gitlab は内部で Prometheus のプロセスを管理しています
今回は Prometheus サーバを構築しその Prometheus サーバと Gitlab を連携する方法を紹介します
環境
- Ubuntu 18.04
- Omnibus Install Gitlab-ee 13.8.0
- Prometheus 2.24.1
Gitlab 側の exporter の設定
まずは gitlab.rb を編集します
Omnibus Install した Gitlab の場合いろいろな場所に exporter が設置されています
それらすべての exporter を外部に設置する Prometheus からアクセスできるようにします
exporter によって設定する項目がかなりことなるので注意が必要です
192.168.100.10 は外部に設置する Prometheus の IP アドレスになります
vim /etc/gitlab/gitlab.rb
prometheus['enable'] = false
# for gitlab_workhorse_exporter (9229/metrics)
gitlab_workhorse['prometheus_listen_addr'] = "0.0.0.0:9229"
# for gitaly_exporter (9236/metrics)
gitaly['prometheus_listen_addr'] = "0.0.0.0:9236"
# for node_exporter (9100/metrics)
node_exporter['listen_address'] = '0.0.0.0:9100'
# for gitlab_exporter (9168/database, 9168/metrics, 9168/sidekiq)
gitlab_exporter['listen_address'] = '0.0.0.0'
gitlab_exporter['listen_port'] = '9168'
# for redis_exporter (9121/metrics)
# redis_exporter['listen_address'] = '0.0.0.0:9121'
# for postgres_exporter (9187/metrics)
postgres_exporter['listen_address'] = '0.0.0.0:9187'
# for gitlab-sidekiq, gitlab-rails exporter (8082/metrics, 8080/-/metrics)
gitlab_rails['monitoring_whitelist'] = ['127.0.0.0/8', '192.168.100.10']
gitlab_rails['prometheus_address'] = '192.168.100.10:9090'
puma['listen'] = '0.0.0.0'
puma['port'] = 8080
sidekiq['listen_address'] = '0.0.0.0'
# for nginx exporter (8060/metrics)
nginx['status']['options'] = {
"server_tokens" => "off",
"access_log" => "off",
"allow" => "192.168.100.10",
"deny" => "all",
}
設定変更したら reconfigure しましょう
gitlab-ctl reconfigure
ちなみに今回は redis-server はすでに外部に移行しており外部のサーバに exporter を設置していないためコメントアウトしています
もし外部に移行した他のコンポーネントがありかつそこに exporter が設置してある場合は後述する promethues.yml にそこのエンドポイントを記載しましょう
Prometheus サーバの構築
次に Prometheus サーバを構築します
ポイントは外部に公開した Omnibus Gitlab の exporter にちゃんとアクセスできることです
192.168.100.11 は各種 exporter が起動している Omnibus Gitlab の IP になります
もし redis のようにすでに別のインスタンスに移行しておりそこに exporter がある場合はそのエンドポイントを記載しましょう
vim prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
scrape_configs:
- job_name: nginx
static_configs:
- targets:
- 192.168.100.11:8060
- job_name: postgres
static_configs:
- targets:
- 192.168.100.11:9187
- job_name: node
static_configs:
- targets:
- 192.168.100.11:9100
- job_name: gitlab-workhorse
static_configs:
- targets:
- 192.168.100.11:9229
- job_name: gitlab-rails
metrics_path: "/-/metrics"
static_configs:
- targets:
- 192.168.100.11:8080
- job_name: gitlab-sidekiq
static_configs:
- targets:
- 192.168.100.11:8082
- job_name: gitlab_exporter_database
metrics_path: "/database"
static_configs:
- targets:
- 192.168.100.11:9168
- job_name: gitlab_exporter_sidekiq
metrics_path: "/sidekiq"
static_configs:
- targets:
- 192.168.100.11:9168
- job_name: gitlab_exporter_metrics
metrics_path: "/metrics"
static_configs:
- targets:
- 192.168.100.11:9168
- job_name: gitaly
static_configs:
- targets:
- 192.168.100.11:9236
あとは Prometheus サーバを起動します
今回はコンテナで起動していますがプロセスで起動しても OK です
docker run -d -p 9090:9090 -v $(pwd):/prometheus-data prom/prometheus --config.file=/prometheus-data/prometheus.yml
動作確認
Promethues の管理画面にアクセスして Status -> Targets を確認しましょう
すべてのステータスがグリーンになっていれば OK です
Grafana 連携
今回の場合 Promethues は外部に移行しましたが Grafana は相変わらず Omnibus Gitlab と同じ場所にあります
その場合 Grafana は Promethues が同じ場所にあると思って動作し続けるのでうまく動作しません
なので Grafana のデータソースなどを修正する必要があります
なおこの作業は Grafana の admin 権限が必要になるので Omnibus Gitlab の Grafana で admin ログインできるようにしておきましょう (参考)
まずデータソースを新規で作成します
URL には Promethues のエンドポイントを入力しましょう
次に既存のダッシュボードをコピーします
以下では Gitaly のダッシュボードをコピーしています
コピーする理由はデフォルトで用意されている Grafana のダッシュボードは readonly になっているためデータソースなどが変更できないためです
(デフォルトの設定はファイルに記載されているので直接そのファイルを編集してデータソースを変更しても OK かなと思います)
コピーしたダッシュボードのデータソースを変更します
あとはダッシュボード内にあるペインのデータソースも変更します
ダッシュボードのデータソースを変更してもペイン側は自動で書き換わらないので手動でそれぞれのペインのデータソースも変更します
こんな感じでデータが見えるようになれば OK です
BadGateway が出る場合はデータソースが正しく追加されていない可能性があります
Garafana から Promethues のエンドポイントにうまく疎通できているか確認してから再度データソースを追加してみてください
0 件のコメント:
コメントを投稿