Trước OpenTelemetry, mỗi nhà cung cấp giám sát có agent và SDK riêng. Đổi từ vendor này sang vendor khác nghĩa là sửa code trong toàn bộ service. OpenTelemetry tách việc sinh dữ liệu (instrumentation) khỏi nơi lưu và hiển thị (backend) bằng một chuẩn chung.
Thành phần chính:
- API + SDK theo từng ngôn ngữ — nơi code tạo span, metric, log. API là bề mặt ổn định; SDK lo lấy mẫu, gom batch, xuất dữ liệu.
- Instrumentation dựng sẵn cho framework phổ biến (HTTP server/client, gRPC, driver DB, client hàng đợi) — cắm vào là có trace cơ bản mà gần như không sửa code nghiệp vụ.
- Semantic conventions — quy ước đặt tên thuộc tính (http.request.method, db.system, server.address). Đây là phần dễ bị xem nhẹ nhưng chính nó làm dashboard dùng lại được giữa các service và các đội.
- OTLP — giao thức truyền dữ liệu chung.
- Collector — tiến trình trung gian nhận dữ liệu, xử lý (lọc, che dữ liệu nhạy cảm, tail sampling, thêm thuộc tính) rồi xuất đi một hoặc nhiều backend.
Lợi ích thực tế: đổi backend chỉ là đổi cấu hình exporter ở Collector, không đụng vào service. Ngoài ra có thể gửi song song sang hai backend trong giai đoạn chuyển đổi.
Mức độ ổn định khác nhau theo tín hiệu và theo ngôn ngữ: trace và metric đã ổn định, phần log ra sau và ở một số ngôn ngữ vẫn đang hoàn thiện — nên kiểm tra trạng thái của ngôn ngữ mình dùng trước khi cam kết toàn bộ.