温馨提示×

ubuntu gitlab 日志查看方法有哪些

小樊
43
2025-11-15 04:43:23
栏目: 智能运维

Ubuntu 上 GitLab 日志查看方法

一 常用命令行方式

  • 使用 gitlab-ctl tail 实时查看全部或指定组件的日志,适合排查正在发生的问题:
    • 查看所有日志:sudo gitlab-ctl tail
    • 查看某一组件(如 Rails):sudo gitlab-ctl tail gitlab-rails
    • 查看具体日志文件(如 Nginx 访问/错误):sudo gitlab-ctl tail nginx/gitlab_access.logsudo gitlab-ctl tail nginx/gitlab_error.log
  • 直接读取日志文件(适合离线分析或检索历史记录):
    • 查看 Rails 应用日志:sudo less /var/log/gitlab/gitlab-rails/production.log
    • 查看结构化 JSON 日志:sudo cat /var/log/gitlab/gitlab-rails/production_json.log
    • 查看 Nginx 访问日志:sudo tail -f /var/log/gitlab/nginx/gitlab_access.log
  • 使用 journalctl 查看 systemd 日志(当 GitLab 组件以 systemd 单元运行时):
    • 查看所有 GitLab 相关单元:sudo journalctl -u gitlab
    • 查看 Rails 单元:sudo journalctl -u gitlab-rails
    • 按时间过滤:sudo journalctl -u gitlab-rails --since “2025-11-01” --until “2025-11-15”

二 日志目录与关键文件

  • 日志默认集中在 /var/log/gitlab/,常见组件与用途如下:
组件/用途 典型日志路径 说明
Rails 应用 /var/log/gitlab/gitlab-rails/production.log 应用运行日志、错误堆栈
Rails JSON 日志 /var/log/gitlab/gitlab-rails/production_json.log 结构化日志,便于检索与聚合
Nginx 访问日志 /var/log/gitlab/nginx/gitlab_access.log HTTP 请求记录
Nginx 错误日志 /var/log/gitlab/nginx/gitlab_error.log Nginx 错误与异常
  • 提示:路径中的组件目录名与 gitlab-ctl tail <组件名> 的子目录一致,便于定位。

三 构建与作业日志 CI/CD

  • GitLab Web 界面:进入项目 → CI/CDJobs,可查看每次流水线与作业的输出日志,便于定位构建失败原因。
  • 使用 GitLab API 拉取作业日志(适用于自动化采集/归档):
    • 示例:curl --header “PRIVATE-TOKEN: <your_token>” “https://gitlab.example.com/api/v4/projects/<project_id>/jobs/<job_id>/trace”

四 日志轮转与保留策略

  • GitLab 使用 logrotate 做按日/按大小切割与压缩,默认保留 30 天。可在 /etc/gitlab/gitlab.rb 中自定义:
    • 全局示例:
      • logging[‘logrotate_frequency’] = “daily”
      • logging[‘logrotate_rotate’] = 30
      • logging[‘logrotate_compress’] = “compress”
    • 组件覆盖示例(Nginx 按大小切割):
      • nginx[‘logrotate_size’] = “200M”
    • 修改后执行:sudo gitlab-ctl reconfigure 使配置生效。

五 实用排查命令组合

  • 实时查看所有日志并高亮错误关键字:sudo gitlab-ctl tail | grep -i error
  • 查看最近 100 行 Rails 错误并持续跟踪:sudo tail -n 100 -f /var/log/gitlab/gitlab-rails/production.log | grep -i error
  • 按时间查看 Nginx 访问日志(示例为近 1 小时):sudo journalctl -u nginx --since “1 hour ago” -u gitlab | grep “gitlab_access”
  • 检索 JSON 日志中的异常:sudo jq ‘select(.severity == “ERROR”)’ /var/log/gitlab/gitlab-rails/production_json.log(需安装 jq

0