GitLabサーバーのモニタリング / gitlab server monitoring
by
Teraoka Yoshinori
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
GitLabサーバーの モニタリング Yoshinori Teraoka 2019.4.24 GitLab Meetup Tokyo #16 @PLAID
Slide 2
Slide 2 text
自己紹介 エムスリー株式会社 エンジニアリンググループ SREチーム yteraoka yteraoka
Slide 3
Slide 3 text
自己紹介 ◀ これ書きました autoscale runner のことはこ れ読めばだいたいわかる https://www.m3tech.blog/entry/advent-calendar-2018-2
Slide 4
Slide 4 text
エムスリーと GitLab ユーザーの作成日時を見ると 2012年7月~(っぽい) 当然タヌキは昔のやつ 当時はまだ Omnibus package はまだ存在しなかったし、DB は MySQL だった どこかのタイミングで OS 更新に合わせて Omnibus package に変更 現在のプロジェクト数1200超 GitLab CI, GitLab Pages, Review Apps 使ってます
Slide 5
Slide 5 text
今日はモニタリングの話
Slide 6
Slide 6 text
Agenda ● Prometheus の活用 ● 私の欲しかったもの ● gitlab.rb 見てますか?
Slide 7
Slide 7 text
Prometheus Monitoring GitLab with Prometheus https://docs.gitlab.com/ce/administration/monitoring/prometheus/ GitLab 9.0 以降では有効になっているはず 初期は有効にしていると問題があったので弊社ではながらく無効にしていました
Slide 8
Slide 8 text
Prometheus Expoters ● GitLab monitor exporter ○ database (:9168/database) ○ process (:9168/process) ○ sidekiq (:9168/sidekiq) ● Node exporter (:9100/metrics) ● Redis exporter (:9121/metrics) ● Postgres exporter (:9187/metrics) ● Nginx exporter (:8060/metrics) ● Gitaly exporter (:9236/metrics) ● GitLab Sidekiq exporter (:8082/metrics) ● GitLab Workhorse exporter (:9229/metrics) ● GitLab Unicorn (:8080/-/metrics)
Slide 9
Slide 9 text
Grafana Dashboard Grafana Dashboard Repository がある https://gitlab.com/gitlab-org/grafana-dashboards Omnibus package 用 https://gitlab.com/gitlab-org/grafana-dashboards/tree/master/omnibus (でも別にこれ使う必要はないし、必要なものを自分で作ったほうが良い)
Slide 10
Slide 10 text
Overview Dashboard
Slide 11
Slide 11 text
コレジャナイ感... Overview だけじゃなくて他にもいくつかあるし、必要なら自分で Dashboard も作れ ば良いのだが、何かあったら見ればよいメトリクスで、 GitLab で普段見る必要がある ようなものではない 私が欲しかったものは
Slide 12
Slide 12 text
GitLab CI の待ち時間が知りたかった Runner 不足があるなら早く気づいて対処したい (実はまだ autoscale Runner 導入してない) しかし、Job の状況を確認できるメトリクスが見つからない 無かったら作るしかない
Slide 13
Slide 13 text
GitLab CI の待ち時間が知りたかった node_exporter には Textfile Collector という機能があり、デフォルトで --collector.textfile.directory=/var/opt/gitlab/node-exporter/textfile_collector というオプションが指定してある このディレクトリに .prom という拡張子でテキストファイルを置けばメトリクスとして取得 可能になる DB から定期的に取りだしてファイルに書き出すようにしました
Slide 14
Slide 14 text
GitLab CI の待ち時間が知りたかった こんなのが見れるようになった 赤い横線は Grafana のアラートの閾値 GitLab には Prometheus の alertmanager も含まれているが Grafana でやるとグラフ付きで Slack に送れます
Slide 15
Slide 15 text
入門 Prometheus 良さそうな本が出るみたいです 2019/05/18 発売 自分の見たい情報は自分で Dashboard 作るのが良い。 Grafana のサイトに共有されているものが参考になる。
Slide 16
Slide 16 text
モニタリングだけじゃ時間が余りそうなので...
Slide 17
Slide 17 text
gitlab.rb 見てますか? Omnibus package では /etc/gitlab/gitlab.rb にあり chef を使ったセットアップのための 変数定義がされています。 yum update ではこれは更新されずに新機能はデフォルト値でセットアップされます。 カスタマイズしたい場合は /opt/gitlab/etc/gitlab.rb.template をもとに更新しましょう。 Release note に書かれていない新機能が見つかるはずです。
Slide 18
Slide 18 text
S3 利用の拡大 利用者が増えるとストレージの容量を気にする必要がでてきますが S3 もしくはその互換ストレージにファイルを保存できるものが増えてます ● Backup ● LFS ● MergeRequest の diff ● Artifacts (CI の生成物保存) ● Uploads (Avatar 画像や添付ファイル) ● Container registry
Slide 19
Slide 19 text
Rack Attack かつてデフォルトで有効になっていましたが、オンプレ GitLab の導入理由を考えたらデ フォルトでは無効の方が良かったということでしょう。 インターネットに公開する場合は有効にしましょう。
Slide 20
Slide 20 text
Unicorn worker killer GitLab には unicorn worker killer が組み込まれています。かつて、この値が弊社環境 には小さすぎたため頻繁に woker が kill されて遅いという問題がありました。気になる 場合はログを確認して unicorn['worker_memory_limit_min'] unicorn['worker_memory_limit_max'] を調整しましょう。
Slide 21
Slide 21 text
まとめ ● GI の待ち時間を減らしたい ○ 可視化したので効果も見える ○ autoscale させるぞ ● gitlab.rb の差分をちょいちょい見ておくと良いですよ ● GitLab CI (gitlab-ci.yml) のドキュメントもときどき見直すと発見がある