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

OpenTelemetry cho người mới bắt đầu (có sơ đồ và ví dụ)

Authors

OpenTelemetry là gì?

OpenTelemetry (viết tắt: OTel) là một công cụ giúp bạn giám sát hệ thống phần mềm: biết được ứng dụng hoạt động ra sao, khi nào xảy ra lỗi, và tại sao lại chậm.

Nó là camera giám sát cho phần mềm — giúp bạn thấy được mọi thứ đang xảy ra bên trong chương trình mà mắt thường không nhìn thấy.


opentelemetry-cho-nguoi-moi-bat-dau

📑 Mục Lục

  1. Tại sao cần OpenTelemetry?
  2. OpenTelemetry theo dõi cái gì?
  3. Sơ đồ minh họa hoạt động
  4. Cách sử dụng OpenTelemetry
  5. Ví dụ thực tế đơn giản
  6. Tích hợp trong Kubernetes
  7. Kết luận
  8. Tài nguyên tham khảo

💡 Tại sao cần OpenTelemetry?

Bạn thử tưởng tượng: bạn vào một website, bấm vào “Đặt hàng” nhưng không thấy phản hồi. Là người phát triển phần mềm, làm sao bạn biết lỗi nằm ở đâu?

OpenTelemetry giúp:

  • Theo dõi đường đi của yêu cầu (request) từ đầu đến cuối.
  • Đo thời gian thực hiện các bước.
  • Ghi lại lỗi nếu có.

📏 OpenTelemetry theo dõi cái gì?

OpenTelemetry thu thập 3 loại dữ liệu quan trọng:

  1. Trace: Dấu vết đường đi của một request (ví dụ: từ trang web -> API -> database).
  2. Metrics: Số liệu thống kê (số request, thời gian xử lý, CPU,...).
  3. Logs: Ghi lại các sự kiện, lỗi, cảnh báo khi chương trình chạy.

🧭 Sơ đồ minh họa hoạt động

   [Người dùng] 
        |
        v
  [Ứng dụng của bạn] --- (OTel SDK) ---> gửi trace, metrics
        |
        v
  [OpenTelemetry Collector] ----> gửi đến:
        - Prometheus (metrics)
        - Jaeger / Grafana Tempo (trace)
        - Logging system (logs)

Giải thích:

  • Bạn gắn thư viện OTel vào ứng dụng.
  • Ứng dụng gửi dữ liệu tới Collector (một dịch vụ trung gian).
  • Collector chuyển tiếp dữ liệu tới các công cụ hiển thị như Grafana, Jaeger, Prometheus.

⚙️ Cách sử dụng OpenTelemetry

Bước 1: Gắn thư viện OTel vào ứng dụng

Mỗi ngôn ngữ (Java, Python, Go, Node.js,...) đều có thư viện riêng. Bạn dùng SDK để gắn vào ứng dụng.

Ví dụ: ứng dụng Python

pip install opentelemetry-api opentelemetry-sdk

Bước 2: Tạo trace trong code

from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
trace.set_tracer_provider(TracerProvider())

tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("xu-ly-don-hang"):
    print("Xử lý đơn hàng thành công")

Bước 3: Cài Collector để nhận dữ liệu

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm install otel open-telemetry/opentelemetry-collector

🔍 Ví dụ thực tế đơn giản

Bạn có một ứng dụng bán hàng. Khi khách đặt hàng, bạn có 3 bước:

  1. Kiểm tra kho
  2. Ghi nhận đơn
  3. Gửi email xác nhận

Với OTel, bạn có thể biết:

  • Bước nào chậm?
  • Bước nào lỗi?
  • Tổng thời gian xử lý là bao lâu?

🚀 Dùng OpenTelemetry trong Kubernetes

Trong môi trường Kubernetes, bạn có thể:

  • Gắn tự động SDK vào ứng dụng (Auto Instrumentation)
  • Dùng DaemonSet để thu dữ liệu từ mọi node
  • Dùng Deployment để chạy Collector trung tâm

Tích hợp tốt với:

  • Prometheus để xem số liệu (metrics)
  • Grafana Tempo để xem đường đi của request (trace)
  • Jaeger để debug lỗi phức tạp

✅ Kết luận

OpenTelemetry là giải pháp hiện đại và mạnh mẽ giúp bạn giám sát ứng dụng một cách thông minh. Nó giúp:

  • Phát hiện lỗi sớm
  • Phân tích hiệu năng
  • Cải thiện trải nghiệm người dùng

Dù bạn mới bắt đầu trong ngành CNTT, bạn vẫn hoàn toàn có thể học và áp dụng OTel một cách dễ dàng.

📚 Tài nguyên tham khảo