シナプスの技術部 システム開発課の蔵坪と申します。
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 Runner monitoring | GitLab
- Monitoring GitLab with Prometheus | GitLab
- Grafana Dashboard Service | GitLab
今回の環境
名称 | バージョン |
---|---|
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 |
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のインストール
下記サイトよりインストーラをダウンロードしてインストールします。
ファイヤウォールの設定変更
GitLabサーバ上で動作しているPrometheusからGitLab Runnserサーバに対してアクセスがありますので、ファイヤーウォールの設定を変更してGitLabサーバから接続できるようにします。
動作確認
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になります。
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ボタンをクリックします。
Prometheusで、GitLab Ommnibusを選択し、Importをクリックします。
GitLab Runnerのダッシュボードが作成されました。
GitLab Runnerサーバのダッシュボードの追加
今度は、windows_exporter用のテンプレートを利用し、ダッシュボードを追加します。
Windows Node (fixed for v0.13.0+) dashboard for Grafana | Grafana Labs
GitLab Runnerサーバのダッシュボードが作成されました。以上で設定完了になります。
さいごに
GrafanaとPrometheusは、今回初めて触ったのですが、簡単に見た目のいいダッシュボードが追加できることに感動しました。今回は、ダッシュボードで確認できるまでの紹介になりましたが、Prometheusメトリクスのアラートを設定することで、特定の条件で通知することも可能ですので、色々試してみたいと思っています。