一、日志查看方法
使用gitlab-ctl命令(推荐)
GitLab自带的命令行工具,可便捷查看实时日志或特定服务日志。常用命令:
sudo gitlab-ctl tailsudo gitlab-ctl tail nginx/gitlab_access.log、sudo gitlab-ctl tail nginx/gitlab_error.logsudo gitlab-ctl tail /var/log/gitlab/gitlab-rails/production.log直接查看日志文件
GitLab主日志目录为/var/log/gitlab,可通过常规命令查看:
cat查看完整日志(如sudo cat /var/log/gitlab/gitlab-rails/production.log);less分页查看(如sudo less /var/log/gitlab/gitlab-rails/production.log);tail -f实时跟踪日志更新(如sudo tail -f /var/log/gitlab/gitlab-rails/production.log)使用journalctl命令(Systemd系统)
适用于CentOS 7及以上系统,可查看GitLab服务的系统日志:
sudo journalctl -u gitlab-rails;sudo journalctl -n 100;sudo journalctl -u gitlab-rails -f二、日志轮转配置
内置Logrotate配置(Omnibus安装)
GitLab Omnibus版本内置logrotate,可通过修改/etc/gitlab/gitlab.rb自定义参数:
logging['svlogd_size'] = 200 * 1024 * 1024 # 单个日志文件超过200MB时切割
logging['svlogd_num'] = 30 # 保留30个历史日志文件
logging['svlogd_timeout'] = 86400 # 每24小时生成新日志文件
logging['svlogd_filter'] = "gzip" # 使用gzip压缩旧日志
修改后执行sudo gitlab-ctl reconfigure使配置生效
自定义Logrotate配置(可选)
若需更灵活的控制,可在/etc/logrotate.d/下创建gitlab配置文件,例如:
/var/log/gitlab/*.log {
daily # 每天轮转
rotate 30 # 保留30天
compress # 压缩旧日志
missingok # 忽略缺失文件
notifempty # 空日志不轮转
}
保存后,logrotate会自动按计划执行(默认通过cron每日运行)
三、日志分析与监控
内置监控工具
Admin Area > Monitoring,可查看系统健康状况、性能指标及日志摘要。gitlab-exporter收集GitLab指标,与Prometheus集成,用Grafana实现可视化监控(如请求延迟、资源占用)。第三方日志分析工具
/var/log/gitlab/*.log),存储至Elasticsearch,用Kibana实现日志搜索、分析与可视化(如异常趋势、高频错误)。四、日志清理策略
GitLab内置清理
logrotate配置(如上述svlogd_num、logrotate_rotate参数)自动清理过期日志;/var/log/gitlab目录,删除指定时间前的日志文件(如sudo find /var/log/gitlab -name "*.log" -mtime +30 -exec rm {} \;)Git仓库日志清理
git reflog expire --expire=30d --all;git gc --prune=30.days.ago(需在GitLab仓库目录执行,建议在维护窗口操作)