GitLab在CentOS下的日志集中存儲于/var/log/gitlab
目錄,按服務類型分類(如gitlab-rails
、nginx
、gitlab-shell
等)。核心日志文件包括:
gitlab-rails/production.log
:記錄GitLab Rails應用的請求詳情(URL、IP、請求類型、SQL執行時間及代碼片段);gitlab-rails/production_json.log
:以JSON格式記錄異常信息(便于程序化分析);nginx/gitlab_access.log
:記錄HTTP訪問日志(請求時間、客戶端IP、響應狀態碼、請求路徑);nginx/gitlab_error.log
:記錄Nginx層的錯誤(如404、500、連接超時);gitlab-shell/gitlab-shell.log
:記錄Git命令執行日志(如git push
、git pull
);unicorn/unicorn_stdout.log
:記錄Unicorn應用服務器的日志(Web層請求處理情況)。tail -f
動態追蹤日志新增內容(如tail -f /var/log/gitlab/gitlab-rails/production.log
);cat
或less
輸出日志全部內容(如sudo cat /var/log/gitlab/gitlab-rails/production.log
);grep
篩選特定信息(如錯誤信息grep "ERROR" /var/log/gitlab/gitlab-rails/production.log
、用戶操作grep "username" /var/log/gitlab/gitlab-rails/production.log
)。gitlab-ctl
是GitLab提供的命令行工具,可便捷管理日志:
sudo gitlab-ctl tail
(按Ctrl+C
退出);sudo gitlab-ctl tail gitlab-rails
(Rails應用日志)、sudo gitlab-ctl tail nginx/gitlab_error.log
(Nginx錯誤日志);sudo gitlab-ctl tail /var/log/gitlab/gitlab-rails/production.log
(直接指定日志路徑)。若CentOS使用systemd管理服務,可通過journalctl
查看GitLab服務日志:
sudo journalctl -u gitlab
;sudo journalctl -u gitlab-rails
(Rails服務日志);sudo journalctl --since "2025-10-01" --until "2025-10-21"
(查看10月1日至21日的日志)。grep -c "ERROR" /var/log/gitlab/gitlab-rails/production.log
(統計生產日志中的錯誤條目數);awk '{print $4}' /var/log/gitlab/nginx/gitlab_access.log | grep -E '2025-10-01|2025-10-21' | cut -d: -f1 | sort | uniq -c | sort -rn
(統計10月1日至21日每天的請求數,按降序排列);grep '192.168.1.100' /var/log/gitlab/nginx/gitlab_access.log | wc -l
(統計IP為192.168.1.100的訪問次數);grep -A 5 -B 5 "ERROR" /var/log/gitlab/gitlab-rails/production.log
(顯示錯誤信息及前后5行上下文,便于定位問題原因)。GitLab內置logrotate
工具,可自動切割、壓縮舊日志,避免日志文件過大:
/etc/gitlab/gitlab.rb
(自定義日志輪轉參數,如切割大小、保留天數);logging['logrotate_frequency'] = "daily"
(每天切割一次);logging['logrotate_rotate'] = 30
(保留30個備份);logging['logrotate_compress'] = "compress"
(使用gzip壓縮舊日志);logging['logrotate_dateformat'] = "-%Y-%m-%d"
(日志文件名添加日期后綴,如production-2025-10-21.log
)。production.log
中的錯誤堆棧(如數據庫連接失敗、代碼異常),結合production_json.log
中的JSON異常信息定位具體原因;nginx_error.log
(如Nginx與GitLab服務通信失?。?、unicorn.log
(如Unicorn進程崩潰),確認服務是否正常運行;production.log
中的訪問記錄(如access denied for user xxx
),檢查用戶角色及項目權限設置;gitlab-rails/production.log
中的流水線日志(如依賴安裝失敗、腳本執行錯誤),結合Runner日志(/var/log/gitlab-runner/
)定位問題。