Gerrit 日志位于 gerrit-site/logs 目录下,主要有以下几种:
error_log、httpd_log、sshd_log、replication_log 等。
默认的,日志每天会自动压缩存储(gerrit 配置里),所以在该目录下会出现 gz 文件。
各个日志的字段含义,见下文具体解析
error_log
error_log 是导致 gerrit server 启动失败的日志
[date time]:时间戳.
[thread name]: : name of the Java thread executing the request.
level: 日志级别 (ERROR, WARN, INFO, DEBUG).
logger: name of the logger.
message: log message.
stacktrace:异常java栈信息
gc_log
gc 的配置、gc 前后 package 信息对比
[date time]:时间戳
level: 日志级别 (ERROR, WARN, INFO, DEBUG).
message: log message
httpd_log
获取 Gerrit 服务(GET、POST)时服务的日志
host:发送请求的客户端名
[thread name]:处理请求的线程名称
remote logname: the identifier used to link: identify the client making the HTTP request, Gerrit always logs a dash -.
username: 客户登录使用的名称,"-" 表示 匿名用户
[date:time]:时间戳
[request]:请求方式,例如 POST、GET
[statuscode]:状态码
[response size]: 返回的字节数
[latency]:响应时间,毫秒.
referer: the Referer HTTP request header. This gives the site that the client reports having been referred from.
[client agent]: the client agent which sent the request.
# 举例说明。如下 httpd 日志。
12.34.56.78 [HTTP-4136374] - johndoe [28/Aug/2020:10:02:20 +0200] "GET /a/plugins/metrics-reporter-prometheus/metrics HTTP/1.1" 200 1247498 1900 - "Prometheus/2.13.1"
sshd_log
sshd 更加复杂一点,标准的日志格式包含以下内容:
- date time
- session-d
- [thread name]
- username
- accountid:登录 gerrit 的账户
- operation:通过 ssh 方式的操作,可能有以下几种用户场景:
-
- LOGIN FROM <host>:登录的 Host
- AUTH FAILURE FROM <host> <message>:登录失败才有的日志
- LOGOUT
- git-upload-pack.<project name>:git fetch 或者 clone 某个project
- git-receive-pack.<project name>:git push 某个project
-
- wait : 等待命令执行的时间,毫秒
- exec: 执行命令的耗时,毫秒
- status:0 代表执行成功,其他值代表错误
其中,当 operation 是 git-upload-pack 的时候,在exec 和 status 之间,还有额外的字段:
- time negotiation:寻找待传目标耗时
- time searching for reuse:jgit 搜索增量改变的耗时
- time searching for sizes:jgit 搜索"增量压缩里的内容大小"的耗时
- time counting:jgit 列举输出内容的耗时
- time compressing:jgit 压缩操作的耗时
- time writing:jgit 写打包文件的耗时
- total time in uploadPack:jgit 上传包的耗时
- bitmap index misses:使用 bitmap 索引时未命中的数量,-1 表示没有 bitmap 索引可用
- total deltas:所有增量的数量
- total bytes:传输的总字节数
- client agent:所请求的客户端及其版本信息
# 举例
[2020-08-28 11:00:01,391 +0200] 8a154cae [sshd-SshServer[570fc452]-nio2-thread-299] voter a/1000023 LOGIN FROM 12.34.56.78[2020-08-28 11:00:01,556 +0200] 8a154cae [SSH git-upload-pack /AP/ajs/jpaas-msg-svc.git (voter)] voter a/1000056 git-upload-pack./demo/project.git 0ms 115ms 92ms 1ms 0ms 6ms 0ms 0ms 7ms 3 10 26 2615 0 git/2.26.2[2020-08-28 11:00:01,583 +0200] 8a154cae [sshd-SshServer[570fc452]-nio2-thread-168] voter a/1000023 LOGOUT
replication_log
Gerrit 同步插件往 slave 进行代码备份的日志,同样保存在 /gerrit/logs 下
delete_log
其他业务场景需要写入的日志,例如删除日志,非gerrit标准,自定义写入