CentOS环境下GitLab日志分析
一 日志位置与快速查看
sudo gitlab-ctl tailsudo gitlab-ctl tail gitlab-rails、sudo gitlab-ctl tail nginx/gitlab_error.logsudo less /var/log/gitlab/gitlab-rails/production.log、sudo tail -f /var/log/gitlab/gitlab-rails/production.logsudo journalctl -u gitlab-rails --since "2025-12-01" --until "2025-12-13"。二 常用分析命令与场景
sudo grep -iE "error|exception|failed" /var/log/gitlab/gitlab-rails/production.log | tail -50sudo jq -r 'select(.severity == "ERROR") | "\(.time) \(.message)"' /var/log/gitlab/gitlab-rails/production_json.log | tail -20sudo tail -n 100 /var/log/gitlab/nginx/gitlab_error.log | grep -i "502\|499\|timeout"sudo grep -i "failed" /var/log/gitlab/sidekiq/sidekiq.log | tail -20sudo awk '$9 ~ /^5/ {count[$1]++} END {for(ip in count) print count[ip], ip}' /var/log/gitlab/nginx/gitlab_access.log | sort -nr | headsudo grep "Completed .* in [0-9]*ms" /var/log/gitlab/gitlab-rails/production.log | sort -k8 -nr | head(按响应时间字段排序)sudo awk '{ips[$1]++} END {for(ip in ips) print ips[ip], ip}' /var/log/gitlab/nginx/gitlab_access.log | sort -nr | head三 集中化与可视化
四 日志轮转与容量管理
sudo gitlab-ctl reconfigure 使配置生效。五 典型故障排查速查表
| 症状 | 首要日志 | 关键命令示例 | 常见线索与处理 |
|---|---|---|---|
| 502 Bad Gateway | Nginx error、gitlab-rails/production | sudo gitlab-ctl tail nginx/gitlab_error.log;sudo gitlab-ctl tail gitlab-rails |
上游进程未就绪、端口冲突、权限异常;检查进程状态与端口占用,必要时修正目录权限并重启服务 |
| Pages 502/连接失败 | gitlab-pages/current、gitlab-rails | sudo gitlab-ctl tail gitlab-pages |
缺少协议 scheme 或监听地址错误;在 /etc/gitlab/gitlab.rb 设置 gitlab_pages['gitlab_server'] 与 listen_proxy,再 reconfigure |
| SSH/Git 操作异常 | gitlab-shell/gitlab-shell.log | sudo tail -n 100 /var/log/gitlab/gitlab-shell/gitlab-shell.log |
认证失败、仓库不存在、权限问题;核对 SSH 公钥、项目与权限配置 |
| 后台任务积压/失败 | sidekiq/sidekiq.log | sudo grep -i "failed|retry" /var/log/gitlab/sidekiq/sidekiq.log |
异常堆栈指向数据库/外部依赖;修复根因后清理失败队列并重试 |
| 磁盘告警 | 各组件日志目录 | sudo du -sh /var/log/gitlab/* |
日志过大;优化轮转策略、清理历史归档、扩容磁盘或接入集中化存储 |