GitLab 日志

路径 说明
GitLab 核心应用与服务
/var/log/gitlab/gitlab-rails/ GitLab 主应用(Rails)的日志目录,包含了应用逻辑、API、认证等核心活动的详细记录。
/var/log/gitlab/gitlab-rails/production.log 最重要的日志之一。记录 GitLab Web 应用的所有请求和处理过程,是排查功能性问题的主要依据。
/var/log/gitlab/gitlab-rails/api_json.log 专门记录 API 请求的 JSON 格式日志,便于分析 API 使用情况。
/var/log/gitlab/gitlab-rails/audit_json.log 记录用户审计事件(如权限变更、项目设置更改)的 JSON 日志,用于安全审计。
/var/log/gitlab/gitlab-rails/exceptions_json.log 记录应用程序抛出的异常和错误。
/var/log/gitlab/gitlab-rails/gitlab-rails-db-migrate-*.log 记录数据库迁移任务的输出,在升级后检查是否有迁移错误。
/var/log/gitlab/puma/ GitLab 使用的 Puma Ruby Web 服务器的日志目录。
/var/log/gitlab/puma/puma_stdout.log Puma 服务器的标准输出日志。
/var/log/gitlab/puma/puma_stderr.log Puma 服务器的错误输出日志。
/var/log/gitlab/sidekiq/ Sidekiq 后台作业处理器的日志目录。所有异步任务(如邮件发送、仓库更新)都在此记录。
/var/log/gitlab/gitlab-workhorse/ GitLab Workhorse 的日志,这是一个智能反向代理,负责处理大文件上传、Git HTTP 请求等,对性能至关重要。
/var/log/gitlab/gitlab-shell/ 处理 Git over SSH 操作的服务的日志。当用户通过 SSH 推送或拉取代码时,相关认证和命令在此记录。
Web 服务器与代理
/var/log/gitlab/nginx/ Omnibus 内置的 Nginx 的日志目录,作为 GitLab 的反向代理和静态文件服务器。
/var/log/gitlab/nginx/access.log Nginx 的访问日志,记录所有到达 Nginx 的 HTTP/HTTPS 请求。
/var/log/gitlab/nginx/error.log Nginx 的错误日志。
/var/log/gitlab/nginx/gitlab_access.log 专门代理到 GitLab Rails(Puma)的访问日志。
/var/log/gitlab/nginx/gitlab_pages_access.log 代理到 GitLab Pages 站点的访问日志。
/var/log/gitlab/nginx/gitlab_registry_access.log 代理到容器镜像仓库(Registry)的访问日志。
数据存储服务
/var/log/gitlab/postgresql/ 内置 PostgreSQL 数据库的日志目录。
/var/log/gitlab/redis/ 内置 Redis 缓存和数据库的日志目录。
/var/log/gitlab/gitaly/ Gitaly 服务的日志,负责所有 Git 仓库的存储和操作。Git 读写问题应首先检查此处。
其他集成服务
/var/log/gitlab/gitlab-pages/ GitLab Pages 静态站点服务的日志。
/var/log/gitlab/registry/ GitLab 容器镜像仓库(Docker Registry)的日志。
/var/log/gitlab/gitlab-kas/ GitLab Kubernetes Agent Server (KAS) 的日志,用于集成 Kubernetes 集群。
系统与维护
/var/log/gitlab/reconfigure/ 重要的维护日志。每次执行 gitlab-ctl reconfigure 命令后,都会在此生成一个带时间戳的日志文件(如 1768285570.log),记录了配置变更的详细信息,升级或变更配置后应检查。
/var/log/gitlab/logrotate/ 日志轮转服务的日志,记录日志切割和压缩操作。
/var/log/gitlab/crond/ 计划任务(Cron)的日志,用于执行 GitLab 的定期维护作业。
/var/log/gitlab/sshd/ Omnibus 内置的 SSH 守护进程的日志(如果启用),用于 Git over SSH。
/var/log/gitlab/lets-encrypt/ 用于自动申请和续订 Let‘s Encrypt SSL 证书的日志。
通用文件说明
*/current 大多数组件目录下的 current 文件是一个软链接,指向正在写入的当前日志文件(通常由 logrotate 管理)。直接使用 tail -f /var/log/gitlab/xxx/current 跟踪日志非常方便。
*/config 该组件的 logrotate 配置文件。
*/lock 日志轮转时使用的锁文件。

使用建议

  1. 故障排查:当出现问题时,通常按以下顺序查看:
    • /var/log/gitlab/gitlab-rails/production.log (应用逻辑错误)
    • /var/log/gitlab/nginx/error.log/var/log/gitlab/gitlab-workhorse/current (网络/代理错误)
    • 相关服务日志(如 Git 操作看 gitalygitlab-shell,后台作业看 sidekiq)。
  2. 监控:可监控各 error.logexceptions_json.log 中是否有新错误产生。
  3. 审计audit_json.logauth_json.log 是安全审计的关键来源。
  4. 性能分析nginx 的访问日志、production.log 以及 api_json.log 可用于分析慢请求和API性能。
  5. 维护:在执行任何 gitlab-ctl reconfigure 或升级后,检查 /var/log/gitlab/reconfigure/ 下最新的日志文件,确认没有配置错误。
  6. 磁盘空间:定期检查这些日志目录的磁盘使用情况,logrotate 会自动管理,但高流量实例仍需关注。