温馨提示×

ubuntu gitlab 故障排查技巧有哪些

小樊
41
2025-12-06 22:00:00
栏目: 智能运维

Ubuntu 上 GitLab 故障排查技巧

一 快速定位与通用检查

  • 查看组件状态:运行 sudo gitlab-ctl status,确认关键组件如 nginx、gitlab-workhorse、puma/unicorn、sidekiq、postgresql、redis 均为 run。若某进程反复重启或退出,优先聚焦该组件日志。
  • 实时看日志:用 sudo gitlab-ctl tail 查看全局日志,或指定组件/文件,如 sudo gitlab-ctl tail nginx/gitlab_error.log
  • 直达 Rails 日志:Rails 应用日志位于 /var/log/gitlab/gitlab-rails/production.log,可用 tail -f 实时跟踪。
  • 配置变更后应用:修改 /etc/gitlab/gitlab.rb 后执行 sudo gitlab-ctl reconfigure 使配置生效。
  • 资源与端口:用 free -m、df -h、ss -lntp | grep -E ‘80|443|22’ 检查内存、磁盘与端口占用,避免因资源不足或端口冲突导致异常。

二 常见故障场景与处理

  • 502/504 网关错误:常见于应用进程(如 puma/unicorn)未就绪或异常退出。处理步骤:
    1. 查看 gitlab-ctl status 与组件日志(如 puma/unicorn、workhorse、nginx);
    2. puma/unicorn 反复重启,检查 /var/log/gitlab/puma/puma_stderr.log/var/log/gitlab/unicorn/ 的错误;
    3. 重启相关服务:sudo gitlab-ctl restart puma(或 unicorn);
    4. 清理陈旧 PID 文件(如 /opt/gitlab/var/puma/puma.pid/opt/gitlab/var/unicorn/unicorn.pid)后再次启动;
    5. nginx/gitlab_error.log 提示 upstream 不可用,多半是上游进程未起或崩溃,回到第 1 步。
  • 个别服务无法启动:
    1. gitlab-ctl tail 定位错误;
    2. 检查端口冲突(如 puma 端口 8080 被占用)、配置文件语法、依赖服务状态;
    3. 资源不足(内存/磁盘)会触发 OOM 或启动失败,先释放资源再重启;
    4. 修改配置后执行 reconfigure 并重启对应服务。
  • 数据库连接/启动失败:
    1. 查看 gitlab-ctl status postgresql/var/log/gitlab/postgresql/
    2. 若提示连接或权限问题,核对 gitlab.rb 中数据库相关配置、目录权限与资源;
    3. 必要时执行 sudo gitlab-ctl reconfigure 并重启数据库。
  • 页面 404/无法访问:
    1. 确认容器/服务在运行(裸机用 gitlab-ctl status,容器用 docker-compose ps);
    2. 核对端口映射(如 80/443/22)与防火墙放行(如 ufw allow 80,443,22);
    3. 检查 external_url 是否为可达的 IP/域名
    4. 查看 nginx/gitlab_error.log 与容器日志进一步定位。

三 日志与数据路径速查

维度 路径或命令 用途
组件状态 sudo gitlab-ctl status 快速判断各组件是否 running
全局日志 sudo gitlab-ctl tail 实时查看所有组件日志
Nginx 错误 sudo gitlab-ctl tail nginx/gitlab_error.log 定位 502/504、权限、路由等
Rails 应用 /var/log/gitlab/gitlab-rails/production.log 业务报错、SQL、权限异常
Puma 错误 /var/log/gitlab/puma/puma_stderr.log 应用进程崩溃、启动失败
Unicorn 错误 /var/log/gitlab/unicorn/ 老版本应用进程异常
PostgreSQL /var/log/gitlab/postgresql/ 数据库启动、连接、恢复错误
配置生效 sudo gitlab-ctl reconfigure 使 gitlab.rb 变更生效
数据备份 gitlab-backup create 在容器内执行备份(路径映射至宿主机)

四 Docker 部署的额外要点

  • 容器状态与日志:用 docker-compose psdocker-compose logs -f 快速判断容器是否健康与错误来源。
  • 配置与生效:在 docker-compose.ymlGITLAB_OMNIBUS_CONFIG 中设置 external_url,变更后用 docker-compose exec web gitlab-ctl reconfigure 使配置生效。
  • 资源限制:为容器设置合理的内存/CPU 限额(如 memory: 2G),避免因 OOM 导致进程被杀。
  • 端口与网络:核对 80/443/22 映射未被占用,外部访问地址与 external_url 一致。
  • 持久化与备份:确保 config/logs/data 挂载到宿主机;在容器内执行 gitlab-backup create 进行备份。

五 高频命令清单

  • 服务管理:sudo gitlab-ctl start|stop|restart|status
  • 日志查看:sudo gitlab-ctl tailsudo gitlab-ctl tail nginx/gitlab_error.logsudo tail -f /var/log/gitlab/gitlab-rails/production.log
  • 配置生效:sudo gitlab-ctl reconfigure
  • 容器场景:docker-compose psdocker-compose logs -fdocker-compose exec web gitlab-ctl reconfiguregitlab-backup create
  • 资源与端口:free -m、df -h、ss -lntp | grep -E ‘80|443|22’、ufw allow 80,443,22

0