- Published on
OpenTelemetry cho người mới bắt đầu (có sơ đồ và ví dụ)
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04
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.

📑 Mục Lục
- Tại sao cần OpenTelemetry?
- OpenTelemetry theo dõi cái gì?
- Sơ đồ minh họa hoạt động
- Cách sử dụng OpenTelemetry
- Ví dụ thực tế đơn giản
- Tích hợp trong Kubernetes
- Kết luận
- 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:
- Trace: Dấu vết đường đi của một request (ví dụ: từ trang web -> API -> database).
- Metrics: Số liệu thống kê (số request, thời gian xử lý, CPU,...).
- 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:
- Kiểm tra kho
- Ghi nhận đơn
- 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
- https://opentelemetry.io
- YouTube: “What is OpenTelemetry?”
- Sách miễn phí: “Cloud Native Observability”
- Thực hành labs: https://learn.opencncf.io