ubuntu gitlab故障排查方法有哪些
导读:Ubuntu 上 GitLab 故障排查方法 一 快速定位与通用检查 查看组件状态:运行 sudo gitlab-ctl status,确认关键组件如 nginx、gitlab-workhorse、puma/unicorn、sidekiq...
Ubuntu 上 GitLab 故障排查方法
一 快速定位与通用检查
- 查看组件状态:运行 sudo gitlab-ctl status,确认关键组件如 nginx、gitlab-workhorse、puma/unicorn、sidekiq、postgresql、redis 均为 run。若某个进程频繁重启或退出,优先聚焦该组件日志。
- 实时查看日志:使用 sudo gitlab-ctl tail 查看全局日志,或指定组件如 sudo gitlab-ctl tail nginx;Rails 应用日志位于 /var/log/gitlab/gitlab-rails/production.log 与 production_json.log。
- 系统层面:检查资源与端口,执行 free -h(关注可用内存)、df -h(磁盘空间)、必要时 sudo ufw status(防火墙是否放行 80/443/22)。
- 配置变更后应用:执行 sudo gitlab-ctl reconfigure 使配置生效。
以上命令适用于 Omnibus 安装,日志默认在 /var/log/gitlab/ 目录。
二 常见故障场景与处理
- 502 Bad Gateway
- 现象:前端 nginx 正常,但返回 502。
- 处理:
- 检查应用进程(旧版多为 unicorn,新版本多为 puma)是否存活:gitlab-ctl status;若频繁重启,查看对应日志。
- 清理陈旧 PID 文件(示例路径,按实际版本调整):sudo rm /opt/gitlab/var/unicorn/unicorn.pid。
- 重启服务:sudo gitlab-ctl restart,再次检查状态与日志。
- 内存不足导致进程被 OOM 杀死
- 现象:组件反复退出、系统卡顿。
- 处理:
- 检查内存:free -h;
- 临时增加 Swap(示例 4GB):
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
并在 /etc/fstab 写入 “/swapfile swap swap defaults 0 0” 永久生效。
- 数据库无法连接或启动失败
- 现象:页面报错或启动提示检查 PostgreSQL。
- 处理:
- 查看状态:sudo gitlab-ctl status postgresql;
- 查看日志:sudo gitlab-ctl tail postgresql;
- 重启组件:sudo gitlab-ctl restart postgresql;
- 若配置变更或异常,执行 sudo gitlab-ctl reconfigure;
- 仍异常时核查资源、权限与数据目录。
- 断电或异常重启后多组件 “runsv not running”
- 现象:大量组件处于非运行状态。
- 处理:
- 参考官方常见安装问题排查 gitlab-runsvdir 未启动;
- 如 systemctl -t target 显示 dead 或存在阻塞任务,按官方指引处理(如必要时卸载 plymouth);
- 重启 gitlab-runsvdir 后再启动 GitLab:sudo gitlab-ctl start。
- 外部访问不通
- 现象:浏览器无法打开页面。
- 处理:
- 核对 /etc/gitlab/gitlab.rb 中的 external_url 是否为可达的 IP/域名;
- 检查防火墙放行 80/443/22:sudo ufw allow http & & sudo ufw allow https & & sudo ufw allow ssh;
- 确认服务已启动:sudo gitlab-ctl status。
三 日志与定位技巧
- 组件日志:使用 sudo gitlab-ctl tail 实时跟踪,如 nginx、puma/unicorn、sidekiq、postgresql、redis;必要时直接查看 /var/log/gitlab// 下的日志文件。
- Rails 日志:优先排查 /var/log/gitlab/gitlab-rails/production.log 与 production_json.log,可配合 grep 检索异常关键字(如 “PG::ConnectionBad”“Errno::ENOMEM”)。
- 系统日志:使用 journalctl 辅助排查,如 journalctl -u gitlab-runsvdir、按时间过滤 journalctl --since “2025-04-20 09:00” --until “2025-04-23 12:00”,或实时跟踪 journalctl -f。
- 日志轮转与保留:GitLab 使用 logrotate 管理日志,可在 /etc/gitlab/gitlab.rb 中设置策略(如 logging[‘logrotate_frequency’]、logging[‘logrotate_rotate’]),执行 gitlab-ctl reconfigure 生效。
四 变更与恢复的安全操作
- 配置变更:修改 /etc/gitlab/gitlab.rb 后务必执行 sudo gitlab-ctl reconfigure 使配置落地。
- 备份与恢复:
- 备份:sudo gitlab-backup create(默认目录 /var/opt/gitlab/backups/,注意该命令不备份配置文件);
- 恢复:先停写 sudo gitlab-ctl stop puma & & sudo gitlab-ctl stop sidekiq,再执行 sudo gitlab-backup restore BACKUP=TIMESTAMP,并将旧机的 /etc/gitlab/gitlab.rb 与 /etc/gitlab/gitlab-secrets.json 同步到新机,最后 sudo gitlab-ctl reconfigure & & sudo gitlab-ctl restart。
- 忘记管理员密码:sudo gitlab-rake “gitlab:password:reset[root]”。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu gitlab故障排查方法有哪些
本文地址: https://pptw.com/jishu/764775.html
