本文分享使用 gitlab-ctl 命令来对极狐GitLab 的组件进行状态查询和关闭与重启等操作。

极狐GitLab 是一个多组件系统,主要组件包括:

  • Gitaly
  • GitLab exporter
  • Nginx
  • Redis
  • Sidekiq
  • PostgreSQL
  • Puma
  • Workhorse
  • Registry

gitlab-ctl可以对上述组件的状态进行查询,以及关闭、重启等。该命令对于极狐GitLab 故障排查来讲是非常重要的。掌握对于该命令的使用是极狐GitLab 运维人员的必备技能之一。

极狐GitLab 是 GitLab 在中国的发行版,支持私有化部署,中文版本对于中国用户更加友好。安装指南可以查看 官网文档 https://dl.gitlab.cn/docphf9y

gitlab-ctl status

可以使用 gitlab-ctl status来查看这些组件的状态:

gitlab-ctl status
run: alertmanager: (pid 1107) 594881s; run: log: (pid 1101) 594881s
run: gitaly: (pid 1108) 594881s; run: log: (pid 1099) 594881s
run: gitlab-exporter: (pid 1089) 594881s; run: log: (pid 1086) 594881s
run: gitlab-kas: (pid 1080) 594881s; run: log: (pid 1078) 594881s
run: gitlab-workhorse: (pid 1081) 594881s; run: log: (pid 1079) 594881s
run: logrotate: (pid 300853) 873s; run: log: (pid 1096) 594881s
run: nginx: (pid 1092) 594881s; run: log: (pid 1083) 594881s
run: node-exporter: (pid 1104) 594881s; run: log: (pid 1095) 594881s
run: postgres-exporter: (pid 1088) 594881s; run: log: (pid 1085) 594881s
run: postgresql: (pid 1077) 594881s; run: log: (pid 1075) 594881s
run: prometheus: (pid 1093) 594881s; run: log: (pid 1087) 594881s
run: puma: (pid 1084) 594881s; run: log: (pid 1074) 594881s
run: redis: (pid 1082) 594881s; run: log: (pid 1076) 594881s
run: redis-exporter: (pid 1094) 594881s; run: log: (pid 1090) 594881s
run: sidekiq: (pid 1105) 594881s; run: log: (pid 1091) 594881s
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

可以看到这些组件的状态都是 run说明是在正常运行,这也是极狐GitLab 能够正常运行的核心和关键。

可以使用 gitlab-ctl status 组件名来查看某个组件的状态:

gitlab-ctl status redis
run: redis: (pid 1082) 595106s; run: log: (pid 1076) 595106s
  • 1.
  • 2.

gitlab-ctl stop/start

使用 stop/start命令来完成对组件的停止/重启。

# 关闭 redis 组件
gitlab-ctl stop redis
ok: down: redis: 0s, normally up

# 查看 redis 组件状态
gitlab-ctl status redis
down: redis: 2s, normally up; run: log: (pid 1076) 595233s
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

当然,如果关闭了某些组件,就会导致极狐GitLab 访问故障,出现诸如 500的错误:

极狐GitLab 有哪些组件?_GitLab

用 start重启即可:

# 重启 redis 组件
gitlab-ctl start redis
ok: run: redis: (pid 301663) 1s

# 查看 redis 组件状态
gitlab-ctl status redis
run: redis: (pid 301663) 4s; run: log: (pid 1076) 595339s
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

当然, 也可以直接使用 restart命令来一次性完成 stopstart 功能。

gitlab-ctl restart
ok: run: alertmanager: (pid 301714) 1s
ok: run: gitaly: (pid 301725) 1s
ok: run: gitlab-exporter: (pid 301746) 0s
ok: run: gitlab-kas: (pid 301761) 0s
ok: run: gitlab-workhorse: (pid 301771) 1s
ok: run: logrotate: (pid 301784) 0s
ok: run: nginx: (pid 301790) 1s
ok: run: node-exporter: (pid 301798) 0s
ok: run: postgres-exporter: (pid 301807) 1s
ok: run: postgresql: (pid 301816) 0s
ok: run: prometheus: (pid 301834) 0s
ok: run: puma: (pid 301848) 1s
ok: run: redis: (pid 301853) 0s
ok: run: redis-exporter: (pid 301860) 0s
ok: run: sidekiq: (pid 301871) 0s
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.