1. 檢查GitLab服務狀態
使用gitlab-ctl status命令查看GitLab各組件(如Rails、Nginx、Sidekiq、PostgreSQL等)的運行狀態。若組件顯示為“down”或“unhealthy”,需進一步排查對應組件的日志或嘗試重啟服務(gitlab-ctl restart <component_name>)。
2. 查看與分析日志文件
GitLab的日志集中存儲在/var/log/gitlab目錄下,不同組件的日志對應不同文件:
/var/log/gitlab/gitlab-rails/production.log(記錄用戶操作、請求響應等業務日志)、production_json.log(JSON格式的詳細錯誤信息,便于程序化分析);/var/log/gitlab/nginx/gitlab_access.log(訪問日志)、gitlab_error.log(Nginx錯誤日志,如403/502等HTTP錯誤);/var/log/gitlab/sidekiq.log(后臺作業執行日志,如CI/CD流水線、郵件發送等);/var/log/gitlab/gitlab-shell/gitlab-shell.log(SSH操作日志)、/var/log/gitlab/unicorn/unicorn_stdout.log(Unicorn應用服務器日志)。常用日志分析命令:
gitlab-ctl tail:實時查看所有組件的日志輸出(類似tail -f);tail -f /var/log/gitlab/gitlab-rails/production.log:實時跟蹤應用層日志;grep -i "error\|failed" /var/log/gitlab/gitlab-rails/production.log:過濾出包含“error”或“failed”的錯誤信息;less /var/log/gitlab/nginx/gitlab_error.log:分頁查看Nginx錯誤日志。3. 檢查GitLab配置文件
GitLab的主配置文件為/etc/gitlab/gitlab.rb,需重點檢查以下配置項:
external_url:確保GitLab的訪問URL正確(如http://your-server-ip或帶域名的HTTPS地址);ssl_certificate/ssl_certificate_key:若啟用HTTPS,需確認證書路徑正確且文件存在;gitlab_rails['gitlab_shell_ssh_port']:若修改了SSH端口,需同步更新此配置;unicorn['port']/sidekiq['port']:確保端口未被其他服務占用。修改配置文件后,需執行gitlab-ctl reconfigure重新應用配置(此命令會自動重啟受影響的組件),再通過gitlab-ctl restart重啟GitLab服務。
4. 監控系統資源使用情況
GitLab運行需要足夠的CPU、內存和磁盤空間,資源不足會導致服務緩慢或崩潰。使用以下命令檢查資源狀態:
top/htop:查看CPU和內存占用率,識別高消耗進程(如Sidekiq、Unicorn);free -m:查看內存使用情況(重點關注“available”內存,避免內存耗盡觸發OOM Killer);df -h:查看磁盤空間(尤其是/var/opt/gitlab目錄,存儲Git倉庫、數據庫文件等,建議保留至少20%空閑空間);vmstat 1 5:查看系統整體資源使用情況(如CPU上下文切換、內存交換、IO等待等)。5. 排查常見特定錯誤
gitlab-ctl status unicorn),查看Unicorn日志(/var/log/gitlab/unicorn/unicorn_stderr.log)中的錯誤信息(如端口沖突、內存不足);/var/opt/gitlab/git-data/repositories目錄權限為git:git);/var/log/gitlab/sidekiq.log)和項目流水線日志(通過GitLab Web界面“CI/CD → Pipelines”),常見原因包括依賴未安裝(如nodejs、docker)、環境變量未配置(如CI_SECRET)、鏡像拉取失?。ㄈ鏒ocker Hub限速);gitlab-runner status),查看Runner日志(/var/log/gitlab-runner/gitlab-runner.log),確保Token有效(gitlab-runner verify)且能訪問GitLab實例;gitlab-rake gitlab:cleanup:orphan_job_artifacts)、構建產物(gitlab-rake gitlab:cleanup:builds)和Docker Registry未使用的鏡像(docker system prune -a)。6. 使用監控與報警工具
集成監控工具實時跟蹤GitLab的運行狀態,及時發現異常:
prometheus組件(默認啟用)收集性能指標(如請求延遲、CPU使用率、數據庫連接數),并在Grafana中創建儀表盤展示??稍O置告警規則(如CPU使用率超過80%、磁盤空間低于10%),通過郵件、Slack等方式通知管理員;/etc/gitlab/gitlab.rb自定義日志切割策略(如保留7天日志、壓縮舊日志),避免日志文件過大占用磁盤空間(修改后需執行gitlab-ctl reconfigure生效)。7. 備份與恢復
定期備份GitLab數據是故障恢復的關鍵:
gitlab-backup create命令創建全量備份(默認存儲在/var/opt/gitlab/backups目錄),可通過--backup-name指定備份名稱(如gitlab-backup create STRATEGY=copy);gitlab-ctl stop),刪除原有數據目錄(rm -rf /var/opt/gitlab/*),然后恢復備份(gitlab-backup restore BACKUP=timestamp_of_backup),最后重啟服務(gitlab-ctl start)?;謴秃蠼ㄗh執行gitlab-rake gitlab:check SANITIZE=true檢查系統狀態。