- Published on
Dạng dữ liệu trong OpenTelemetry (traces, metrics, logs)
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04
Dạng dữ liệu trong OpenTelemetry
OpenTelemetry không chỉ gửi metrics, mà còn hỗ trợ đầy đủ cả traces, metrics, và logs.
Chúng ta sẽ cùng tìm hiểu kỹ từng loại nhé!
📑 Mục Lục
- Tổng quan 3 loại dữ liệu
- Traces là gì?
- Metrics là gì?
- Logs là gì?
- Gửi đi đâu?
- So sánh nhanh 3 loại dữ liệu
- Tổng kết
📦 Tổng quan 3 loại dữ liệu
Loại dữ liệu | Mô tả ngắn gọn | Dùng để làm gì? |
---|---|---|
Traces | Theo dõi hành trình của request | Debug lỗi, tìm bottleneck |
Metrics | Các số liệu thống kê định lượng | Giám sát hiệu năng hệ thống |
Logs | Ghi lại các sự kiện xảy ra | Phân tích lỗi, kiểm tra hành vi hệ thống |
🔍 Traces
- Trace là một hành trình (ví dụ một HTTP request đi qua nhiều service).
- Gồm nhiều Span: mỗi bước trong hành trình đó.
Ví dụ:
Trace: Đặt hàng
├── Span 1: Gọi API
├── Span 2: Kiểm tra kho
├── Span 3: Ghi DB
Dữ liệu trace gồm:
trace_id
,span_id
start_time
,duration
attributes
: thông tin bổ sung như HTTP method, status code...
📦 Xem trace bằng: Jaeger, Grafana Tempo, New Relic,...
📊 Metrics
- Là những con số thống kê định lượng theo thời gian.
- Ví dụ:
http.server.duration
: thời gian xử lý HTTP requestcpu.usage
: phần trăm CPU đang sử dụngmemory.usage
: dung lượng RAM
Các loại metrics phổ biến:
Counter: chỉ tăng (ví dụ: số lần gọi API)
Gauge: có thể tăng/giảm (ví dụ: nhiệt độ CPU)
Histogram: phân bổ thời gian xử lý (phân tích chậm)
📦 Lưu metrics bằng: Prometheus, InfluxDB, OTel Collector
📝 Logs
- Logs là các dòng ghi chép lại sự kiện trong quá trình chạy ứng dụng.
- Ví dụ:
[INFO] User đăng nhập
[ERROR] Kết nối database thất bại
OpenTelemetry hỗ trợ gửi logs (từ SDK hoặc tích hợp bên ngoài):
- Logs có thể kèm theo
trace_id
,span_id
để liên kết logs với trace - 📦 Xem logs bằng: Grafana Loki, Elasticsearch (ELK)
⚠️ Logs trong OpenTelemetry còn đang tiếp tục phát triển – bạn có thể dùng chung hệ thống logging với trace nếu cần.
📤 Gửi dữ liệu đi đâu?
Dữ liệu từ OTel sẽ được gửi qua OTLP protocol đến Collector, sau đó tới các hệ thống lưu trữ phù hợp:
Loại dữ liệu | Gửi đến hệ thống gì? |
---|---|
Traces | Jaeger, Tempo, Zipkin |
Metrics | Prometheus, InfluxDB |
Logs | Loki, Elasticsearch |
⚖️ So sánh nhanh
Đặc điểm | Traces | Metrics | Logs |
---|---|---|---|
Dạng dữ liệu | Phân cấp (tree) | Số liệu (time series) | Dòng văn bản |
Mục tiêu | Theo dõi hành trình | Theo dõi hiệu suất | Ghi sự kiện, lỗi |
Lưu trữ | Jaeger, Tempo | Prometheus | Loki, ELK |
Tần suất | Ít, chọn lọc | Cao, liên tục | Nhiều, tuỳ mức độ |
✅ Tổng kết
Bạn cần... | Dùng loại dữ liệu nào? |
---|---|
Biết request đi đâu, chậm ở đâu | Traces |
Biết hệ thống đang tải nặng không | Metrics |
Ghi lại lỗi và cảnh báo | Logs |
Kết hợp cả 3 loại này, bạn sẽ có một hệ thống observability toàn diện – giúp phát hiện và xử lý sự cố nhanh hơn nhiều lần.
📚 Tài nguyên:
- https://opentelemetry.io/docs
- CNCF Blog về observability
- Sách “Cloud Native Observability”