Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitLabサーバーのモニタリング / gitlab server monitoring

GitLabサーバーのモニタリング / gitlab server monitoring

GitLab server monitoring with Prometheus.
And some server configurations.

Teraoka Yoshinori

April 24, 2019
Tweet

More Decks by Teraoka Yoshinori

Other Decks in Technology

Transcript

  1. エムスリーと GitLab
 ユーザーの作成日時を見ると 2012年7月~(っぽい) 当然タヌキは昔のやつ 当時はまだ Omnibus package はまだ存在しなかったし、DB は

    MySQL だった どこかのタイミングで OS 更新に合わせて Omnibus package に変更 現在のプロジェクト数1200超 GitLab CI, GitLab Pages, Review Apps 使ってます
  2. 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)
  3. Grafana Dashboard
 Grafana Dashboard Repository がある https://gitlab.com/gitlab-org/grafana-dashboards Omnibus package 用

    https://gitlab.com/gitlab-org/grafana-dashboards/tree/master/omnibus (でも別にこれ使う必要はないし、必要なものを自分で作ったほうが良い)
  4. GitLab CI の待ち時間が知りたかった
 node_exporter には Textfile Collector という機能があり、デフォルトで --collector.textfile.directory=/var/opt/gitlab/node-exporter/textfile_collector というオプションが指定してある

    このディレクトリに .prom という拡張子でテキストファイルを置けばメトリクスとして取得 可能になる DB から定期的に取りだしてファイルに書き出すようにしました
  5. GitLab CI の待ち時間が知りたかった
 こんなのが見れるようになった 
 
 赤い横線は Grafana のアラートの閾値 


    
 GitLab には Prometheus の alertmanager も含まれているが Grafana でやるとグラフ付きで Slack に送れます 

  6. gitlab.rb 見てますか?
 Omnibus package では /etc/gitlab/gitlab.rb にあり chef を使ったセットアップのための 変数定義がされています。

    yum update ではこれは更新されずに新機能はデフォルト値でセットアップされます。 カスタマイズしたい場合は /opt/gitlab/etc/gitlab.rb.template をもとに更新しましょう。 Release note に書かれていない新機能が見つかるはずです。
  7. Unicorn worker killer
 GitLab には unicorn worker killer が組み込まれています。かつて、この値が弊社環境 には小さすぎたため頻繁に

    woker が kill されて遅いという問題がありました。気になる 場合はログを確認して unicorn['worker_memory_limit_min'] unicorn['worker_memory_limit_max'] を調整しましょう。
  8. まとめ
 • GI の待ち時間を減らしたい ◦ 可視化したので効果も見える ◦ autoscale させるぞ •

    gitlab.rb の差分をちょいちょい見ておくと良いですよ • GitLab CI (gitlab-ci.yml) のドキュメントもときどき見直すと発見がある