本地GitLab故障解决
主要目的
如果有人大声喊道「Gitlab不能用了!」。
如果遇到与GitLab相关的问题,根据我的经验,它可以稳定运行多年。然而,当出现问题时,有时候我们不知道从何处着手解决。我希望本文能对有此疑虑的人有所帮助。
方便的日本语信息网站
这个网站是必须看的!
GitLab的日本語資訊網站
https://www.gitlab.jp/links/
GitLab日本語情報サイト是一个由个人创建的社区网站,旨在用日语分享有关GitLab的信息。
Qiita是一个 GitLab-jp 组织创建的社区网站。
本次的操作环境
CentOS Linux 7.9.2009版本
GitLab 14.4.1版本
故障排除的初期措施
首先进行基本服务器状态的确认。经过详细调查后,最后才发现只是磁盘容量不足,感到非常遗憾…
top #どのプロセスがいちばん動作しているのか
df -h #ディスク容量が足りているか
tail /var/log/secure #念のためログイン履歴を確認
想要确认Gitlab的版本。
可以使用grep gitlab /opt/gitlab/version-manifest.txt命令来检查Gitlab的版本,即使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” 命令,您可以确认守护进程是否正常运行。如果其中显示的状态是 “down” 而不是 “run”,则表示该守护进程已停止。
本家文档链接: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
使用sudo gitlab-ctl restart nginx将只重新启动nginx
本家文档:https://doc.gitlab.com/ee/administration/restart_gitlab.html
用tail命令观察/确认当前日志
通过sudo gitlab-ctl tail命令,您可以综合调查最新的日志。
如果有任何问题发生,很可能会显示错误信息。
如果有任何问题发生,很可能会显示错误信息。
以下是GitLab官方文档的链接: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/
堆栈溢出
在这个Stack Overflow中,问题和回答非常活跃地流动。
https://stackoverflow.com/questions/tagged/gitlab
https://stackoverflow.com/collectives/gitlab
一旦问题被发现
如果你使用错误提示来搜索,你很可能会找到遇到相同问题的案例。
就快解决了,再加把劲!加油!
我想要快速地理解Gitlab的架构。
Gitlab 是一个由多个中间件组合而成的复杂系统。
官方信息位于下方链接。
各种组件的名称和作用
名称概要プランCertificate Management認証管理。TLS設定、Let’s EncryptなどCE & EEConsulデータベースノードの検出、フェイルオーバーEEのみDatabase Migrationsデータベースのマイグレーション(移行)CE & EEElasticsearchGitLab内の高機能全文検索EEのみGitalyGit RPCサービス。GitLabが行うすべてのGit呼び出しを処理CE & EEGitLab ExporterGitLabメトリクスを生成CE & EEGitLab Geo Node地理的に分散したGitLabノードEEのみGitLab Pages静的ページをホストCE & EEGitLab Kubernetes AgentKubernetesクラスターを統合EEのみGitLab self-monitoring: AlertmanagerPrometheusからのアラートをグループ化、ルーティングCE & EEGitLab self-monitoring: GrafanaメトリックスダッシュボードCE & EEGitLab self-monitoring: JaegerGitLabインスタンスが生成したViewのトレースCE & EEGitLab self-monitoring: Prometheus時系列データベース、メトリクス収集、クエリサービスCE & EEGitLab self-monitoring: SentryGitLabインスタンスで発生したエラーの追跡CE & EEGitLab ShellSSHセッションでのgit処理CE & EEGitLab Workhorseスマートなリバースプロキシ。大規模なHTTPリクエストの処理CE & EEInbound email (SMTP)メッセージを受信して、課題(イシュー)を更新CE & EEJaeger integrationデプロイされたアプリケーションの分散型トレースEEのみLDAP AuthenticationLDAPディレクトリ・ユーザー認証CE & EEMattermostオープンソースのSlack代替サービスCE & EEMinIOオブジェクト・ストレージ・サービスCE & EENGINXリクエストを適切なコンポーネントにルーティングし、SSL処理CE & EENode ExporterPrometheusエンドポイントCE & EEOutbound email (SMTP)電子メールをユーザーへ送信CE & EEPatroniPostgreSQL HAクラスターのリーダーとレプリケーションの管理EEのみPgBouncer ExporterPgBouncerメトリクスに関するPrometheusエンドポイントCE & EEPgBouncerデータベース接続プーリング、フェイルオーバーEEのみPostgreSQL ExporterPostgreSQL メトリクスのPrometheus エンドポイントCE & EEPostgreSQLデータベースCE & EEPraefect任意のGitクライアントとGitalyストレージノード間の透過プロキシCE & EEPuma(GitLab Rails)ウェブインターフェイスとAPIへのリクエスト処理CE & EERedis ExporterRedisメトリクスのPrometheusエンドポイントCE & EERedisキャッシングサービスCE & EERegistryイメージのプッシュ/プルを可能にするコンテナレジストリCE & EERunnerGitLab CI/CDジョブの実行CE & EESentry integrationデプロイされたアプリのエラートラッキングCE & EESidekiqバックグラウンドジョブプロセッサCE & EE