Skip to content

Create new hook to export git trace 2 events in gitaly logs

Create new hook in Default trace 2 hooks called LogExporter can be enabled by feature flag LogGitTraces.

LogExporter format trace from the parser into desired logging output and implements rate limiting on trace2 invocations at a rate of 25 invocations/second with a bucket of 25 burst tokens. These limits are configurable when creating an instance of LogExporter. Under the hood, the hook uses the Allow function from the rate package. It skips events if the limit has been exceeded

expected gitaly logs:

{
  "children": [
    {
      "thread": "main",
      "name": "version",
      "start_time": "2023-12-06T01:12:56.293005Z",
      "finish_time": "2023-12-06T01:12:56.293005Z",
      "metadata": {
        "elapsed_ms": "0",
        "exe": "2.42.0",
        "parent": "root:main"
      },
      "depth": 1
    },
    {
      "thread": "main",
      "name": "start",
      "start_time": "2023-12-06T01:12:56.29304Z",
      "finish_time": "2023-12-06T01:12:56.29304Z",
      "metadata": {
        "argv": "/Users/xxxx/Documents/gitlab-development-kit/tmp/gitaly-xxxxx/git-exec-1110416754.d/git --git-dir /Users/xxxx/Documents/gitlab-development-kit/repository_storages/praefect-gitaly-1/praefect-internal-1/@cluster/repositories/85/27/14 -c gc.auto=0 -c maintenance.auto=0 -c core.autocrlf=input -c core.useReplaceRefs=false -c core.fsync=objects,derived-metadata,reference -c core.fsyncMethod=fsync -c core.packedRefsTimeout=10000 -c core.filesRefLockTimeout=1000 -c core.bigFileThreshold=50m rev-parse --show-object-format",
        "elapsed_ms": "0",
        "parent": "root:main"
      },
      "depth": 1
    }
  ],
  "component": "trace2hooks.minimal_tracing_exporter",
  "end_time": "2023-12-06T01:12:56.29341Z",
  "level": "info",
  "metadata": {
    "code": "0",
    "elapsed_ms": "0"
  },
  "msg": "Git Trace2 API",
  "name": "root",
  "pid": 69717,
  "start_time": "2023-12-06T01:12:56.293005Z",
  "thread": "main",
  "time": "2023-12-06T01:12:56.293Z"
}

Closes #5700 (closed)

Edited by Emily Chui

Merge request reports