TIL

클라이언트 에러 로그를 추적해보자. 어떻게?

하얀잔디 2026. 2. 5. 18:09

회사에서 로그를 물어봤다.

 

회사에서 로그 관련 질문 받음.

“특정 유저 요청 하나만 딱 집어서 추적 가능함?”

 

근데 현실

 

유저 ID 기준 검색 → 애매함

 

시간 기준 검색 → 로그 수천줄

 

정확히 "이 요청" 찾기 어려움

 

운영자 디버깅 지옥 시작됨 😇

 

현재 상태

API 서버 보니까 이미 trace_id 있긴 했음.

근데 거의 안 쓰고 있었음.

알고보니 구조가

 
request-id → trace_id 생성

이 방식이었음.

즉,

👉 request-id가 있어야 trace도 의미 있음

근데 정작 request-id를 안 쓰고 있었음 ...

 

 

그래서 결론:

request-id부터 제대로 쓰자


request-id가 뭐냐

간단함.

HTTP 요청 1개 = 고유 ID 1개

 
GET /chat → request-id: abc123

이 ID를

  • gateway
  • api
  • backend
  • opensearch

전부 동일하게 찍으면

한방 검색 가능

 

 


적용 방식

1. Nginx에서 자동 생성

클라이언트가 안 보내도 됨.
gateway에서 자동 생성하는 게 표준임.

map $http_x_request_id $req_id
{ default $http_x_request_id; "" $request_id; }

proxy_set_header X-Request-Id $req_id;   //백엔드에 넘기기
add_header X-Request-Id $req_id always;   //프론트에 주기

 

  • 없으면 nginx가 생성
  • 있으면 그대로 사용
  • backend 전달
  • 응답에도 포함

 

결과

이제 가능해짐:

  • 특정 요청 전체 흐름 추적
  • 느린 요청 찾기
  • 에러 요청 찾기
  • 프론트 → gateway → api 로그 연결

운영 난이도 하락


성능 걱정?

솔직히 거의 0

  • 헤더 문자열 하나 추가
  • JSON 한 줄 찍는 수준

병목은 nginx가 아니라


OpenSearch / 로그 적재량 쪽일 수 있음.

 

nginx는 영향 체감 없음