控制台实时查看log

我们可以用gitlab-ctl tail 命令查看实时log。

查看所有的logs; 按 Ctrl-C 退出

sudo gitlab-ctl tail

拉取/var/log/gitlab下子目录的日志

sudo gitlab-ctl tail gitlab-rails

拉取某个指定的日志文件

sudo gitlab-ctl tail nginx/gitlab_error.log

gitlab的日志分类

  1. production.log:该日志位于/home/gitlab/logs/gitlab-rails中,其作用是记录gitlab的每次请求的具体信息,包括请求的URL、ip地址、请求类型、以及此次请求所涉及的具体代码、SQL请求以及SQL请求消耗的时间。
  2. application.log:此日志文件位于/home/gitlab/logs/gitlab-rails中,其作用是记录创建用户、创建项目、移动项目等日志。
  3. githost.log:此日志文件位于/home/gitlab/logs/gitlab-rails中,此日志的作用是记录对gitlab服务器的错误请求日志。
  4. sidekiq.log:此日志文件位于/home/gitlab/logs/gitlab-rails中,gitlab中可能存在一些任务需要运行很长时间,因此会选择将这些任务在后台执行,sidekiq.log文件就是用来记录这一类任务的处理信息,此日志文件是一个软连接文件。
  5. gitlab-shell.log:此日志文件位于/home/gitlab/logs/gitlab-shell中,该日志文件的作用是记录执行gitlab命令以及为项目添加ssh权限的日志文件
  6. unicorn/stderr.log:此日志文件位于/home/gitlab/logs/unicorn,该日志文件的作用是记录gitlab的web服务器的相关记录。
  7. repochec.log:此日志文件位于/home/gitlab/logs/prometheus

修改/etc/gitlab/gitlab.rb文件里面如下参数可以自定义svlogd:

# 下面的参数均为默认值
logging['svlogd_size'] = 200 * 1024 * 1024 # 切割超过200M的日志文件
logging['svlogd_num'] = 30 # 日志文件保留30天
logging['svlogd_timeout'] = 24 * 60 * 60 # 每24 hours生成新一天的日志
logging['svlogd_filter'] = "gzip" # 使用gzip压缩日志
logging['svlogd_udp'] = nil # 使用UDP协议传输日志
logging['svlogd_prefix'] = nil # 自定义日志信息的prefix

# 可以修改prefix,如修改为nginx
nginx['svlogd_prefix'] = "nginx"

Logrotate日志管理 

Omnibus-gitlab从7.4版本开始内置了logrotate服务。 这个服务用来切割、 压缩并最终删除已不受Runit服务(即上节里面的svlogd)控制的日志文件, 如gitlab-rails/production.lognginx/gitlab_access.log。 你可以根据需求修改/etc/gitlab/gitlab.rb中logrotate的参数。

# 下面的参数均为默认值
logging['logrotate_frequency'] = "daily" # 每天切割一次日志
logging['logrotate_size'] = nil # 不按照默认值的大小切割日志
logging['logrotate_rotate'] = 30 # 日志文件保留30天
logging['logrotate_compress'] = "compress" # 使用'man logrotate'查看详情
logging['logrotate_method'] = "copytruncate" # 使用'man logrotate'查看详情
logging['logrotate_postrotate'] = nil # 默认没有postrotate(切割后执行的)命令
logging['logrotate_dateformat'] = nil # 指定日志文件名格式(默认是数字表示),比如该值修改为 "-%Y-%m-%d" ,那么切割的日志文件名为 production.log-2016-03-09.gz


# 单个服务的设置会覆盖全局设置,如修改Nginx的logrotate配置
nginx['logrotate_frequency'] = nil
nginx['logrotate_size'] = "200M"

# 当然你也可以任性的禁用内置的logrotate服务
logrotate['enable'] = false

UDP log shipping (GitLab Enterprise Edition only) 

Omnibus-gitlab企业版可以配置使用UDP传输syslog-ish日志信息。

logging['udp_log_shipping_host'] = '1.2.3.4' # syslog服务器地址
logging['udp_log_shipping_port'] = 1514 # 可选,默认端口514 (syslog)