シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

GitLab Runner(Windows)の稼働状況をGrafanaのダッシュボードで確認する

シナプスの技術部 システム開発課の蔵坪と申します。

GitLab CEには、GrafanaとPrometheusが標準バンドルされており、最初から有効になっております。何も設定しなくてもGrafanaのダッシュボードでGitLabの状況を確認できるようになっておりますが、今回、Grafanaのダッシュボードに、GitLab Runnerを追加する手順を紹介したいと思います。

Grafanaとは

オープンソースの分析プラットフォームです。簡単にダッシュボードを作成できチーム間で共有することができます。

Grafana: The open observability platform | Grafana Labs

Prometheusとは

オープンソース監視ソリューションです。

Prometheus - Monitoring system & time series database

参考にしたサイト

この記事は、下記のサイトを参考に記載しております。

今回の環境

名称 バージョン
GitLabサーバのOS Ubuntu 18.04.3 LTS
GitLab GitLab Community Edition 13.2.4
GitLab RunnerのOS Windows 10 Pro 2004
GitLab Runner gitlab-runner13.1.1
GitLab RunnerのPrometheusエクスポーター windows_exporter 0.13.0
f:id:mkuratsubo:20200818164848p:plain
構成

GitLab Runnerサーバ(Windows 10)

Prometheusから、GitLab Runnerサーバを監視するために、Gitlab Runnerの設定変更と、windows_exporterをインストールします。

Gitlab Runnerのconfig.tomlの設定変更

Gitlab Runnerは、標準でPrometheusメトリックHTTPサーバーが組み込まれておりますので、外部からアクセスできるようにconfig.tomlの先頭のセッションにlisten_addressを追記します。

config.toml

listen_address = ":9252"

windows_exporterのインストール

下記サイトよりインストーラをダウンロードしてインストールします。

github.com

ファイヤウォールの設定変更

GitLabサーバ上で動作しているPrometheusからGitLab Runnserサーバに対してアクセスがありますので、ファイヤーウォールの設定を変更してGitLabサーバから接続できるようにします。

f:id:mkuratsubo:20200818143026p:plain
リソースモニター

動作確認

GitLab Runnerのメトリック情報を確認します。GitLab Runnerに関する情報が取得できます。

$ curl http://$GitLab Runnerのホスト:9252/metrics 
# HELP gitlab_runner_api_request_statuses_total The total number of api requests, partitioned by runner, endpoint and status.
# TYPE gitlab_runner_api_request_statuses_total counter
gitlab_runner_api_request_statuses_total{endpoint="patch_trace",runner="JtBTkJvz",status="202"} 126
gitlab_runner_api_request_statuses_total{endpoint="patch_trace",runner="zAAPzDkj",status="202"} 188
gitlab_runner_api_request_statuses_total{endpoint="request_job",runner="5zzzR8z1",status="204"} 82607
gitlab_runner_api_request_statuses_total{endpoint="request_job",runner="JtBTkJvz",status="201"} 26
gitlab_runner_api_request_statuses_total{endpoint="request_job",runner="JtBTkJvz",status="204"} 82607
gitlab_runner_api_request_statuses_total{endpoint="request_job",runner="zAAPzDkj",status="201"} 74

GitLab RunnerのOSのメトリック情報を確認します。今回はWindowsに関する情報(メモリ/CPU/etc)が取得できます。

$ curl http://$GitLab Runnerのホスト:9182/metrics 
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
go_gc_duration_seconds{quantile="0.5"} 0
go_gc_duration_seconds{quantile="0.75"} 0
go_gc_duration_seconds{quantile="1"} 0.0050649
go_gc_duration_seconds_sum 8.9192302
go_gc_duration_seconds_count 59955
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 12
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.13.3"} 1
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.

Prometheusの設定変更

Prometheusの設定ファイルを変更するのではなく、GitLabサーバ上のgitlab.rbを編集します。

prometheus['scrape_configs'] = [
  {
    'job_name': 'gitlab-runner',
    'static_configs' => [
      'targets' => ['$GitLab RunnerのIP:9252'],
    ],
  },
  {
    'job_name': 'gitlab-runner-server',
    'static_configs' => [
      'targets' => ['$GitLab RunnerのIP:9182'],
    ],
  },
]

Grafana

Grafanaの設定変更も、GitLabサーバ上のgitlab.rbを編集します。

Grafanaにadminアカウントでログインできるようにする

Grafanaへのログインは、下記のURLから可能です。

http://$GitLabサーバのホスト/-/grafana/login

Grafanaは、Gitlabに登録されているアカウントでログインできますが、このアカウントにはダッシュボードを操作できる権限がありません。Grafanaでダッシュボードを操作するために、Grafanaにadminアカウントでログインできるようにに、次の行を/etc/gitlab/gitlab.rbファイルに追加します。

grafana['disable_login_form'] = false

GItLab サーバの再読み込みします。

$ sudo gitlab-ctl reconfigure

Grafanaにadminアカウントでログインする

Grafanaのログイン画面にアクセスしadminユーザでログインします。ユーザ名はadmin、パスワードはadminになります。

f:id:mkuratsubo:20200818151801p:plain
Grafanaログイン

admin/adminでログイン出来ない場合は、下記コマンドでGrafanaのadminのパスワードを再設定してください。

sudo gitlab-ctl set-grafana-password

GitLab Runnerのダッシュボードの追加

Grafanaサイト上で、ダッシュボードのテンプレートが公開されており、今回はGrafanaサイト上で公開されているテンプレートを利用しダッシュボードを作成します。

https://grafana.com/grafana/dashboards/9631

Grafanaにadminでログイン後、+マークで、インポートを選択し、Import via grafana.comで、テンプレートのIDの9631を指定し、loadボタンをクリックします。

f:id:mkuratsubo:20200818153526p:plain
Import

Prometheusで、GitLab Ommnibusを選択し、Importをクリックします。

f:id:mkuratsubo:20200818153939p:plain
Import

GitLab Runnerのダッシュボードが作成されました。

f:id:mkuratsubo:20200818154246p:plain
GitLab Runnerのダッシュボード

GitLab Runnerサーバのダッシュボードの追加

今度は、windows_exporter用のテンプレートを利用し、ダッシュボードを追加します。

Windows Node (fixed for v0.13.0+) dashboard for Grafana | Grafana Labs

f:id:mkuratsubo:20200818155205p:plain
GitLab Runnerサーバのダッシュボード

GitLab Runnerサーバのダッシュボードが作成されました。以上で設定完了になります。

さいごに

GrafanaとPrometheusは、今回初めて触ったのですが、簡単に見た目のいいダッシュボードが追加できることに感動しました。今回は、ダッシュボードで確認できるまでの紹介になりましたが、Prometheusメトリクスのアラートを設定することで、特定の条件で通知することも可能ですので、色々試してみたいと思っています。

Set up alerts for Prometheus metrics | GitLab