本文分享使用 gitlab-ctl
命令來對極狐GitLab 的元件進行狀態查詢和關閉與重啟等操作。
極狐GitLab 是一個多元件系統,主要元件包括:
- Gitaly
- GitLab exporter
- Nginx
- Redis
- Sidekiq
- PostgreSQL
- Puma
- Workhorse
- Registry
gitlab-ctl
可以對上述元件的狀態進行查詢,以及關閉、重啟等。該命令對於極狐GitLab 故障排查來講是非常重要的。掌握對於該命令的使用是極狐GitLab 運維人員的必備技能之一。
極狐GitLab 是 GitLab 在中國的發行版,支援私有化部署,中文版本對於中國使用者更加友好。安裝指南可以檢視官網文件 https://dl.gitlab.cn/vopja2bq 。
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
可以看到這些元件的狀態都是 run說明是在正常執行,這也是極狐GitLab 能夠正常執行的核心和關鍵。
可以使用 gitlab-ctl status
元件名來檢視某個元件的狀態:
gitlab-ctl status redis
run: redis: (pid 1082) 595106s; run: log: (pid 1076) 595106s
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
當然,如果關閉了某些元件,就會導致極狐GitLab 訪問故障,出現諸如 500的錯誤:
用 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
當然, 也可以直接使用 restart
命令來一次性完成 stop
和 start
功能。
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