Cloud & hạ tầng

OpenChoreo sử dụng OpenTelemetry để lưu trữ sự kiện và trace trên Kubernetes

Dự án CNCF Sandbox OpenChoreo tích hợp OpenTelemetry Collector nhằm cung cấp distributed tracing và lưu trữ dài hạn cho các sự kiện Kubernetes trong nền tảng Internal Developer Platform của mình.

Một khối thủy tinh với các mạch phát sáng đại diện cho luồng dữ liệu và khả năng quan sát.
Minh họa được tạo riêng cho bài viết này

Được dịch tự động từ bản gốc tiếng Anh.

OpenChoreo, một dự án thuộc CNCF Sandbox, đã tích hợp OpenTelemetry Collector vào nền tảng Internal Developer Platform (IDP) để giải quyết những thách thức phổ biến về khả năng quan sát (observability). Được phát hành vào cuối tháng 10 năm 2026, bản cập nhật này cho phép các nhóm nền tảng thu thập distributed traces và lưu trữ các sự kiện Kubernetes vốn sẽ nhanh chóng biến mất khỏi API server.

Chuyện gì đã xảy ra

Các nền tảng Internal Developer Platform hướng tới việc cung cấp một quy trình liền mạch từ code đến production, nhưng observability thường vẫn là một gánh nặng phân mảnh. Các nhà phát triển phải đối mặt với sự gia tăng của nhiều công cụ, yêu cầu kết nối phức tạp và các dashboard rời rạc. OpenChoreo giải quyết vấn đề này bằng cách nhúng trực tiếp observability vào kiến trúc của nó, sử dụng OpenTelemetry Collector làm động cơ cốt lõi cho hai tính năng quan trọng: distributed tracing và persistent Kubernetes events.

Nền tảng được cấu trúc thành các plane riêng biệt chạy trên Kubernetes. Một control plane quản lý trạng thái, trong khi các data plane xử lý workload. Một workflow plane tùy chọn quản lý quá trình build và test, cùng với một observability plane chuyên dụng thu thập dữ liệu telemetry. Sự tách biệt này cho phép lớp observability hoạt động độc lập, thu thập logs, metrics, traces và events mà không ảnh hưởng đến hiệu suất ứng dụng. Hệ thống sử dụng kiến trúc hexagonal, cung cấp các API tiêu chuẩn cho việc ingestion và các giao diện adapter cho backend lưu trữ, cho phép các nhóm thay đổi nhà cung cấp như OpenSearch hoặc AWS X-Ray thông qua Helm charts thay vì phải sửa đổi code.

Cách thức hoạt động

Đối với distributed tracing, OpenChoreo tận dụng các SDK OpenTelemetry tiêu chuẩn. Ứng dụng xuất spans qua OTLP tới một Collector cục bộ trong mỗi data plane. Pipeline trước tiên nhận các spans này, sau đó làm phong phú chúng bằng processor k8sattributes. Bước này khớp các spans với pod nguồn gốc và gắn thêm metadata Kubernetes, ánh xạ các chi tiết kỹ thuật sang các khái niệm của OpenChoreo như project và environment. Sau đó, một tail_sampling processor đánh giá toàn bộ trace trước khi quyết định giữ lại những trace nào, đảm bảo các quyết định sampling dựa trên ngữ cảnh đầy đủ. Cuối cùng, các traces đã được làm phong phú sẽ được xuất tới một collector trung tâm hoặc trực tiếp tới các backend đám mây.

Sự kiện Kubernetes đặt ra một thách thức khác vì chúng có vòng đời ngắn và không liên kết chặt chẽ với các pod cụ thể theo cách giống như traces. API server thường chỉ lưu giữ chúng trong một giờ. OpenChoreo triển khai một phiên bản Collector được thiết kế riêng để giải quyết vấn đề này. Một collector single-replica sử dụng receiver k8s_events để theo dõi các sự kiện trên toàn bộ cluster. Một processor tùy chỉnh tên là k8seventenrich tra cứu nhãn và annotation của object từ cache informer trong bộ nhớ, thêm chúng vào làm resource attributes mà không cần truy vấn API server lặp đi lặp lại. Các sự kiện đã được làm phong phú sau đó được gom batch và gửi tới các backend log bền vững, giúp chúng sẵn sàng cho việc phân tích sau sự cố ngay cả sau khi thời gian lưu trữ mặc định hết hạn.

Chi tiết chính

  • OpenChoreo là một nền tảng Internal Developer Platform mã nguồn mở, module hóa, hiện đang nằm trong CNCF Sandbox.
  • Observability plane sử dụng kiến trúc hexagonal với các API adapter để thay đổi backend lưu trữ.
  • Distributed tracing sử dụng tail_sampling để đưa ra quyết định lưu trữ dựa trên ngữ cảnh đầy đủ của trace.
  • Processor tùy chỉnh k8seventenrich thêm nhãn Kubernetes và owner references vào các sự kiện bằng cách sử dụng cache trong bộ nhớ.
  • Các backend tracing được hỗ trợ bao gồm OpenSearch, OpenObserve, AWS X-Ray, Azure Application Insights và Google Cloud Trace.
  • Phiên bản collector cho sự kiện hỗ trợ các exporter cho OpenSearch, OTLP, AWS CloudWatch Logs và debug outputs.

Tại sao điều này quan trọng

Đối với các kỹ sư nền tảng, lợi ích chính là giảm thiểu ma sát vận hành. Bằng cách chuẩn hóa trên OpenTelemetry, OpenChoreo tránh được tình trạng vendor lock-in và giảm nhu cầu viết code instrumentation tùy chỉnh. Khả năng thay đổi backend thông qua cấu hình nghĩa là các nhóm có thể thích ứng với những thay đổi về chi phí hoặc yêu cầu tuân thủ mà không cần refactor nền tảng. Hơn nữa, việc tích hợp các AI agent thông qua MCP servers cho phép các công cụ debug tự động truy cập vào cùng dữ liệu trace phong phú mà các nhà phát triển con người nhìn thấy, có khả năng đẩy nhanh tốc độ giải quyết sự cố.

Việc lưu trữ các sự kiện Kubernetes đặc biệt có giá trị trong việc chẩn đoán các vấn đề ở tầng hạ tầng. Những vấn đề như throttling giới hạn tài nguyên hoặc lỗi scheduling thường không để lại dấu vết trong application logs. Bằng cách thu thập và làm phong phú các sự kiện này, các nhóm nền tảng có được cái nhìn sâu sắc vào vòng đời của deployments và jobs. Điều này biến những nhiễu loạn tạm thời của cluster thành một audit trail đáng tin cậy, giúp các nhóm hiểu tại sao một deployment thất bại hoặc tại sao một service scale bất ngờ trong giờ cao điểm.

Bạn có thể làm gì

  • Triển khai demo microservices GCP trên OpenChoreo để thử nghiệm distributed tracing giữa nhiều services.
  • Cài đặt module observability-events-otel-collector bằng Helm chart được cung cấp để bắt đầu thu thập các sự kiện được lưu trữ bền vững.
  • Cấu hình processor tail_sampling để chỉ giữ lại các traces có lỗi hoặc độ trễ cao, tối ưu hóa chi phí lưu trữ.
  • Sử dụng processor k8sattributes để ánh xạ metadata Kubernetes thô sang các nhãn project và environment nội bộ của bạn.
  • Khám phá các tab Traces và Events trên cổng thông tin OpenChoreo để tương quan hiệu suất ứng dụng với các hoạt động ở tầng cluster.
  • Xem xét code của processor tùy chỉnh k8seventenrich nếu bạn cần mở rộng logic làm phong phú sự kiện cho các object cụ thể trong cluster của mình.
  • #opentelemetry
  • #kubernetes
  • #observability
  • #platform engineering
  • #cncf

Công cụ từ cửa hàng Bytechap

Đọc tiếp

Tất cả bài viết