Blog chia sẻ về công nghệ ...
Published on

Dạng dữ liệu trong OpenTelemetry (traces, metrics, logs)

Authors

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

  1. Tổng quan 3 loại dữ liệu
  2. Traces là gì?
  3. Metrics là gì?
  4. Logs là gì?
  5. Gửi đi đâu?
  6. So sánh nhanh 3 loại dữ liệu
  7. Tổng kết

📦 Tổng quan 3 loại dữ liệu

Loại dữ liệuMô tả ngắn gọnDùng để làm gì?
TracesTheo dõi hành trình của requestDebug lỗi, tìm bottleneck
MetricsCác số liệu thống kê định lượngGiám sát hiệu năng hệ thống
LogsGhi lại các sự kiện xảy raPhâ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 request
    • cpu.usage: phần trăm CPU đang sử dụng
    • memory.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ệuGửi đến hệ thống gì?
TracesJaeger, Tempo, Zipkin
MetricsPrometheus, InfluxDB
LogsLoki, Elasticsearch

⚖️ So sánh nhanh

Đặc điểmTracesMetricsLogs
Dạng dữ liệuPhân cấp (tree)Số liệu (time series)Dòng văn bản
Mục tiêuTheo dõi hành trìnhTheo dõi hiệu suấtGhi sự kiện, lỗi
Lưu trữJaeger, TempoPrometheusLoki, ELK
Tần suấtÍt, chọn lọcCao, liên tụcNhiề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 ở đâuTraces
Biết hệ thống đang tải nặng khôngMetrics
Ghi lại lỗi và cảnh báoLogs

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: