- Published on
Giải thích chi tiết và dễ hiểu về Jaeger
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04

Jaeger là gì?
Jaeger là một công cụ theo dõi dấu vết (tracing) cho hệ thống phần mềm phân tán. Nó giúp bạn thấy được:
- Request đi qua những đâu?
- Mất bao lâu ở mỗi bước?
- Bước nào bị lỗi?
Jaeger được phát triển bởi Uber, hiện nay là một dự án của CNCF (Cloud Native Computing Foundation).
📑 Mục Lục
- Tại sao cần Jaeger?
- Jaeger giúp theo dõi gì?
- Sơ đồ hoạt động của Jaeger
- Cách sử dụng Jaeger
- Tích hợp với OpenTelemetry
- Triển khai Jaeger trên Kubernetes
- Kết luận
- Tài nguyên tham khảo
💡 Tại sao cần Jaeger?
Trong hệ thống có nhiều dịch vụ (microservices), request đi qua rất nhiều chỗ. Khi có lỗi hoặc chậm:
- Bạn cần biết đường đi của request.
- Cần xác định bước nào bị nghẽn hoặc lỗi.
Jaeger giúp bạn vẽ lại toàn bộ hành trình của request, để bạn dễ dàng:
- Debug lỗi
- Tối ưu hiệu năng
- Hiểu rõ cách hệ thống hoạt động
🔍 Jaeger giúp theo dõi gì?
Jaeger giúp bạn theo dõi:
- Trace: Đường đi của một request từ đầu đến cuối.
- Span: Mỗi bước nhỏ trong trace (gọi API, truy vấn DB,...).
- Thời gian: Mỗi span mất bao lâu.
- Quan hệ cha-con giữa các span.
🧭 Sơ đồ hoạt động của Jaeger
[Ứng dụng A] [Ứng dụng B]
| |
(OTel SDK hoặc Jaeger client)
| |
+--------+---------+
|
[Jaeger Agent] (thu thập dữ liệu)
|
[Jaeger Collector] (xử lý và lưu trữ)
|
[Jaeger UI] (giao diện để xem trace)
⚙️ Cách sử dụng Jaeger
Bước 1: Gắn thư viện Jaeger client vào ứng dụng
Ví dụ: ứng dụng Python
pip install jaeger-client opentracing
Bước 2: Gửi trace về Jaeger
from jaeger_client import Config
config = Config(config={ 'sampler': {'type': 'const', 'param': 1}, 'logging': True }, service_name='don-hang')
tracer = config.initialize_tracer()
with tracer.start_span('xu-ly-don-hang'):
print("Đang xử lý đơn hàng...")
tracer.close()
Bước 3: Mở Jaeger UI để xem trace
- Truy cập
http://localhost:16686
- Chọn service → Xem danh sách trace → Click để xem chi tiết
🔗 Tích hợp với OpenTelemetry
Jaeger hoạt động rất tốt với OpenTelemetry. Thay vì dùng Jaeger client trực tiếp, bạn có thể:
- Dùng OpenTelemetry SDK trong ứng dụng
- Gửi trace bằng giao thức OTLP
- Collector sẽ export trace tới Jaeger backend
Ví dụ trong cấu hình Collector:
exporters:
jaeger:
endpoint: "jaeger-collector:14250"
tls:
insecure: true
🚀 Triển khai Jaeger trên Kubernetes
Bạn có thể triển khai nhanh bằng Helm:
helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
helm install jaeger jaegertracing/jaeger
Sau khi cài:
- Collector sẽ chạy
- UI sẵn sàng tại
http://<your-node>:16686
- Bạn có thể gửi trace từ ứng dụng hoặc từ OpenTelemetry Collector
✅ Kết luận
Jaeger là công cụ tuyệt vời giúp bạn hiểu rõ hành trình của request trong hệ thống microservices. Với Jaeger, bạn có thể:
- Phân tích lỗi nhanh chóng
- Tối ưu hiệu năng theo từng bước
- Kết hợp với OpenTelemetry để quản lý trace hiệu quả
📚 Tài nguyên tham khảo
- Trang chủ: https://www.jaegertracing.io
- Tài liệu OpenTelemetry: https://opentelemetry.io
- CNCF Landscape: Observability
- Video: “Distributed Tracing with Jaeger” (YouTube)