LoginSignup
30
33

More than 1 year has passed since last update.

オンプレGitlabの障害対応

Last updated at Posted at 2021-11-03

趣旨

「Gitlabが動かなくなった!」と誰かが叫んだら。

Gitlabは経験上、安定して何年も稼働します。それだけに、何かトラブルが発生した時にどこから手を付けて良いのか途方にくれることがあります。そんなあなたに役立つ記事です。
トラブルが発生した時にこの記事を思い出していただければ嬉しいです。

便利な日本語情報サイト

下記のサイトは必見です!

GitLab日本語情報サイト
https://www.gitlab.jp/links/

GitLab日本語情報サイトは、GitLabの情報を日本語で発信するために個人で立ち上げたコミュニティサイトです。

Qiitaのコミュニティサイト
https://qiita.com/organizations/gitlab-jp

今回の動作環境

CentOS Linux release 7.9.2009
Gitlab 14.4.1

トラブルシューティングの初動

まずは基本的なサーバの状態確認を。さんざん調査した後、単なるディスクの容量不足だったことに最後に気づくと悲しいので・・・。

top   #どのプロセスがいちばん動作しているのか
df -h #ディスク容量が足りているか
tail /var/log/secure #念のためログイン履歴を確認

Gitlab のバージョンを確認したい

grep gitlab /opt/gitlab/version-manifest.txt を使うと、Gitlabが停止していてもバージョンを確認できます。

[root@*** ~]# grep gitlab /opt/gitlab/version-manifest.txt
gitlab-ce 14.4.1
gitlab-config-template       14.4.1                                     
gitlab-cookbooks             14.4.1                                     
gitlab-ctl                   14.4.1                                     
gitlab-exporter              11.2.0                                     
gitlab-healthcheck           90e6447aeead4a29ac9fffc15945ce6b           
gitlab-kas                   v14.4.0                                    git:8b11694dd188b58234e776e3b0bad604145041b3                              
gitlab-pages                 v1.46.0                                    git:5e86747b6287381e2f23afe837ede1820876cf8d                              
gitlab-psql                  7e11364159031db0eb55867ad3d5713b           
gitlab-rails                 v14.4.1                                    git:1a23d731c9f1149b8be1f16a1d781490df288f18                              
gitlab-redis-cli             8866b9c12e308342bc148a794f5cc166           
gitlab-scripts               14.4.1                                     
gitlab-selinux               14.4.1                                     
gitlab-shell                 v13.21.1                                   git:593961bae309e92e9bff550d0231092f44813b06                              
registry                     v3.11.1-gitlab                             git:6d4f158b13bd8528e271f82c56f6af46bb27e6e5     

Gitlab のデーモン(常駐プログラム)類の動作状況の把握

sudo gitlab-ctl status とすると、デーモンが正常動作しているかどうかを確認できます。 ここで "run" ではなく "down" となっていたら、そのデーモンは停止しています。

本家docs:https://docs.gitlab.com/omnibus/maintenance/

[root@*** ~]# gitlab-ctl status
run: alertmanager: (pid 25229) 79250s; run: log: (pid 1132) 86984s
run: gitaly: (pid 25247) 79249s; run: log: (pid 1140) 86984s
run: gitlab-exporter: (pid 28452) 78338s; run: log: (pid 1134) 86984s
run: gitlab-pages: (pid 28434) 78340s; run: log: (pid 31761) 84881s
run: gitlab-workhorse: (pid 28418) 78340s; run: log: (pid 1135) 86984s
run: grafana: (pid 25289) 79247s; run: log: (pid 1125) 86984s
run: logrotate: (pid 6399) 44s; run: log: (pid 1137) 86984s
run: nginx: (pid 28427) 78340s; run: log: (pid 1123) 86984s
run: node-exporter: (pid 25315) 79246s; run: log: (pid 1124) 86984s
run: postgres-exporter: (pid 25321) 79245s; run: log: (pid 1138) 86984s
run: postgresql: (pid 25330) 79244s; run: log: (pid 1131) 86984s
run: prometheus: (pid 25343) 79244s; run: log: (pid 1126) 86984s
run: puma: (pid 28660) 78308s; run: log: (pid 1130) 86984s
run: redis: (pid 25362) 79243s; run: log: (pid 1151) 86984s
run: redis-exporter: (pid 25371) 79242s; run: log: (pid 1129) 86984s
run: registry: (pid 28442) 78339s; run: log: (pid 1122) 86984s
run: sidekiq: (pid 28322) 78374s; run: log: (pid 1127) 86984s

とりあえずリスタートする場合

(状況と場合によってはバックアップが先になる場合もあるかもしれませんね。)

sudo gitlab-ctl restart で全体をリスタート sudo gitlab-ctl restart nginx でnginxのみをリスタート

本家docs:https://docs.gitlab.com/ee/administration/restart_gitlab.html

現在のログを tail で観察/確認

sudo gitlab-ctl tail で最新のログを総合的に調査できます。 何か問題が発生しているとエラーが表示される可能性が高いと言えます。

本家docs:https://docs.gitlab.com/omnibus/settings/logs.html

詳細ログ

/var/log/gitlab にログが色々入っています。 問題箇所を絞り込んでからこちらのログを確認するほうが結果として解決が早くなりそうです。

[root@*** ~]# cd /var/log/gitlab
[root@*** gitlab]# ls
alertmanager  gitaly           gitlab-pages  gitlab-shell      grafana       logrotate  node-exporter      postgresql  puma         redis           registry
crond         gitlab-exporter  gitlab-rails  gitlab-workhorse  lets-encrypt  nginx      postgres-exporter  prometheus  reconfigure  redis-exporter  sidekiq

Gitlab コミュニティサイト(英語)

公式(英語)

アップデート後のトラブルなど、一般的に遭遇しそうなエラーについては下記に最新の情報があります。
検索してみましょう。
https://forum.gitlab.com/

Stackoverflow

こちらのスタックオーバーフローでも活発に質問と回答が流れます。
https://stackoverflow.com/questions/tagged/gitlab
https://stackoverflow.com/collectives/gitlab

問題が判明したら

エラーの文言で検索すると、大抵同じ問題にぶつかった例を見つけることができるでしょう。
解決まであともう少し!
がんばってください。

Gitlab のアーキテクチャを手っ取り早く理解したい

Gitlabは複数のミドルウェアが組み合わさった複雑なシステムです。
公式情報は下記にあります。

各種コンポーネントの名称と役割

名称 概要 プラン
Certificate Management 認証管理。TLS設定、Let's Encryptなど CE & EE
Consul データベースノードの検出、フェイルオーバー EEのみ
Database Migrations データベースのマイグレーション(移行) CE & EE
Elasticsearch GitLab内の高機能全文検索 EEのみ
Gitaly Git RPCサービス。GitLabが行うすべてのGit呼び出しを処理 CE & EE
GitLab Exporter GitLabメトリクスを生成 CE & EE
GitLab Geo Node 地理的に分散したGitLabノード EEのみ
GitLab Pages 静的ページをホスト CE & EE
GitLab Kubernetes Agent Kubernetesクラスターを統合 EEのみ
GitLab self-monitoring: Alertmanager Prometheusからのアラートをグループ化、ルーティング CE & EE
GitLab self-monitoring: Grafana メトリックスダッシュボード CE & EE
GitLab self-monitoring: Jaeger GitLabインスタンスが生成したViewのトレース CE & EE
GitLab self-monitoring: Prometheus 時系列データベース、メトリクス収集、クエリサービス CE & EE
GitLab self-monitoring: Sentry GitLabインスタンスで発生したエラーの追跡 CE & EE
GitLab Shell SSHセッションでのgit処理 CE & EE
GitLab Workhorse スマートなリバースプロキシ。大規模なHTTPリクエストの処理 CE & EE
Inbound email (SMTP) メッセージを受信して、課題(イシュー)を更新 CE & EE
Jaeger integration デプロイされたアプリケーションの分散型トレース EEのみ
LDAP Authentication LDAPディレクトリ・ユーザー認証 CE & EE
Mattermost オープンソースのSlack代替サービス CE & EE
MinIO オブジェクト・ストレージ・サービス CE & EE
NGINX リクエストを適切なコンポーネントにルーティングし、SSL処理 CE & EE
Node Exporter Prometheusエンドポイント CE & EE
Outbound email (SMTP) 電子メールをユーザーへ送信 CE & EE
Patroni PostgreSQL HAクラスターのリーダーとレプリケーションの管理 EEのみ
PgBouncer Exporter PgBouncerメトリクスに関するPrometheusエンドポイント CE & EE
PgBouncer データベース接続プーリング、フェイルオーバー EEのみ
PostgreSQL Exporter PostgreSQL メトリクスのPrometheus エンドポイント CE & EE
PostgreSQL データベース CE & EE
Praefect 任意のGitクライアントとGitalyストレージノード間の透過プロキシ CE & EE
Puma(GitLab Rails) ウェブインターフェイスとAPIへのリクエスト処理 CE & EE
Redis Exporter RedisメトリクスのPrometheusエンドポイント CE & EE
Redis キャッシングサービス CE & EE
Registry イメージのプッシュ/プルを可能にするコンテナレジストリ CE & EE
Runner GitLab CI/CDジョブの実行 CE & EE
Sentry integration デプロイされたアプリのエラートラッキング CE & EE
Sidekiq バックグラウンドジョブプロセッサ CE & EE
30
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
33