- 로그 레벨
- 로그 회전
production_json.log
production.log
api_json.log
application.log
(deprecated)application_json.log
integrations_json.log
kubernetes.log
(사용되지 않음)git_json.log
audit_json.log
- Sidekiq 로그
gitlab-shell.log
- Gitaly 로그
- Puma 로그
repocheck.log
importer.log
exporter.log
features_json.log
ci_resource_groups_json.log
auth.log
auth_json.log
graphql_json.log
clickhouse.log
migrations.log
mail_room_json.log
(기본)web_hooks.log
- 리컨피규어 로그
sidekiq_exporter.log
및web_exporter.log
database_load_balancing.log
zoekt.log
elasticsearch.log
exceptions_json.log
service_measurement.log
geo.log
update_mirror_service_json.log
llm.log
epic_work_item_sync.log
- 레지스트리 로그
- NGINX 로그
- 페이지 로그
- Let’s Encrypt 로그
- Mattermost 로그
- Workhorse 로그
- PgBouncer 로그
- PostgreSQL 로그
- Prometheus 로그
- Redis 로그
- Alertmanager 로그
- crond 로그
- Grafana 로그
- LogRotate 로그
- GitLab Monitor 로그
- GitLab Exporter
- GitLab agent server
- Praefect 로그
- 백업 로그
- 성능 바 통계
- 로그 수집
- 상관 ID로 관련 로그 항목 찾기
로그 시스템
GitLab에는 모든 것이 기록되는 고급 로그 시스템이 있어서 다양한 시스템 로그 파일을 사용하여 인스턴스를 분석할 수 있습니다. 로그 시스템은 감사 이벤트와 유사합니다.
시스템 로그 파일은 일반적으로 표준 로그 파일 형식의 일반 텍스트입니다. 이 안내서에서는 이러한 시스템 로그 파일을 읽고 활용하는 방법에 대해 다룹니다.
로그 시스템 및 로그 사용에 대해 자세히 알아보기:
- Linux 패키지 설치에서 로깅 사용자 정의 로그 보관 기간 및 전달 설정, JSON에서 평문 로깅으로 전환, 기타 등등.
- JSON 로그 구문 분석 방법.
로그 레벨
각 로그 메시지에는 중요도와 상세함을 나타내는 할당된 로그 레벨이 있습니다. 각 로거에는 할당된 최소 로그 레벨이 있습니다. 로거는 최소 로그 레벨과 같거나 더 높을 경우에만 로그 메시지를 발생시킵니다.
다음 로그 레벨이 지원됩니다:
레벨 | 이름 |
---|---|
0 | DEBUG
|
1 | INFO
|
2 | WARN
|
3 | ERROR
|
4 | FATAL
|
5 | UNKNOWN
|
GitLab 로거는 기본적으로 DEBUG
로 설정되어 있기 때문에 모든 로그 메시지를 발생시킵니다.
기본 로그 레벨 재지정
GITLAB_LOG_LEVEL
환경 변수를 사용하여 GitLab 로거의 최소 로그 레벨을 덮어쓸 수 있습니다. 유효한 값은 0
에서 5
의 값이거나 로그 레벨의 이름입니다.
예시:
GITLAB_LOG_LEVEL=info
일부 서비스의 경우,이 설정에 영향을받지 않는 다른 로그 레벨이 적용됩니다. 이러한 서비스 중 일부는 로그 레벨을 덮어쓰기 위한 자체 환경 변수를 가지고 있습니다. 예를 들어:
서비스 | 로그 레벨 | 환경 변수 |
---|---|---|
GitLab API | INFO
| |
GitLab Cleanup | INFO
| DEBUG
|
GitLab Doctor | INFO
| VERBOSE
|
GitLab Export | INFO
| EXPORT_DEBUG
|
GitLab Geo | INFO
| |
GitLab Import | INFO
| IMPORT_DEBUG
|
GitLab 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
입니다. GitLab에 내장 된 logrotate
서비스는
모든 로그를 관리하지만, runit
에 의해 캡처되지 않은 로그는 해당되지 않습니다.
로그 유형 | logrotate에 의한 관리 | svlogd/runit에 의한 관리 |
---|---|---|
Alertmanager 로그 | 아니요 | 예 |
crond 로그 | 아니요 | 예 |
Gitaly | 예 | 예 |
Linux 패키지 설치용 GitLab Exporter 로그 | 아니요 | 예 |
GitLab Pages 로그 | 예 | 예 |
GitLab 레일스 | 예 | 아니요 |
GitLab Shell 로그 | 예 | 아니요 |
Grafana 로그 | 아니요 | 예 |
LogRotate 로그 | 아니요 | 예 |
Mailroom | 예 | 예 |
NGINX | 예 | 예 |
PgBouncer 로그 | 아니요 | 예 |
PostgreSQL 로그 | 아니요 | 예 |
Praefect 로그 | 예 | 예 |
Prometheus 로그 | 아니요 | 예 |
Puma 로그 | 예 | 예 |
Redis 로그 | 아니요 | 예 |
레지스트리 로그 | 아니요 | 예 |
Workhorse 로그 | 예 | 예 |
production_json.log
이 파일은 다음 위치에 있습니다:
- 리눅스 패키지 설치에서는
/var/log/gitlab/gitlab-rails/production_json.log
에 있습니다. - 직접 컴파일한 설치에서는
/home/git/gitlab/log/production_json.log
에 있습니다.
이 파일은 Lograge 덕분에 GitLab에서 받은 Rails 컨트롤러 요청에 대한 구조화된 로그를 포함합니다.
API에서의 요청은 api_json.log
파일에 로그됩니다.
각 줄에는 Elasticsearch 및 Splunk와 같은 서비스에서 처리할 수 있는 JSON이 포함되어 있습니다.
{
"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 요청이었습니다. 각 줄에는 또한 초 단위의 성능 데이터가 포함되어 있습니다:
-
duration_s
: 요청을 검색하는 데 걸린 총 시간 -
queue_duration_s
: GitLab Workhorse 내에서 요청이 대기한 총 시간 -
view_duration_s
: Rails 뷰 내에서의 총 시간 -
db_duration_s
: PostgreSQL에서 데이터를 검색하는 데 걸린 총 시간 -
cpu_s
: CPU에서 총 소요 시간 -
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
: 워커의 리눅스 프로세스 ID (워커 재시작 시 변경됨) -
worker_id
: 워커의 논리적 ID (워커 재시작 시 변경되지 않음)
HTTP 전송을 사용하여 사용자 클론 및 가져오기 활동은 action: git_upload_pack
으로 로그에 표시됩니다.
또한 로그에는 (remote_ip
) 원본 IP 주소, (user_id
) 사용자 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
필드는 해당하지 않으며 항상 비어 있습니다.) ActionCable 연결이나 채널 클래스는 controller
로 사용됩니다.
{
"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
}
exception
필드에 class
, message
, 및 backtrace
가 포함됩니다. 이전 버전에서는 exception.class
와 exception.message
대신 error
필드가 포함되었습니다. 예를 들어:{
"method": "GET",
"path": "/admin",
"format": "html",
"controller": "Admin::DashboardController",
"action": "index",
"status": 500,
"time": "2019-11-14T13:12:46.156Z",
"params": [],
"remote_ip": "127.0.0.1",
"user_id": 1,
"username": "root",
"ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:70.0) Gecko/20100101 Firefox/70.0",
"queue_duration": 274.35,
"correlation_id": "KjDVUhNvvV3",
"queue_duration_s":0.0,
"gitaly_calls":16,
"gitaly_duration_s":0.16,
"redis_calls":115,
"redis_duration_s":0.13,
"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",
"exception.class": "NameError",
"exception.message": "undefined local variable or method `adsf' for #<Admin::DashboardController:0x00007ff3c9648588>",
"exception.backtrace": [
"app/controllers/admin/dashboard_controller.rb:11:in `index'",
"ee/app/controllers/ee/admin/dashboard_controller.rb:14:in `index'",
"ee/lib/gitlab/ip_address_state.rb:10:in `with'",
"ee/app/controllers/ee/application_controller.rb:43:in `set_current_ip_address'",
"lib/gitlab/session.rb:11:in `with_session'",
"app/controllers/application_controller.rb:450:in `set_session_storage'",
"app/controllers/application_controller.rb:444:in `set_locale'",
"ee/lib/gitlab/jira/middleware.rb:19:in `call'"
]
}
production.log
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치의 경우
/var/log/gitlab/gitlab-rails/production.log
- 직접 컴파일한 설치의 경우
/home/git/gitlab/log/production.log
이 파일에는 수행된 모든 요청에 대한 정보가 포함되어 있습니다. URL 및 요청 유형, IP 주소 및 특정 요청을 처리하는 데 관련된 코드 부분을 볼 수 있습니다. 또한 수행된 모든 SQL 요청과 각각이 소요된 시간을 볼 수 있습니다. 이 작업은 주로 GitLab 기여자 및 개발자들에게 유용합니다. 버그를 보고할 때 이 로그 파일의 일부를 사용하세요. 예를 들면:
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)
이 예에서 서버는 IP 168.111.56.1
에서 2015-02-12 19:34:53 +0200
에 URL이 /gitlabhq/yaml_db/tree/master
인 HTTP 요청을 처리했습니다. 이 요청은 Projects::TreeController
에서 처리되었습니다.
api_json.log
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치의 경우
/var/log/gitlab/gitlab-rails/api_json.log
- 직접 컴파일한 설치의 경우
/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
Grape Logging
v1.8.4부터 view_duration_s
는 duration_s - db_duration_s
로 계산됩니다.
따라서 view_duration_s
는 직렬화 과정뿐만 아니라 Redis 또는 외부 HTTP에서의 읽기-쓰기 프로세스와 같은 여러 다양한 요인에 영향을 받을 수 있습니다.
application.log
(deprecated)
- GitLab 15.10에서 사용 중단됨.
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치의 경우
/var/log/gitlab/gitlab-rails/application.log
- 직접 컴파일한 설치의 경우
/home/git/gitlab/log/application.log
이 파일에는 application_json.log
에서 보이는 로그의 구조가 덜 정형화된 버전이 포함되어 있습니다. 다음과 같은 예시가 있습니다:
October 06, 2014 11:56: User "Administrator" (admin@example.com) was created
October 06, 2014 11:56: Documentcloud created a new project "Documentcloud / Underscore"
October 06, 2014 11:56: Gitlab Org created a new project "Gitlab Org / Gitlab Ce"
October 07, 2014 11:25: User "Claudie Hodkiewicz" (nasir_stehr@olson.co.uk) was removed
October 07, 2014 11:25: Project "project133" was removed
application_json.log
- 12.7에서 GitLab에 도입되었습니다.
이 파일은 다음 위치에 있습니다.
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/application_json.log
. - 자체 컴파일 설치 시
/home/git/gitlab/log/application_json.log
에 있습니다.
사용자 생성 및 프로젝트 삭제와 같은 인스턴스에서 발생하는 이벤트를 발견하는 데 도움이 됩니다. 예를 들어:
{
"severity":"INFO",
"time":"2020-01-14T13:35:15.466Z",
"correlation_id":"3823a1550b64417f9c9ed8ee0f48087e",
"message":"사용자 \"관리자\" (admin@example.com)가 생성되었습니다"
}
{
"severity":"INFO",
"time":"2020-01-14T13:35:15.466Z",
"correlation_id":"78e3df10c9a18745243d524540bd5be4",
"message":"프로젝트 \"project133\"가 제거되었습니다"
}
integrations_json.log
이 파일은 다음 위치에 있습니다.
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/integrations_json.log
. - 자체 컴파일 설치 시
/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":"메시지 전송 중 오류 발생",
"client_url":"http://jira.gitlap.com:8080",
"error":"실행 시간이 초과되었습니다"
}
{
"severity":"INFO",
"time":"2018-09-06T17:15:16.365Z",
"service_class":"Integrations::Jira",
"project_id":3,
"project_path":"namespace2/project2",
"message":"성공적으로 게시됨",
"client_url":"http://jira.example.com"
}
kubernetes.log
(사용되지 않음)
- GitLab 14.5에서 사용이 중지되었습니다.
이 파일은 다음 위치에 있습니다.
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/kubernetes.log
. - 자체 컴파일 설치 시
/home/git/gitlab/log/kubernetes.log
에 있습니다.
인증서 기반 클러스터와 관련된 연결 오류와 같은 정보를 기록합니다. 각 줄은 Elasticsearch 및 Splunk와 같은 서비스에서 처리할 수 있는 JSON을 포함합니다.
git_json.log
이 파일은 다음 위치에 있습니다.
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/git_json.log
. - 자체 컴파일 설치 시
/home/git/gitlab/log/git_json.log
에 있습니다.
GitLab은 Git 리포지터리와 상호작용해야 하지만 드물게 문제가 발생할 수 있습니다. 그럴 때는 정확히 무슨 일이 발생했는지 알아야 합니다. 이 로그 파일에는 GitLab에서 Git 리포지터리로의 모든 실패한 요청이 포함되어 있습니다. 대부분의 경우 이 파일은 주로 개발자에게 유용합니다. 예를 들어:
{
"severity":"ERROR",
"time":"2019-07-19T22:16:12.528Z",
"correlation_id":"FeGxww5Hj64",
"message":"명령 실패 [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\n오류: '/Users/vsizov/gitlab-development-kit/repositories/gitlabhq/gitlab_git.git'로 일부 참조를 푸시하는 데 실패했습니다'"
}
audit_json.log
이 파일은 다음 위치에 있습니다.
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/audit_json.log
. - 자체 컴파일 설치 시
/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":"비공개",
"to":"공개",
"author_name":"John Doe4",
"target_id":2,
"target_type":"Project",
"target_details":"namespace2/project2"
}
Sidekiq 로그
Linux 패키지 설치하는 경우 일부 Sidekiq 로그는 /var/log/gitlab/sidekiq/current
에 있으며 다음과 같습니다.
sidekiq.log
- GitLab 16.0 및 이후에 Helm 차트 설치의 기본 로그 형식은
text
에서json
으로 변경되었습니다.
이 파일은 다음 위치에 있습니다.
- Linux 패키지 설치 시
/var/log/gitlab/sidekiq/current
. - 자체 컴파일 설치 시
/home/git/gitlab/log/sidekiq.log
에 있습니다.
GitLab은 시간이 오래 걸릴 수있는 작업을 처리하기 위해 백그라운드 작업을 사용합니다. 이러한 작업을 처리하는 모든 정보가이 파일에 기록됩니다. 예를 들어:
{
"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: 웹소켓 초기화 중
2023-05-16T16:08:55.279Z pid=82525 tid=23rl INFO: 프로덕션 환경에서 Rails 6.1.7.2 애플리케이션 부팅
2023-05-16T16:08:55.279Z pid=82525 tid=23rl INFO: ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [arm64-darwin22]에서 실행
2023-05-16T16:08:55.279Z pid=82525 tid=23rl INFO: 라이선스 세부 정보는 LICENSE 및 LGPL-3.0을 참조하십시오.
2023-05-16T16:08:55.279Z pid=82525 tid=23rl INFO: 더 많은 기능과 지원을 위해 Sidekiq Pro로 업그레이드: https://sidekiq.org
2023-05-16T16:08:55.286Z pid=82525 tid=7p4t INFO: 작업 대기열 정리 중
2023-05-16T16:09:06.043Z pid=82525 tid=7p7d class=ScheduleMergeRequestCleanupRefsWorker jid=efcc73f169c09a514b06da3f INFO: 시작
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: 시작
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
- GitLab 12.9에서 소개되었습니다.
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/sidekiq_client.log
에 있습니다. - 직접 컴파일한 설치에서는
/home/git/gitlab/log/sidekiq_client.log
에 있습니다.
이 파일에는 Sidekiq가 작업을 처리하기 전인 작업에 대한 로깅 정보가 포함되어 있습니다. 예를 들어, enqueued되기 전입니다.
이 로그 파일은 sidekiq.log
와 동일한 구조를 따르므로, 위에서 언급한대로 Sidekiq에 대해 JSON 형식으로 구성됩니다.
gitlab-shell.log
GitLab 쉘(GitLab Shell)은 Git 명령을 실행하고 Git 리포지터리에 대한 SSH 액세스를 제공하기 위해 GitLab에서 사용됩니다.
git-{upload-pack,receive-pack}
요청에 대한 정보는 /var/log/gitlab/gitlab-shell/gitlab-shell.log
에 있습니다. Gitaly에서 GitLab 쉘로의 후크에 대한 정보는 /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에 의해 생성됩니다.
runit
은 Linux 패키지와 함께 제공되며 그 목적에 대한 간략한 설명은
Linux 패키지 설명서에서 확인할 수 있습니다.
로그 파일은 회전되며 Unix 타임스탬프 형식으로 이름이 변경되고 gzip
으로 압축됩니다 (예: @1584057562.s
).
grpc.log
이 파일은 Linux 패키지 설치 시 /var/log/gitlab/gitlab-rails/grpc.log
에 있으며, Gitaly에서 사용하는 네이티브 gRPC 로깅입니다.
gitaly_hooks.log
이 파일은 /var/log/gitlab/gitaly/gitaly_hooks.log
에 있으며 gitaly-hooks
명령에 의해 생성됩니다. 또한 GitLab API의 응답 처리 중 수신된 실패에 대한 기록도 포함하고 있습니다.
Puma 로그
puma_stdout.log
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/puma/puma_stdout.log
에 있습니다. - 직접 컴파일한 설치에서는
/home/git/gitlab/log/puma_stdout.log
에 있습니다.
puma_stderr.log
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/puma/puma_stderr.log
에 있습니다. - 직접 컴파일한 설치에서는
/home/git/gitlab/log/puma_stderr.log
에 있습니다.
repocheck.log
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/repocheck.log
에 있습니다. - 직접 컴파일한 설치에서는
/home/git/gitlab/log/repocheck.log
에 있습니다.
이 파일은 프로젝트의 리포지터리 검사가 실행될 때마다 정보를 기록합니다.
importer.log
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/importer.log
에 있습니다. - 직접 컴파일한 설치에서는
/home/git/gitlab/log/importer.log
에 있습니다.
이 파일은 프로젝트 가져오기 및 이전의 진행 상황을 기록합니다.
exporter.log
- GitLab 13.1에서 소개되었습니다.
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/exporter.log
에 있습니다. - 직접 컴파일한 설치에서는
/home/git/gitlab/log/exporter.log
에 있습니다.
이 파일은 내보내기 프로세스의 진행 상황을 기록합니다.
features_json.log
- GitLab 13.7에서 소개되었습니다.
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/features_json.log
에 있습니다. - 직접 컴파일한 설치에서는
/home/git/gitlab/log/features_json.log
에 있습니다.
GitLab 개발의 피처 플래그의 수정 이벤트가 이 파일에 기록됩니다. 예:
{"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
- GitLab 15.9에서 소개되었습니다.
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/ci_resource_group_json.log
에 있습니다. - 자체 컴파일 설치 시
/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
- GitLab 12.0에서 소개되었습니다.
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/auth.log
에 있습니다. - 자체 컴파일 설치 시
/home/git/gitlab/log/auth.log
에 있습니다.
이 로그는 다음을 기록합니다:
auth_json.log
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/auth_json.log
에 있습니다. - 자체 컴파일 설치 시
/home/git/gitlab/log/auth_json.log
에 있습니다.
이 파일은 auth.log
의 JSON 버전을 포함하고 있으며, 예를 들어 다음과 같습니다:
{
"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
- GitLab 12.0에서 소개되었습니다.
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/graphql_json.log
에 있습니다. - 자체 컴파일 설치 시
/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}
clickhouse.log
- GitLab 16.5에서 소개되었습니다.
clickhouse.log
파일은 GitLab의 ClickHouse 데이터베이스 클라이언트와 관련된 정보를 기록합니다.
migrations.log
- GitLab 12.3에서 소개되었습니다.
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/migrations.log
에 있습니다. - 자체 컴파일 설치 시
/home/git/gitlab/log/migrations.log
에 있습니다.
이 파일은 데이터베이스 마이그레이션의 진행 상황을 기록합니다.
mail_room_json.log
(기본)
- GitLab 12.6에서 소개되었습니다.
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/mailroom/current
에 있습니다. - 자체 컴파일 설치 시
/home/git/gitlab/log/mail_room_json.log
에 있습니다.
이 구조화된 로그 파일은 mail_room
젬에서의 내부 활동을 기록합니다.
이름과 경로는 구성 가능하며, 상기와 일치하지 않을 수 있습니다.
web_hooks.log
- GitLab 16.3에서 소개되었습니다.
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치 시
/var/log/gitlab/gitlab-rails/web_hooks.log
에 있습니다. - 자체 컴파일 설치 시
/home/git/gitlab/log/web_hooks.log
에 있습니다.
Webhook의 백오프, 비활성화 및 재활성화 이벤트가 이 파일에 기록됩니다. 예를 들어:
{"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}
리컨피규어 로그
리컨피규어 로그 파일은 Linux 패키지 설치의 경우 /var/log/gitlab/reconfigure
에 있습니다. 자체 컴파일 설치에는 리컨피규어 로그가 없습니다. 리컨피규어 로그 파일은 매뉴얼으로 또는 업그레이드의 일부로 gitlab-ctl reconfigure
가 실행될 때마다 생성됩니다.
리컨피규어 로그 파일은 리컨피규어가 시작된 UNIX 타임스탬프에 따라 이름이 지정되며, 예를 들면 1509705644.log
입니다.
sidekiq_exporter.log
및 web_exporter.log
만약 프로메테우스 메트릭스와 Sidekiq Exporter가 모두 활성화되어 있다면, Sidekiq은 웹 서버를 시작하고 정의된 포트(default: 8082
)로 수신 대기합니다. Sidekiq Exporter 접근 로그는 기본적으로 비활성화되어 있지만 활성화할 수 있습니다:
- 리눅스 패키지 설치의 경우
/etc/gitlab/gitlab.rb
에서sidekiq['exporter_log_enabled'] = true
옵션 사용 - 직접 설치한 경우
gitlab.yml
에서sidekiq_exporter.log_enabled
옵션 사용
활성화되면, 설치 방법에 따라 다음 위치에 파일이 있습니다:
- 리눅스 패키지 설치의 경우
/var/log/gitlab/gitlab-rails/sidekiq_exporter.log
- 직접 설치한 경우
/home/git/gitlab/log/sidekiq_exporter.log
프로메테우스 메트릭스와 Web Exporter가 모두 활성화되어 있다면, Puma는 웹 서버를 시작하고 정의된 포트(default: 8083
)로 수신 대기하며 접근 로그는 다음과 같은 위치에 생성됩니다:
- 리눅스 패키지 설치의 경우
/var/log/gitlab/gitlab-rails/web_exporter.log
- 직접 설치한 경우
/home/git/gitlab/log/web_exporter.log
database_load_balancing.log
- GitLab 12.3에서 도입되었습니다.
GitLab 데이터베이스 로드 밸런싱에 대한 세부 정보를 포함합니다. 이 파일의 위치는 다음과 같습니다:
- 리눅스 패키지 설치의 경우
/var/log/gitlab/gitlab-rails/database_load_balancing.log
- 직접 설치한 경우
/home/git/gitlab/log/database_load_balancing.log
zoekt.log
- GitLab 15.9에서 도입되었습니다.
이 파일은 정확한 코드 검색과 관련된 정보를 기록합니다. 이 파일의 위치는 다음과 같습니다:
- 리눅스 패키지 설치의 경우
/var/log/gitlab/gitlab-rails/zoekt.log
- 직접 설치한 경우
/home/git/gitlab/log/zoekt.log
elasticsearch.log
- GitLab 12.6에서 도입되었습니다.
이 파일은 Elasticsearch 통합과 관련된 정보를 기록하며, Elasticsearch 색인 또는 검색 중 발생한 오류를 포함합니다. 이 파일의 위치는 다음과 같습니다:
- 리눅스 패키지 설치의 경우
/var/log/gitlab/gitlab-rails/elasticsearch.log
- 직접 설치한 경우
/home/git/gitlab/log/elasticsearch.log
각 줄에는 Elasticsearch 및 Splunk와 같은 서비스에서 소비할 수 있는 JSON이 포함되어 있습니다. 가독성을 위해 다음과 같은 예제 줄에 줄 바꿈이 추가되었습니다:
{
"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 12.6에서 도입되었습니다.
이 파일은 Gitlab::ErrorTracking
에 의해 추적되는 예외에 관한 정보를 기록하며, rescued exceptions 처리에 대한 표준적이고 일관된 방법을 제공합니다. 이 파일의 위치는 다음과 같습니다:
- 리눅스 패키지 설치의 경우
/var/log/gitlab/gitlab-rails/exceptions_json.log
- 직접 설치한 경우
/home/git/gitlab/log/exceptions_json.log
각 줄에는 Elasticsearch가 소비할 수 있는 JSON이 포함되어 있습니다. 예를 들어:
{
"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
- GitLab 13.0에서 도입되었습니다.
이 파일은 다음 위치에 있습니다:
- 리눅스 패키지 설치의 경우
/var/log/gitlab/gitlab-rails/service_measurement.log
- 직접 설치한 경우
/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
에 있습니다.
Helm 차트 설치의 경우, Sidekiq pod에 저장되어 있으며, /var/log/gitlab/geo.log
에 저장됩니다. 파일은 직접 액세스하거나, kubectl
을 사용하여 Sidekiq 로그를 가져온 뒤, 결과를 "subcomponent"=="geo"
로 필터링하여 읽을 수 있습니다. 아래 예는 jq
를 사용하여 Geo 로그만 추출하는 것을 보여줍니다:
kubectl logs -l app=sidekiq --max-log-requests=50 | jq 'select(."subcomponent"=="geo")'
이 파일에는 Geo가 리포지터리 및 파일을 동기화하려는 시도에 관한 정보가 포함되어 있습니다. 파일의 각 행에는 예를 들어 Elasticsearch 또는 Splunk에 흡수될 수 있는 별도의 JSON 항목이 포함되어 있습니다.
예를 들면:
{"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
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치의 경우,
/var/log/gitlab/gitlab-rails/update_mirror_service_json.log
에 있습니다. - 자체 컴파일 설치의 경우,
/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
llm.log
파일은 AI 기능과 관련된 정보를 기록합니다.
해당 파일은 다음 위치에 있습니다:
- Linux 패키지 설치의 경우,
/var/log/gitlab/gitlab-rails/llm.log
에 있습니다. - 자체 컴파일 설치의 경우,
/home/git/gitlab/log/llm.log
에 있습니다.
epic_work_item_sync.log
epic_work_item_sync.log
파일은 에픽을 작업 항목으로 동기화하고 마이그레이션하는 정보를 기록합니다.
해당 파일은 다음 위치에 있습니다:
- Linux 패키지 설치의 경우,
/var/log/gitlab/gitlab-rails/epic_work_item_sync.log
에 있습니다. - 자체 컴파일 설치의 경우,
/home/git/gitlab/log/epic_work_item_sync.log
에 있습니다.
레지스트리 로그
Linux 패키지 설치의 경우, 컨테이너 레지스트리 로그는 /var/log/gitlab/registry/current
에 있습니다.
NGINX 로그
Linux 패키지 설치의 경우, NGINX 로그는 다음 위치에 있습니다:
-
/var/log/gitlab/nginx/gitlab_access.log
: GitLab로의 요청 로그 -
/var/log/gitlab/nginx/gitlab_error.log
: GitLab의 NGINX 오류 로그 -
/var/log/gitlab/nginx/gitlab_pages_access.log
: 페이지 정적 사이트로의 요청 로그 -
/var/log/gitlab/nginx/gitlab_pages_error.log
: 페이지 정적 사이트의 NGINX 오류 로그 -
/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
: Mattermost의 NGINX 오류 로그
아래는 기본 GitLab NGINX 접근 로그 형식입니다:
'$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'
$request
및 $http_referer
는 비밀 토큰과 같은 민감한 쿼리 문자열 매개변수에 대해 필터링됩니다.
페이지 로그
Linux 패키지 설치의 경우, 페이지 로그는 /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
}
Let’s Encrypt 로그
Linux 패키지 설치의 경우, Let’s Encrypt 자동 갱신 로그는 /var/log/gitlab/lets-encrypt/
에 있습니다.
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 server
Linux 패키지 설치의 경우, GitLab agent server 로그는 /var/log/gitlab/gitlab-kas/current
에 있습니다.
Praefect 로그
Linux 패키지 설치의 경우, Praefect 로그는 /var/log/gitlab/praefect/
에 있습니다.
GitLab은 또한 Praefect의 Prometheus 지표를 추적합니다.
백업 로그
Linux 패키지 설치의 경우, 백업 로그는 /var/log/gitlab/gitlab-rails/backup_json.log
에 위치합니다.
이 로그는 GitLab 백업이 생성될 때 채워집니다. 이 로그를 사용하여 백업 프로세스의 수행을 이해할 수 있습니다.
성능 바 통계
이 파일은 다음 위치에 있습니다:
- Linux 패키지 설치의 경우,
/var/log/gitlab/gitlab-rails/performance_bar_json.log
에 있습니다. - 자체 컴파일 설치의 경우,
/home/git/gitlab/log/performance_bar_json.log
에 있습니다.
성능 바 통계(현재 SQL 쿼리의 소요 시간만 기록됨)가 해당 파일에 기록됩니다. 예:
{"severity":"INFO","time":"2020-12-04T09:29:44.592Z","correlation_id":"33680b1490ccd35981b03639c406a697","filename":"app/models/ci/pipeline.rb","method_path":"app/models/ci/pipeline.rb:each_with_object","request_id":"rYHomD0VJS4","duration_ms":26.889,"count":2,"query_type": "active-record"}
이 통계는 .com에서만 기록되며, 자체 배포에서는 비활성화됩니다.
로그 수집
하나 이상의 이전 디렉터리된 컴포넌트에 국한되지 않는 문제에 대한 문제 해결 중에는 GitLab 인스턴스에서 동시에 여러 로그와 통계를 수집하는 것이 도움이 됩니다.
주요 로그 간단히 확인
버그 또는 오류가 쉽게 재현될 경우, 문제를 몇 번 재현하면서 주요 GitLab 로그를 파일로 저장합니다:
sudo gitlab-ctl tail | tee /tmp/<case-ID-and-keywords>.log
로그 수집을 Control + C로 마칩니다.
GitLabSOS
하나의 이전 디렉터리된 GitLab 컴포넌트에 속하지 않는 성능 저하 또는 연쇄 오류가 발생하는 경우, GitLabSOS는 GitLab 인스턴스에 대한 보다 폭넓은 관점을 제공할 수 있습니다. 자세한 내용 및 실행 방법에 대해서는 GitLabSOS 문서를 읽어보세요.
Fast-stats
Fast-stats는 GitLab 로그에서 성능 통계를 생성하고 비교하는 도구입니다. 자세한 내용 및 실행 방법에 대해서는 Fast-stats 문서를 읽어보세요.
상관 ID로 관련 로그 항목 찾기
대부분의 요청에는 관련 로그 항목을 찾는 데 사용할 수 있는 로그 ID가 있습니다.