L74 — Distributed Tracing & OpenTelemetry

Ba module tương tác: đọc waterfall tìm bottleneck · theo dõi trace_id chảy qua header traceparent · so sánh head-based vs tail-based sampling.

1. Trace waterfall — một request qua 4 service

Request POST /checkout đi qua 4 service (Gateway → Order → Payment → Bank, kèm Inventory). Mỗi thanh là một span; span con thụt vào dưới cha. Trục ngang là thời gian. Click một span để xem chi tiết (attributes, events, status). Thanh đỏ = span Error.

Nhìn span dài nhất → đi sâu xuống con → tìm thanh đỏ & "gap".
// Click một span để xem chi tiết...

2. Context propagation — trace_id qua HTTP header

Mỗi service là một process riêng. Để span của chúng nối vào CÙNG một trace, service gọi đi phải inject SpanContext vào header traceparent, service nhận phải extract ra. Bật/tắt propagation để thấy điều gì xảy ra khi quên truyền context.

3. Sampling — head-based vs tail-based

Service traffic cao không thể lưu MỌI trace. Sampling giữ lại một phần. Head-based quyết định lúc bắt đầu (mù, rẻ); tail-based quyết định sau khi trace xong (giữ đúng lỗi/slow, tốn buffer). Chỉnh tham số rồi xem mỗi chiến lược bắt được bao nhiêu lỗi.

20000
0.10%
2.0%
Chiến lượcTrace lỗi bắt đượcTỉ lệ lỗi bắtTổng trace giữ