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.
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.
| Chiến lược | Trace lỗi bắt được | Tỉ lệ lỗi bắt | Tổng trace giữ |
|---|