상관 ID로 관련 로그 항목 찾기
상관 ID를 사용하여 분산 GitLab 로그에서 특정 요청과 관련된 항목을 추적하는 방법.
GitLab 인스턴스는 대부분의 요청에 대해 고유한 요청 추적 ID("상관관계 ID"라고 합니다)를 기록합니다. GitLab에 들어오는 각 요청마다 고유한 상관관계 ID가 부여되며, 이 ID는 해당 요청에 대해 각 GitLab 구성 요소의 로그에 기록됩니다. 덕분에 분산 시스템의 동작을 더 쉽게 추적할 수 있습니다. 이 ID가 없으면 서로 연관된 로그 항목을 맞추기가 어렵거나 불가능합니다. 요청의 상관관계 ID 확인 # 상관관계 ID는 구조화된 로그에 correlation_id 키로 기록되며 GitLab이 보내는 모든 응답 헤더에는 x-request-id 헤더로 담깁니다. 둘 중 어느 쪽에서 검색해도 상관관계 ID를 찾을 수 있습니다. 브라우저에서 상관관계 ID 확인 # 브라우저의 개발자 도구를 사용하면 방문 중인 사이트와 주고받는 네트워크 활동을 확인하고 검사할 수 있습니다. 주요 브라우저의 네트워크 모니터링 문서는 아래 링크를 참고합니다. Network Monitor - Firefox Developer Tools Inspect Network Activity In Chrome DevTools Safari Web Development Tools Microsoft Edge Network panel 관련 요청을 찾아 상관관계 ID를 확인하려면 다음 단계를 따릅니다: 네트워크 모니터에서 영구 로깅을 활성화합니다. GitLab의 일부 동작은 양식을 제출한 뒤 빠르게 리디렉션되므로, 이렇게 하면 관련 활동을 모두 수집할 수 있습니다. 찾으려는 요청을 분리하려면 document 요청으로 필터링할 수 있습니다. 확인하려는 요청을 선택해 세부 정보를 봅니다. Headers 섹션으로 이동해 Response Headers 를 찾습니다. 거기에서 GitLab이 해당 요청에 대해 무작위로 생성한 값이 담긴 x-request-id 헤더를 확인할 수 있습니다. 다음 예시를 참고합니다: 로그에서 상관관계 ID 확인 # 올바른 상관관계 ID를 찾는 또 다른 방법은 로그를 검색하거나 관찰하면서 찾으려는 로그 항목의 correlation_id 값을 확인하는 것입니다. 예를 들어 GitLab에서 특정 동작을 재현할 때 무슨 일이 일어나거나 무엇이 실패하는지 알아보려면, GitLab 로그를 tail로 따라가면서 본인 사용자의 요청으로 필터링한 다음 관심 있는 내용이 보일 때까지 요청을 지켜볼 수 있습니다. curl에서 상관관계 ID 확인 # curl 을 사용한다면 verbose 옵션으로 요청 및 응답 헤더와 그 밖의 디버그 정보를 확인할 수 있습니다. ➜ ~ curl --verbose "https://gitlab.example.com/api/v4/projects" # look for a line that looks like this < x-request-id: 4rAMkV3gof4 jq 사용 # 이 예시는 jq 를 사용해 결과를 필터링하고 관심 있는 값을 표시합니다. sudo gitlab-ctl tail gitlab-rails/production_json.log