GitLab Linux配置中的日志管理
GitLab在Linux系统中的日志文件集中存储于/var/log/gitlab目录下,按组件分类管理,常见日志文件及路径如下:
/var/log/gitlab/gitlab-rails/production.log(记录应用主要请求、操作信息);/var/log/gitlab/gitlab-rails/production_json.log(JSON格式的异常堆栈信息,便于程序分析);/var/log/gitlab/sidekiq/current(记录异步任务执行状态,如CI流水线、定时任务);/var/log/gitlab/nginx/gitlab_access.log(HTTP请求记录)、/var/log/gitlab/nginx/gitlab_error.log(Nginx服务错误信息);/var/log/gitlab/gitlab-shell/gitlab-shell.log(记录SSH密钥验证、Git命令执行等操作);/var/log/gitlab/unicorn/unicorn_stdout.log(Web请求处理日志)。GitLab提供gitlab-ctl命令行工具,可便捷地实时查看日志:
sudo gitlab-ctl tail(输出GitLab所有组件的实时日志流);sudo gitlab-ctl tail <组件名>(如sudo gitlab-ctl tail gitlab-rails查看Rails应用日志,sudo gitlab-ctl tail nginx查看Nginx日志);sudo gitlab-ctl tail <日志路径>(如sudo gitlab-ctl tail nginx/gitlab_error.log查看Nginx错误日志)。日志轮转用于防止日志文件无限增长,GitLab支持两种轮转方式:
GitLab Omnibus包内置logrotate服务,可通过/etc/gitlab/gitlab.rb文件自定义配置:
# 全局默认配置(影响大多数服务)
logging['logrotate_frequency'] = "daily" # 轮转频率:daily(每天)、weekly(每周)、monthly(每月)
logging['logrotate_size'] = nil # 按大小轮转(nil表示不启用,如需启用可设为"200M")
logging['logrotate_rotate'] = 30 # 保留日志文件数量(如30表示保留最近30个)
logging['logrotate_compress'] = "compress" # 压缩方式(gzip,压缩后缀为.gz)
logging['logrotate_method'] = "copytruncate" # 轮转方法(copytruncate:复制原文件后清空,避免服务中断)
# 特定服务覆盖配置(如Nginx)
nginx['logrotate_frequency'] = nil
nginx['logrotate_size'] = "200M" # Nginx日志按200M大小轮转
修改后需执行以下命令使配置生效:
sudo gitlab-ctl reconfigure # 重新生成logrotate配置文件
sudo gitlab-ctl restart # 重启GitLab服务
对于使用Runit管理的GitLab版本(如早期Omnibus包),可通过/etc/gitlab/gitlab.rb配置svlogd参数:
logging['svlogd_size'] = 200 * 1024 * 1024 # 单个日志文件最大200MB
logging['svlogd_num'] = 30 # 保留30个轮转日志文件
logging['svlogd_timeout'] = 24 * 60 * 60 # 每24小时强制轮转一次
logging['svlogd_filter'] = "gzip" # 使用gzip压缩轮转后的日志
修改后同样需执行sudo gitlab-ctl reconfigure和sudo gitlab-ctl restart生效。
GitLab支持调整日志级别,控制日志输出的详细程度(级别从低到高::debug→:info→:warn→:error→:fatal→:unknown)。默认级别为:info,可根据需求修改:
# 调整Rails应用日志级别(最常用)
gitlab_rails['log_level'] = :debug # 开发调试时可设为debug,生产环境建议设为info或warn
# 调整Sidekiq日志级别
sidekiq['log_level'] = :warn # 后台任务日志设为warn,减少无关信息
修改后需执行以下命令使配置生效:
sudo gitlab-ctl reconfigure # 重新加载配置
sudo gitlab-ctl restart # 重启相关服务
sudo grep ' 404 ' /var/log/gitlab/nginx/access.log;gitlab-ctl查看特定时间段日志,如sudo gitlab-ctl tail rails --since "today"(查看Rails今日日志);