Система логирования¶
Платформа обладает развитой системой логирования, что при необходимости позволяет анализировать различные аспекты ее работы.
Системные логи обычно представляют собой файлы в обычном текстовом формате.
Уровни логов¶
Каждое сообщение имеет свой уровень, который указывает на его важность подробность. Каждому регистратору соответствует минимальный уровень логов. Регистратор генерирует сообщение только в том случае, если его минимальный уровень соответствует или превышает минимальный уровень лога.
Поддерживаются следующие уровни логов:
Уровень | Название |
---|---|
0 | DEBUG |
1 | INFO |
2 | WARN |
3 | ERROR |
4 | FATAL |
5 | UNKNOWN |
Регистраторы системы генерируют все сообщения логов, поскольку для них установлен уровень логирования DEBUG
.
Переопределение уровня логов по умолчанию¶
Предусмотрена возможность переопределения уровня логов для регистраторов Системы с помощью переменной среды GITLAB_LOG_LEVEL
. Валидными являются значения от 0 до 5 или соответствующие названия уровней.
Например:
GITLAB_LOG_LEVEL=info
Для некоторых сервисов предусмотрены другие уровни логов, на которые данные настройки не оказывают влияния. Для некоторых этих сервисов предусмотрены свои переменные среды, позволяющие переопределить уровень логов. Например:
Сервис | Уровень логов | Переменная среды |
---|---|---|
AppSec.Code API | INFO |
|
AppSec.Code Cleanup | INFO |
DEBUG |
AppSec.Code Doctor | INFO |
VERBOSE |
AppSec.Code Export | INFO |
EXPORT_DEBUG |
AppSec.Code Geo | INFO |
|
AppSec.Code Import | INFO |
IMPORT_DEBUG |
AppSec.Code QA Runtime | INFO |
QA_LOG_LEVEL |
Google APIs | INFO |
|
Rack Timeout | ERROR |
|
Sidekiq (server) | INFO |
|
Snowplow Tracker | FATAL |
|
gRPC Client (Gitaly) | WARN |
GRPC_LOG_LEVEL |
LLM | INFO |
LLM_DEBUG |
Ротация логов¶
Логирование и обеспечение ротации логов для данных сервисов может осуществляться следующими сервисами:
logrotate
;svlogd
(сервис ведения логовrunit
);logrotate
иsvlogd
;- или никаким.
В следующей таблице приведена информация о том, кто отвечает за ведение и ротацию логов для включенных сервисов. Логи, управляемые svlogd
, записываются в файл под названием current
. Встроенный сервис logrotate
управляет всеми логами, кроме тех, которые перехватывает runit
.
Тип логов | Управляется logrotate |
Управляется svlogd/runit |
---|---|---|
Alertmanager logs | Нет | Да |
crond logs | Нет | Да |
Gitaly | Да | Да |
AppSec.Code Exporter for Linux package installations | Нет | Да |
AppSec.Code Pages logs | Да | Да |
AppSec.Code Rails | Да | Нет |
AppSec.Code Shell logs | Да | Нет |
Grafana logs | Нет | Да |
LogRotate logs | Нет | Да |
Mailroom | Да | Да |
NGINX | Да | Да |
PgBouncer logs | Нет | Да |
PostgreSQL logs | Нет | Да |
Praefect logs | Да | Да |
Prometheus logs | Нет | Да |
Puma | Да | Да |
Redis logs | Нет | Да |
Registry logs | Нет | Да |
Workhorse logs | Да | Да |
production_json.log¶
Расположение:
/var/log/gitlab/gitlab-rails/production_json.log
при установке с помощью Linux-пакета./home/git/gitlab/log/production_json.log
на самокомпилирующихся установках.
Он содержит структурированный лог запросов к контроллеру Rails, получаемых из Системы благодаря lograge
. Запросы из API записываются в отдельный файл api_json.log
.
Каждая строка содержит JSON, который может быть получен такими сервисами, как Elasticsearch и Splunk. Для наглядности в примерах добавлены переносы строк:
{
"method":"GET",
"path":"/gitlab/gitlab-foss/issues/1234",
"format":"html",
"controller":"Projects::IssuesController",
"action":"show",
"status":200,
"time":"2017-08-08T20:15:54.821Z",
"params":[{"key":"param_key","value":"param_value"}],
"remote_ip":"18.245.0.1",
"user_id":1,
"username":"admin",
"queue_duration_s":0.0,
"gitaly_calls":16,
"gitaly_duration_s":0.16,
"redis_calls":115,
"redis_duration_s":0.13,
"redis_read_bytes":1507378,
"redis_write_bytes":2920,
"correlation_id":"O1SdybnnIq7",
"cpu_s":17.50,
"db_duration_s":0.08,
"view_duration_s":2.39,
"duration_s":20.54,
"pid": 81836,
"worker_id":"puma_0"
}
В данном примере был GET-запрос определенной Issue. Каждая строка также содержит данные о производительности с указанием времени в секундах:
duration_s
: общее время извлечения запроса;queue_duration_s
: общее время нахождения запроса в очереди GitLab Workhorse;view_duration_s
: общее время работы с представлениями в Rails;db_duration_s
: общее время извлечения запроса из PostgreSQL;cpu_s
: общие затраты процессорного времени;gitaly_duration_s
: общее время по вызовам Gitaly;gitaly_calls
: общее количество вызовов Gitaly;redis_calls
: общее количество вызовов Redis;redis_cross_slot_calls
: общее количество кросс-слотовых запросов Redis;redis_allowed_cross_slot_calls
: общее количество разрешенных кросс-слотовых запросов Redis;redis_duration_s
: общее время получения данных от Redis;redis_read_bytes
: общее количество байт, считанных с Redis;redis_write_bytes
: общее количество байт, записанных в Redis;redis_<instance>_calls
: общее количество запросов, сделанных в инстанс Redis;redis_<instance>_cross_slot_calls
: общее количество кросс-слотовых запросов, сделанных в инстанс Redis;redis_<instance>_allowed_cross_slot_calls
: общее количество допустимых кросс-слотовых запросов, сделанных запросов, сделанных в инстанс Redis;redis_<instance>_duration_s
: общее время, затраченное на извлечение данных из инстанса Redis;redis_<instance>_read_bytes
: количество байт, считанных из инстанса Redis;redis_<instance>_write_bytes
: общее количество байт, записанных в инстанс Redis;pid
: идентификатор рабочего процесса в Linux (изменяется при перезапуске рабочего процесса).
Действия пользователя по клонированию (clone) и выборке (fetch) с использованием HTTP-транспорта отображаются в логе как действие: git_upload_pack
.
Кроме того, в логе указывается IP-адрес источника (remote_ip
), идентификатор пользователя (us-er_id
) и его имя (username
).
Некоторые методы (например, /search
), при использовании расширенного поиска, могут выполнять запросы к Elasticsearch. Они логируются дополнительно как события elasticsearch_calls
и elasticsearch_call_duration_s
:
elasticsearch_calls
: общее количество обращений к Elasticsearch;elasticsearch_duration_s
: общее время, затраченное на обращения к Elasticsearch;elasticsearch_timed_out_count
: общее количество обращений к Elasticsearch, на которые не был получен своевременный ответ и, соответственно, частичные результаты.
События подключения и подписки ActionCable также записываются в этот файл и повторяют предыдущий формат. Поля method
, path
и format
не применяются — они всегда остаются пустыми. В качестве controller
используется класс соединения или канала ActionCable.
{ "method":null, "path":null, "format":null, "controller":"IssuesChannel", "action":"subscribe", "status":200, "time":"2020-05-14T19:46:22.008Z", "params":[{"key":"project_path","value":"gitlab/gitlab-foss"},{"key":"iid","value":"1"}], "remote_ip":"127.0.0.1", "user_id":1, "username":"admin", "ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:76.0) Gecko/20100101 Firefox/76.0", "correlation_id":"jSOIEynHCUa", "duration_s":0.32566 }
production.log¶
Данный файл располагается в директории:
/var/log/gitlab/gitlab-rails/production.log
при установке в качестве пакета Linux./home/git/gitlab/log/production.log
на самокомпилирующихся установках.
Он содержит информацию о все выполненных запросах. Можно просмотреть URL и тип запроса, IP-address и какие части кода были задействованы для обслуживания конкретного запроса. Кроме этого, можно просмотреть все выполненные SQL-запросы и какое время ушло на обработку каждого из них. Эта задача более полезна для разработчиков. Используйте часть этого лог-файла при формировании отчета об ошибках, например:
Started GET "/gitlabhq/yaml_db/tree/master" for 168.111.56.1 at 2015-02-12 19:34:53 +0200
Processing by Projects::TreeController#show as HTML
Parameters: {"project_id"=>"gitlabhq/yaml_db", "id"=>"master"}
... [CUT OUT]
Namespaces"."created_at" DESC, "namespaces"."id" DESC LIMIT 1 [["id", 26]]
CACHE (0.0ms) SELECT "members".\* FROM "members" WHERE "members"."source_type" = 'Project' AND "members"."type" IN ('ProjectMember') AND "members"."source_id" = $1 AND "members"."source_type" = $2 AND "members"."user_id" = 1 ORDER BY "members"."created_at" DESC, "members"."id" DESC LIMIT 1 [["source_id", 18], ["source_type", "Project"]]
CACHE (0.0ms) SELECT "members".\* FROM "members" WHERE "members"."source_type" = 'Project' AND "members".
(1.4ms) SELECT COUNT(\*) FROM "merge_requests" WHERE "merge_requests"."target_project_id" = $1 AND ("merge_requests"."state" IN ('opened','reopened')) [["target_project_id", 18]]
Rendered layouts/nav/\_project.html.haml (28.0ms)
Rendered layouts/\_collapse_button.html.haml (0.2ms)
Rendered layouts/\_flash.html.haml (0.1ms)
Rendered layouts/\_page.html.haml (32.9ms)
Completed 200 OK in 166ms (Views: 117.4ms | ActiveRecord: 27.2ms)
В этом примере сервер обрабатывает HTTP-запрос с URL /gitlabhq/yaml_db/tree/master
с IP-адреса 168.111.56.1
в 2015-02-12 19:34:53 +0200
. Запрос был обработан Projects::TreeController
.
api_json.log¶
Данный файл располагается в директории:
/var/log/gitlab/gitlab-rails/api_json.log
при установке в качестве пакета Linux./home/git/gitlab/log/api_json.log
на самокомпилирующихся установках.
Помогает просмотреть запросы, сделанные непосредственно к API, например:
`{
"time":"2018-10-29T12:49:42.123Z",
"severity":"INFO",
"duration":709.08,
"db":14.59,
"view":694.49,
"status":200,
"method":"GET",
"path":"/api/v4/projects",
"params":[{"key":"action","value":"git-upload-pack"},{"key":"changes","value":"\_any"},{"key":"key_id","value":"secret"},{"key":"secret_token","value":"[FILTERED]"}],
"host":"localhost",
"remote_ip":"::1",
"ua":"Ruby",
"route":"/api/:version/projects",
"user_id":1,
"username":"root",
"queue_duration":100.31,
"gitaly_calls":30,
"gitaly_duration":5.36,
"pid": 81836,
"worker_id": "puma_0",
...
}
Эта запись показывает запрос к внутреннему методу с целью проверки, имеет ли право соответствующий SSH-ключ скачать проект в результате использования команд git fetch
или git clone
. В этом примере мы можем видеть:
duration
: общее время в миллисекундах на получение запроса;queue_duration
: общее время в миллисекундах, в течение которого запрос находился в очереди GitLab Workhorse;method
: HTTP-метод, который использовался для запроса;path
: относительный путь запроса;params
: пары ключ-значение, передаваемый в строке запроса или в теле HTTP (конфиденциальные параметры, например, пароли или токены фильтруются);ua
: User-Agent запросчика.
application_json.log¶
Файл располагается в директории:
/var/log/gitlab/gitlab-rails/application_json.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/application_json.log
при самокомпилирующихся установках.
Помогает отследить события, происходящие в вашем инстансе, например, создание пользователя и удаление проекта. Например:
{
"severity":"INFO",
"time":"2020-01-14T13:35:15.466Z",
"correlation_id":"3823a1550b64417f9c9ed8ee0f48087e",
"message":"User \\"Administrator\\" (<admin@example.com>) was created"
}
{
"severity":"INFO",
"time":"2020-01-14T13:35:15.466Z",
"correlation_id":"78e3df10c9a18745243d524540bd5be4",
"message":"Project \\"project133\\" was removed"
}
integrations_json.log¶
Расположение:
/var/log/gitlab/gitlab-rails/integrations_json.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/integrations_json.log
при самокомпилирующихся установках.
Он содержит информацию об активностях, связанных с интеграциями, например с сервисами Jira, Asana, и irker. Используется формат JSON, см. пример ниже:
{
"severity":"ERROR",
"time":"2018-09-06T14:56:20.439Z",
"service_class":"Integrations::Jira",
"project_id":8,
"project_path":"h5bp/html5-boilerplate",
"message":"Error sending message",
"client_url":"<http://jira.gitlap.com:8080>",
"error":"execution expired"
}
{
"severity":"INFO",
"time":"2018-09-06T17:15:16.365Z",
"service_class":"Integrations::Jira",
"project_id":3,
"project_path":"namespace2/project2",
"message":"Successfully posted",
"client_url":"<http://jira.example.com>"
}
git_json.log¶
Расположение:
/var/log/gitlab/gitlab-rails/git_json.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/git_json.log
при самокомпилирующихся установках.
Система взаимодействует с Git-репозиториями, но в редких случаях возможны сбои. В этом случае необходимо точно знать причину их возникновения. Этот лог-файл содержит все ошибочные запросы от Системы к Git-репозиториям. В большинстве случаев файл может быть полезен только разработчикам. Например:
{
"severity":"ERROR",
"time":"2019-07-19T22:16:12.528Z",
"correlation_id":"FeGxww5Hj64",
"message":"Command failed [1]: /usr/bin/git --git-dir=/Users/vsizov/gitlab-development-kit/gitlab/tmp/tests/gitlab-satellites/group184/gitlabhq/.git --work-tree=/Users/vsizov/gitlab-development-kit/gitlab/tmp/tests/gitlab-satellites/group184/gitlabhq merge --no-ff -mMerge branch 'feature_conflict' into 'feature' source/feature_conflict\\n\\nerror: failed to push some refs to '/Users/vsizov/gitlab-development-kit/repositories/gitlabhq/gitlab_git.git'"
}
audit_json.log¶
Расположение:
/var/log/gitlab/gitlab-rails/audit_json.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/audit_json.log
при самокомпилирующихся установках.
В этот файл регистрируются изменения в группах или проектах, а также изменение информации об их участниках (target_details). Например:
{
"severity":"INFO",
"time":"2018-10-17T17:38:22.523Z",
"author_id":3,
"entity_id":2,
"entity_type":"Project",
"change":"visibility",
"from":"Private",
"to":"Public",
"author_name":"John Doe4",
"target_id":2,
"target_type":"Project",
"target_details":"namespace2/project2"
}
Логи Sidekiq¶
При установке в Linux-пакета перечисленные ниже логи Sidekiq располагаются в /var/log/gitlab/sidekiq/current
.
sidekiq.log¶
Основной формат лога для Helm chart установок изменен с text на json.
Расположение:
/var/log/gitlab/sidekiq/current
при установке в качестве Linux-пакета;/home/git/gitlab/log/sidekiq.log
при самокомпилирующихся установках.
Система использует фоновые задания для обработки долговременных задач. Вся информация об этих задачах записывается в этот файл. Например:
{
"severity":"INFO",
"time":"2018-04-03T22:57:22.071Z",
"queue":"cronjob:update_all_mirrors",
"args":[],
"class":"UpdateAllMirrorsWorker",
"retry":false,
"queue_namespace":"cronjob",
"jid":"06aeaa3b0aadacf9981f368e",
"created_at":"2018-04-03T22:57:21.930Z",
"enqueued_at":"2018-04-03T22:57:21.931Z",
"pid":10077,
"worker_id":"sidekiq_0",
"message":"UpdateAllMirrorsWorker JID-06aeaa3b0aadacf9981f368e: done: 0.139 sec",
"job_status":"done",
"duration":0.139,
"completed_at":"2018-04-03T22:57:22.071Z",
"db_duration":0.05,
"db_duration_s":0.0005,
"gitaly_duration":0,
"gitaly_calls":0
}
Вместо JSON можно выбрать генерацию логов Sidekiq в текстовом формате, например:
2023-05-16T16:08:55.272Z pid=82525 tid=23rl INFO: Initializing websocket
2023-05-16T16:08:55.279Z pid=82525 tid=23rl INFO: Booted Rails 6.1.7.2 application in production environment
2023-05-16T16:08:55.279Z pid=82525 tid=23rl INFO: Running in ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [arm64-darwin22]
2023-05-16T16:08:55.279Z pid=82525 tid=23rl INFO: See LICENSE and the LGPL-3.0 for licensing details.
2023-05-16T16:08:55.279Z pid=82525 tid=23rl INFO: Upgrade to Sidekiq Pro for more features and support: <https://sidekiq.org>
2023-05-16T16:08:55.286Z pid=82525 tid=7p4t INFO: Cleaning working queues
2023-05-16T16:09:06.043Z pid=82525 tid=7p7d class=ScheduleMergeRequestCleanupRefsWorker jid=efcc73f169c09a514b06da3f INFO: start
2023-05-16T16:09:06.050Z pid=82525 tid=7p7d class=ScheduleMergeRequestCleanupRefsWorker jid=efcc73f169c09a514b06da3f INFO: arguments: []
2023-05-16T16:09:06.065Z pid=82525 tid=7p81 class=UserStatusCleanup::BatchWorker jid=e279aa6409ac33031a314822 INFO: start
2023-05-16T16:09:06.066Z pid=82525 tid=7p81 class=UserStatusCleanup::BatchWorker jid=e279aa6409ac33031a314822 INFO: arguments: []
Для установки в качестве Linux-пакета добавьте в конфигурацию следующую опцию:
sidekiq['log_format'] = 'text'
Для самокомпилирующихся установок отредактируйте gitlab.yml и установите для Sidekiq log_format следующую опцию:
## Sidekiq
sidekiq:
log_format: text
sidekiq_client.log¶
Расположение:
/var/log/gitlab/gitlab-rails/sidekiq_client.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/sidekiq_client.log
при самокомпилирующихся установках.
Файл содержит информацию о заданиях, прежде чем Sidekiq начнет обрабатывать их, например, перед постановкой в очередь.
Структура этого файла аналогична sidekiq.log
— он представляет собой JSON-файл, если Sidekiq сконфигурирован указанным выше образом.
gitlab-shell.log¶
GitLab Shell используется Системой для выполнения команд Git, а также обеспечивает доступ к Git-репозиториям через SSH.
Информация, содержащая запросы git-{upload-pack,receive-pack}
, располагается в директории /var/log/gitlab/gitlab-shell/gitlab-shell.log
. Информация о хуках к GitLab Shell из Gitaly располагается в директории /var/log/gitlab/gitaly/current
.
Пример записей для /var/log/gitlab/gitlab-shell/gitlab-shell.log
:
{
"duration_ms": 74.104,
"level": "info",
"method": "POST",
"msg": "Finished HTTP request",
"time": "2020-04-17T20:28:46Z",
"url": "<http://127.0.0.1:8080/api/v4/internal/allowed>"
}
{
"command": "git-upload-pack",
"git_protocol": "",
"gl_project_path": "root/example",
"gl_repository": "project-1",
"level": "info",
"msg": "executing git command",
"time": "2020-04-17T20:28:46Z",
"user_id": "user-1",
"username": "root"
}
Пример записей для /var/log/gitlab/gitaly/current
:
{
"method": "POST",
"url": "<http://127.0.0.1:8080/api/v4/internal/allowed>",
"duration": 0.058012959,
"gitaly_embedded": true,
"pid": 16636,
"level": "info",
"msg": "finished HTTP request",
"time": "2020-04-17T20:29:08+00:00"
}
{
"method": "POST",
"url": "<http://127.0.0.1:8080/api/v4/internal/pre_receive>",
"duration": 0.031022552,
"gitaly_embedded": true,
"pid": 16636,
"level": "info",
"msg": "finished HTTP request",
"time": "2020-04-17T20:29:08+00:00"
}
Логи Gitaly¶
Файл располагается в /var/log/gitlab/gitaly/current
и создается runit
, который является частью Linux-пакета. Реализована ротация логов, их переименование в формате временных меток Unix и gzip-сжатие (например, @1584057562.s).
gitaly_hooks.log¶
Данный файл располагается в директории /var/log/gitlab/gitaly/gitaly_hooks.log
и генерируется командами gitaly-hooks. Он также содержит записи о сбоях, полученных при обработке ответов от GitLab API.
Puma logs¶
puma_stdout.log¶
Расположение:
/var/log/gitlab/puma/puma_stdout.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/puma_stdout.log
при самокомпилирующихся установках.
puma_stderr.log¶
Расположение:
/var/log/gitlab/puma/puma_stderr.log
при установке в качестве Linux-пакета./home/git/gitlab/log/puma_stderr.log
при самокомпилирующихся установках.
repocheck.log¶
Расположение:
/var/log/gitlab/gitlab-rails/repocheck.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/repocheck.log
при самокомпилирующихся установках.
Он логирует информацию о каждом запуске проверки репозитория в проекте.
importer.log¶
Расположение:
/var/log/gitlab/gitlab-rails/importer.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/importer.log
при самокомпилирующихся установках.
В этом логе регистрируется ход импорта и миграции проектов.
exporter.log¶
Расположение:
/var/log/gitlab/gitlab-rails/exporter.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/exporter.log
при самокомпилирующихся установках.
В этом логе регистрируется ход выполнения процесса экспорта.
features_json.log¶
Расположение:
/var/log/gitlab/gitlab-rails/features_json.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/features_json.log
при самокомпилирующихся установках.
В этом файле записываются события модификации от Feature-флагов при разработке системы. Например:
{"severity":"INFO","time":"2020-11-24T02:30:59.860Z","correlation_id":null,"key":"cd_auto_rollback","action":"enable","extra.thing":"true"}
{"severity":"INFO","time":"2020-11-24T02:31:29.108Z","correlation_id":null,"key":"cd_auto_rollback","action":"enable","extra.thing":"true"}
{"severity":"INFO","time":"2020-11-24T02:31:29.129Z","correlation_id":null,"key":"cd_auto_rollback","action":"disable","extra.thing":"false"}
{"severity":"INFO","time":"2020-11-24T02:31:29.177Z","correlation_id":null,"key":"cd_auto_rollback","action":"enable","extra.thing":"Project:1"}
{"severity":"INFO","time":"2020-11-24T02:31:29.183Z","correlation_id":null,"key":"cd_auto_rollback","action":"disable","extra.thing":"Project:1"}
{"severity":"INFO","time":"2020-11-24T02:31:29.188Z","correlation_id":null,"key":"cd_auto_rollback","action":"enable_percentage_of_time","extra.percentage":"50"}
{"severity":"INFO","time":"2020-11-24T02:31:29.193Z","correlation_id":null,"key":"cd_auto_rollback","action":"disable_percentage_of_time"}
{"severity":"INFO","time":"2020-11-24T02:31:29.198Z","correlation_id":null,"key":"cd_auto_rollback","action":"enable_percentage_of_actors","extra.percentage":"50"}
{"severity":"INFO","time":"2020-11-24T02:31:29.203Z","correlation_id":null,"key":"cd_auto_rollback","action":"disable_percentage_of_actors"}
{"severity":"INFO","time":"2020-11-24T02:31:29.329Z","correlation_id":null,"key":"cd_auto_rollback","action":"remove"}
ci_resource_groups_json.log¶
Расположение:
/var/log/gitlab/gitlab-rails/ci_resource_group_json.log
при установке в качестве Linux-пакета./home/git/gitlab/log/ci_resource_group_json.log
при самокомпилирующихся установках.
Содержит информацию о приобретении групповых ресурсов. Например:
{"severity":"INFO","time":"2023-02-10T23:02:06.095Z","correlation_id":"01GRYS10C2DZQ9J1G12ZVAD4YD","resource_group_id":1,"processable_id":288,"message":"attempted to assign resource to processable","success":true}
{"severity":"INFO","time":"2023-02-10T23:02:08.945Z","correlation_id":"01GRYS138MYEG32C0QEWMC4BDM","resource_group_id":1,"processable_id":288,"message":"attempted to release resource from processable","success":true}
В примере показаны поля resource_group_id
, processable_id
, message
и success
для каждой записи.
auth.log¶
Расположение:
/var/log/gitlab/gitlab-rails/auth.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/auth.log
при самокомпилирующихся установках.
В логе регистрируются:
- Запросы, превышающие лимит на необработанных методах.
- Идентификатор (ID) и имя пользователя (при наличии).
auth_json.log¶
Расположение:
/var/log/gitlab/gitlab-rails/auth_json.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/auth_json.log
при самокомпилирующихся установках.
Файл содержит JSON-версию логов auth.log
, например:
{
"severity":"ERROR",
"time":"2023-04-19T22:14:25.893Z",
"correlation_id":"01GYDSAKAN2SPZPAMJNRWW5H8S",
"message":"Rack_Attack",
"env":"blocklist",
"remote_ip":"x.x.x.x",
"request_method":"GET",
"path":"/group/project.git/info/refs?service=git-upload-pack"
}
graphql_json.log¶
Расположение:
/var/log/gitlab/gitlab-rails/graphql_json.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/graphql_json.log
при самокомпилирующихся установках.
Содержит запросы GraphQL, записанные в файл, например:
{"query_string":"query IntrospectionQuery{\__schema {queryType { name },mutationType { name }}}...(etc)","variables":{"a":1,"b":2},"complexity":181,"depth":1,"duration_s":7}
migrations.log¶
Расположение:
/var/log/gitlab/gitlab-rails/migrations.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/migrations.log
при самокомпилирующихся установках.
В данном файле регистрируется ход миграции базы данных.
mail_room_json.log (default)¶
Расположение:
/var/log/gitlab/mailroom/current
при установке в качестве Linux-пакета;/home/git/gitlab/log/mail_room_json.log
при самокомпилирующихся установках.
Структурированный лог-файл фиксирует внутреннюю активность в gem-библиотеке mail_room
. Ее имя и файл настраиваются, поэтому могут отличаться от приведенных выше.
web_hooks.log¶
Расположение:
/var/log/gitlab/gitlab-rails/web_hooks.log
при установке в качестве Linux-пакета./home/git/gitlab/log/web_hooks.log
при самокомпилирующихся установках.
В файл записываются события, связанные с веб-хуками, например:
{"severity":"INFO","time":"2020-11-24T02:30:59.860Z","hook_id":12,"action":"backoff","disabled_until":"2020-11-24T04:30:59.860Z","backoff_count":2,"recent_failures":2}
{"severity":"INFO","time":"2020-11-24T02:30:59.860Z","hook_id":12,"action":"disable","disabled_until":null,"backoff_count":5,"recent_failures":100}
{"severity":"INFO","time":"2020-11-24T02:30:59.860Z","hook_id":12,"action":"enable","disabled_until":null,"backoff_count":0,"recent_failures":0}
sidekiq_exporter.log и web_exporter.log¶
Если активированы и Prometheus metrics, и Sidekiq Exporter, Sidekiq запускает веб-сервер и прослушивает определенный порт (по умолчанию: 8082
). По умолчанию логи доступа Sidekiq Exporter access отключены, но могут включаться:
- Используйте опцию
sidekiq['exporter_log_enabled'] = true
в/etc/gitlab/gitlab.rb
при установке в качестве Linux-пакета. - Используйте опцию
sidekiq_exporter.log_enabled
вgitlab.yml
при самокомпилирующихся установках.
Если логирование включено, в зависимости от способа установки файл располагается в директории:
/var/log/gitlab/gitlab-rails/sidekiq_exporter.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/sidekiq_exporter.log
при самокомпилирующихся установках.
Если активированы и Prometheus metrics, и Sidekiq Exporter, Puma запускает веб-сервер и прослушивает определенный порт (по умолчанию: 8083). Логи доступа генерируются зависящем от способа установки месте:
- /var/log/gitlab/gitlab-rails/web_exporter.log при установке в качестве Linux-пакета;
- /home/git/gitlab/log/web_exporter.log при самокомпилирующихся установках.
database_load_balancing.log¶
Содержит подробную информацию о балансировке нагрузки базы данных Системы. Расположение:
/var/log/gitlab/gitlab-rails/database_load_balancing.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/database_load_balancing.log
при самокомпилирующихся установках.
zoekt.log¶
В файле регистрируется информация, связанная с функцией поиска по точному коду, которая функционирует на базе Zoekt.
Расположение:
/var/log/gitlab/gitlab-rails/zoekt.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/zoekt.log
при самокомпилирующихся установках.
elasticsearch.log¶
Этот лог-файл содержит информацию, имеющую отношение к интеграции с Elasticsearch, включая ошибки, возникающие в ходе индексации или выполнения поисковых запросов Elasticsearch. Расположение:
/var/log/gitlab/gitlab-rails/elasticsearch.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/elasticsearch.log
при самокомпилирующихся установках.
Каждая строка содержит JSON, который может быть получен такими сервисами, как Elasticsearch и Splunk. Для наглядности в приведенном ниже примере добавлены разрывы строк:
{
"severity":"DEBUG",
"time":"2019-10-17T06:23:13.227Z",
"correlation_id":null,
"message":"redacted_search_result",
"class_name":"Milestone",
"id":2,
"ability":"read_milestone",
"current_user_id":2,
"query":"project"
}
exceptions_json.log¶
Файл содержит информацию об исключениях, отслеживаемых Gitlab::ErrorTracking, который обеспечивает стандартный и последовательный способ обработки сохраненных исключений.
/var/log/gitlab/gitlab-rails/exceptions_json.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/exceptions_json.log
при самокомпилирующихся установках.
Каждая строка содержит JSON, который может быть получен Elasticsearch, например:
{
"severity": "ERROR",
"time": "2019-12-17T11:49:29.485Z",
"correlation_id": "AbDVUrrTvM1",
"extra.project_id": 55,
"extra.relation_key": "milestones",
"extra.relation_index": 1,
"exception.class": "NoMethodError",
"exception.message": "undefined method \`strong_memoize' for #<Gitlab::ImportExport::RelationFactory:0x00007fb5d917c4b0>",
"exception.backtrace": [
"lib/gitlab/import_export/relation_factory.rb:329:in \`unique_relation?'",
"lib/gitlab/import_export/relation_factory.rb:345:in \`find_or_create_object!'"
]
}
service_measurement.log¶
Расположение:
/var/log/gitlab/gitlab-rails/service_measurement.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/service_measurement.log
при самокомпилирующихся установках.
Файл содержит один структурированный лог с изменениями для каждого экземпляра сервиса. Он также содержит такие изменения, как количество SQL-запросов, execution_time, gc_stats и memory usage. Пример:
{ "severity":"INFO", "time":"2020-04-22T16:04:50.691Z","correlation_id":"04f1366e-57a1-45b8-88c1-b00b23dc3616","class":"Projects::ImportExport::ExportService","current_user":"John Doe","project_full_path":"group1/test-export","file_path":"/path/to/archive","gc_stats":{"count":{"before":127,"after":127,"diff":0},"heap_allocated_pages":{"before":10369,"after":10369,"diff":0},"heap_sorted_length":{"before":10369,"after":10369,"diff":0},"heap_allocatable_pages":{"before":0,"after":0,"diff":0},"heap_available_slots":{"before":4226409,"after":4226409,"diff":0},"heap_live_slots":{"before":2542709,"after":2641420,"diff":98711},"heap_free_slots":{"before":1683700,"after":1584989,"diff":-98711},"heap_final_slots":{"before":0,"after":0,"diff":0},"heap_marked_slots":{"before":2542704,"after":2542704,"diff":0},"heap_eden_pages":{"before":10369,"after":10369,"diff":0},"heap_tomb_pages":{"before":0,"after":0,"diff":0},"total_allocated_pages":{"before":10369,"after":10369,"diff":0},"total_freed_pages":{"before":0,"after":0,"diff":0},"total_allocated_objects":{"before":24896308,"after":24995019,"diff":98711},"total_freed_objects":{"before":22353599,"after":22353599,"diff":0},"malloc_increase_bytes":{"before":140032,"after":6650240,"diff":6510208},"malloc_increase_bytes_limit":{"before":25804104,"after":25804104,"diff":0},"minor_gc_count":{"before":94,"after":94,"diff":0},"major_gc_count":{"before":33,"after":33,"diff":0},"remembered_wb_unprotected_objects":{"before":34284,"after":34284,"diff":0},"remembered_wb_unprotected_objects_limit":{"before":68568,"after":68568,"diff":0},"old_objects":{"before":2404725,"after":2404725,"diff":0},"old_objects_limit":{"before":4809450,"after":4809450,"diff":0},"oldmalloc_increase_bytes":{"before":140032,"after":6650240,"diff":6510208},"oldmalloc_increase_bytes_limit":{"before":68537556,"after":68537556,"diff":0}},"time_to_finish":0.12298400001600385,"number_of_sql_calls":70,"memory_usage":"0.0 MiB","label":"process_48616"}
geo.log¶
Модуль Geo сохраняет структурированные сообщения лога в файле geo.log
. Для установки в качестве Linux-пакета файл располагается по следующему пути /var/log/gitlab/gitlab-rails/geo.log
.
Файл содержит информацию о попытках Geo синхронизировать репозитории и файлы. Каждая строка в файле содержит отдельную JSON-запись, которая может передаваться, например в Elasticsearch или Splunk.
Например:
{"severity":"INFO","time":"2017-08-06T05:40:16.104Z","message":"Repository update","project_id":1,"source":"repository","resync_repository":true,"resync_wiki":true,"class":"Gitlab::Geo::LogCursor::Daemon","cursor_delay_s":0.038}
Данное сообщение указывает на то, что Geo обнаружил необходимость обновления репозитория для проекта 1.
update_mirror_service_json.log¶
Расположение:
/var/log/gitlab/gitlab-rails/update_mirror_service_json.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/update_mirror_service_json.log
при самокомпилирующихся установках.
Файл содержит информации об ошибках LFS, произошедших в ходе зеркалирования проекта.
{
"severity":"ERROR",
"time":"2020-07-28T23:29:29.473Z",
"correlation_id":"5HgIkCJsO53",
"user_id":"x",
"project_id":"x",
"import_url":"<https://mirror-source/group/project.git>",
"error_message":"The LFS objects download list couldn't be imported. Error: Unauthorized"
}
llm.log¶
Лог с информацией о функциональных возможностях, связанных с AI.
Расположение:
/var/log/gitlab/gitlab-rails/llm.log
при установке в качестве Linux-пакета;/home/git/gitlab/log/llm.log
при самокомпилирующихся установках.
Логи NGINX¶
При установке в качестве пакета Linux логи NGINX располагаются в следующих директориях:
/var/log/gitlab/nginx/gitlab_access.log
: лог запросов, сделанных Системой;/var/log/gitlab/nginx/gitlab_error.log
: лог ошибок NGINX для системы;/var/log/gitlab/nginx/gitlab_pages_access.log
: лог запросов, сделанных к статическим сайтам Pages;/var/log/gitlab/nginx/gitlab_pages_error.log
: лог ошибок NGINX для статических сайтов Pages;/var/log/gitlab/nginx/gitlab_registry_access.log
: лог запросов, сделанный к реестру контейнеров;/var/log/gitlab/nginx/gitlab_registry_error.log
: лог ошибок NGINX для реестра контейнеров;/var/log/gitlab/nginx/gitlab_mattermost_access.log
: лог запросов, сделанный к Mattermost;/var/log/gitlab/nginx/gitlab_mattermost_error.log
: лог ошибок NGINX для Mattermost.
Ниже приводится формат лога NGINX по умолчанию:
'$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'
$request и $http_referer фильтруются на наличие параметров запросов конфиденциальной информации, например, токенов.
Логи Pages¶
При установке в качестве Linux-пакета логи Pages располагаются в директории /var/log/gitlab/gitlab-pages/current
.
Пример:
{
"level": "info",
"msg": "GitLab Pages Daemon",
"revision": "52b2899",
"time": "2020-04-22T17:53:12Z",
"version": "1.17.0"
}
{
"level": "info",
"msg": "URL: <https://gitlab.com/gitlab-org/gitlab-pages>",
"time": "2020-04-22T17:53:12Z"
}
{
"gid": 998,
"in-place": false,
"level": "info",
"msg": "running the daemon as unprivileged user",
"time": "2020-04-22T17:53:12Z",
"uid": 998
}
Логи Mattermost¶
При установке в качестве Linux-пакета логи Mattermost располагаются в следующих директориях:
/var/log/gitlab/mattermost/mattermost.log
;/var/log/gitlab/mattermost/current
.
Логи Workhorse¶
При установке в качестве Linux-пакета логи Workhorse располагаются в директории /var/log/gitlab/gitlab-workhorse/current
.
Логи PgBouncer¶
При установке в качестве Linux-пакета логи PgBouncer располагаются в директории /var/log/gitlab/pgbouncer/current
.
Логи PostgreSQL¶
При установке в качестве Linux-пакета логи PostgreSQL располагаются в директории /var/log/gitlab/postgresql/current
.
Логи Prometheus¶
При установке в качестве Linux-пакета логи Prometheus располагаются в директории /var/log/gitlab/prometheus/current
.
Логи Redis¶
При установке в качестве Linux-пакета логи Redis располагаются в директории /var/log/gitlab/redis/current
.
Логи Alertmanager¶
При установке в качестве Linux-пакета логи Alertmanager располагаются в директории /var/log/gitlab/alertmanager/current
.
Логи crond¶
При установке в качестве Linux-пакета логи crond располагаются в директории /var/log/gitlab/crond/
.
Логи Grafana¶
При установке в качестве Linux-пакета логи Grafana располагаются в директории /var/log/gitlab/grafana/current
.
Логи LogRotate¶
При установке в качестве Linux-пакета логи logrotate располагаются в директории /var/log/gitlab/logrotate/current
.
Логи GitLab Monitor¶
При установке в качестве Linux-пакета логи GitLab Monitor располагаются в директории /var/log/gitlab/gitlab-monitor/
.
GitLab Exporter¶
При установке в качестве Linux-пакета логи GitLab Exporter располагаются в директории /var/log/gitlab/gitlab-exporter/current
.
Сервер GitLab agent¶
При установке в качестве Linux-пакета логи сервера GitLab agent располагаются в директории /var/log/gitlab/gitlab-kas/current
.
Логи Praefect¶
При установке в качестве Linux-пакета логи Praefect располагаются в директории /var/log/gitlab/praefect/
.
Логи резервного копирования¶
При установке в качестве Linux-пакета логи резервного копирования располагаются в директории /var/log/gitlab/gitlab-rails/backup_json.log
.
Данный лог пополняется при выполнении резервного копирования системы.