분산 트레이싱

시간이 어디서 사라졌는지 읽습니다

트레이스는 요청 하나를 처음부터 끝까지 펼쳐 놓은 것입니다. Maple은 SDK가 보낸 모든 스팬을 속성·부모 스팬·정확한 밀리초 오프셋과 함께 보관합니다. 느린 요청은 더 이상 추측이 아닙니다.

화면

요청 하나, 스팬 18개, 화면 하나

스팬을 선택하면 실행한 SQL, 반환한 상태, 동작한 파드까지 전체 속성이 워터폴 옆에 열립니다. 요약되어 사라지는 정보는 없습니다.

A slow database span selected in an 18-span waterfall, with its query attributes open alongside
/traces trace 4f9ac21e…8b7d40f2
signal
traces
transport
OTLP/gRPC · OTLP/HTTP
views
waterfall · flamegraph · flow
attributes
db.statement · http.status_code · exception.type
joins.on
trace_id · span_id
sampling
head · tail

움직임

실제 트레이스 위의 실제 플레임그래프

제품이 실제로 렌더링하는 컴포넌트를 샘플 트레이스로 실행한 것입니다. 스팬 위에 커서를 올리면 서비스·소요 시간·전체 대비 비율을 읽을 수 있습니다.

/tracesa3f8c1d2e5b7f901
POST /checkout
8 spans across 4 services
api-gatewayauth-serviceorder-servicepayment-svc203msOk
Flow View
Mini Map
Click to select|Scroll to zoom|Drag to pan|
api-gateway
auth-service
order-service
payment-svc
|
Server
Internal
Error

할 수 있는 일

같은 스팬을 읽는 네 가지 방법

/traces
워터폴
스팬은 부모 기준으로 중첩되고, 막대는 트레이스 자체의 소요 시간에 맞춰 조정됩니다. 480ms 자식을 가진 1.24초 요청은 숫자를 읽기 전에 형태로 보입니다.
flamegraph
플레임그래프
같은 스팬을 시간이 아니라 깊이로 쌓습니다. 한 단계에 db.query 스팬 50개가 나란히 있으면 N+1이며, 목록이 아니라 벽으로 보입니다.
flow view
서비스 플로우
트레이스를 거쳐 간 서비스와 그 사이의 호출로 압축합니다. 어느 줄인지가 아니라 어느 경계인지가 문제일 때 씁니다.
db.statement
속성
SDK가 보낸 모든 키를 보낸 그대로 저장합니다. db.statement, http.status_code, exception.type, 직접 정의한 커스텀 키까지 모두 조회 가능하며 단순 표시용이 아닙니다.
trace_id
로그로 이동
스팬과 로그는 같은 트레이스 ID를 갖기 때문에, 어떤 스팬에서든 그 스팬이 실행되는 동안 기록된 로그 줄을 열 수 있습니다. 두 도구를 오가며 타임스탬프를 계산할 일이 없습니다.

다음은

이 데이터를 공유하는 화면

OTLP를 Maple로 보내세요.

엔드포인트 하나, 키 하나. 트레이스·로그·메트릭·세션이 첫 요청부터 같은 트레이스 ID로 모입니다.