Tác giả: Rodrigue Koffi
Ngày phát hành: 03 APR 2026
Chuyên mục: Amazon CloudWatch, Management Tools, Technical How-to
Nếu bạn chạy các workload Kubernetes hoặc microservices trên AWS, các metrics của bạn có thể mang hàng chục nhãn: namespace, pod, container, node, deployment, replica set và các dimension kinh doanh tùy chỉnh. Để có cái nhìn toàn diện về môi trường của bạn, bạn có thể đang chia pipeline metrics của mình: Amazon CloudWatch cho các metrics của AWS và một backend tương thích với Prometheus riêng biệt cho các metrics container và ứng dụng có cardinality cao (nhiều tổ hợp nhãn duy nhất). Một số nhóm còn đi xa hơn. Họ sử dụng Prometheus CloudWatch exporters để kéo các metrics tài nguyên AWS vào backend Prometheus của họ thông qua các lệnh gọi API GetMetricData. Điều này làm tăng chi phí và gánh nặng vận hành nhưng cho phép họ truy vấn mọi thứ ở một nơi.
Amazon CloudWatch hiện đã tích hợp sẵn tính năng thu thập metrics OpenTelemetry và hỗ trợ truy vấn chúng bằng Prometheus Query Language (PromQL). Khả năng xem trước này giới thiệu một kho lưu trữ metrics cardinality cao hỗ trợ tới 150 nhãn cho mỗi metric, vì vậy bạn có thể gửi các metrics phong phú, dày đặc nhãn trực tiếp đến CloudWatch mà không cần chuyển đổi hoặc cắt bớt. Kết hợp với tính năng làm giàu metrics AWS tự động, CloudWatch trở thành một điểm đến duy nhất cho các metrics cơ sở hạ tầng, container và ứng dụng, tất cả đều có thể truy vấn bằng PromQL.
Trong bài viết này, bạn sẽ tìm hiểu cách:
- Bật tính năng thu thập metrics OpenTelemetry và làm giàu tài nguyên AWS tự động trong tài khoản của bạn
- Triển khai Amazon CloudWatch Container Insights trên một cụm Amazon Elastic Kubernetes Service (Amazon EKS)
- Truy vấn metrics cơ sở hạ tầng và tài nguyên AWS bằng PromQL trong Amazon CloudWatch và Amazon Managed Grafana
- Tạo metrics ứng dụng tùy chỉnh trong Amazon CloudWatch bằng OpenTelemetry SDK và xem chúng được làm giàu tự động với ngữ cảnh AWS
Hỗ trợ OpenTelemetry có ý nghĩa gì đối với Amazon CloudWatch
OpenTelemetry Protocol (OTLP) là giao thức dây tiêu chuẩn cho dự án OpenTelemetry (OTel). Nó định nghĩa cách dữ liệu telemetry, bao gồm metrics, traces và logs, được mã hóa và truyền tải giữa các thành phần. Với bản xem trước này, CloudWatch cung cấp một OTLP endpoint theo khu vực mà các collector hoặc SDK tương thích với OpenTelemetry có thể gửi metrics đến.
CloudWatch nhận các metrics và lưu trữ chúng trong một kho metrics cardinality cao mới, giữ nguyên các loại metrics OpenTelemetry, bao gồm counters, histograms, gauges và up-down counters, mà không cần chuyển đổi. Với lần ra mắt này, CloudWatch hoàn tất hỗ trợ OpenTelemetry trên cả ba trụ cột của khả năng quan sát. CloudWatch đã chấp nhận traces và logs thông qua các OTLP endpoint của nó, việc bổ sung tính năng thu thập metrics OTLP gốc có nghĩa là bạn hiện có thể gửi tất cả telemetry của mình đến CloudWatch bằng các tiêu chuẩn mở, thông qua một giao thức duy nhất. Ba khả năng làm cho điều này trở nên quan trọng:
Hỗ trợ nhãn và cardinality mở rộng. Các metrics được thu thập qua OTLP hỗ trợ tới 150 nhãn, so với giới hạn 30 dimension của CloudWatch custom metrics. Điều này loại bỏ một hạn chế chính đối với các workload Kubernetes, microservice và OpenTelemetry dựa vào các nhãn cardinality cao để lọc và tổng hợp. Truy cập trang hạn mức để cập nhật khi các giới hạn này tiếp tục phát triển.
Hỗ trợ truy vấn PromQL. Bạn có thể truy vấn các metrics được thu thập qua OTLP bằng PromQL. Nếu bạn đã sử dụng Prometheus, bạn có thể sử dụng cùng một ngôn ngữ truy vấn trực tiếp trong CloudWatch và Amazon Managed Grafana, không cần học cú pháp mới.
Làm giàu tài nguyên AWS tự động. Khả năng này thay đổi cơ bản cách bạn truy vấn và lọc metrics trên cơ sở hạ tầng AWS của mình. CloudWatch làm giàu mọi metric được thu thập với ngữ cảnh tài nguyên AWS: ID tài khoản, Region, ARN của cụm và các thẻ tài nguyên từ AWS Resource Explorer. Việc làm giàu này diễn ra tự động, không cần thêm công cụ. Bạn có thể lọc và nhóm metrics theo tài khoản AWS, Region, thẻ môi trường hoặc tên ứng dụng, cho dù chúng đến từ Container Insights, một ứng dụng tùy chỉnh hay một dịch vụ AWS. Không có exporters, không có nhãn tùy chỉnh, không có lệnh gọi API bổ sung.

Hình 1: Kiến trúc làm giàu và thu thập metrics OpenTelemetry trong Amazon CloudWatch.
Bật tính năng thu thập OTLP và làm giàu tài nguyên AWS
Trước khi bạn có thể thu thập và truy vấn metrics OTLP, hãy bật hai cài đặt cấp tài khoản. Cài đặt đầu tiên cho phép truyền các thẻ tài nguyên từ tài nguyên AWS của bạn đến telemetry của bạn, các thẻ tương tự mà bạn thấy trong AWS Resource Explorer. Cài đặt thứ hai cho phép thu thập OTLP cho CloudWatch.
Bạn có thể bật cả hai cài đặt làm giàu từ Amazon CloudWatch console hoặc bằng cách sử dụng AWS CLI.
Sử dụng console
Để bật tính năng làm giàu trong CloudWatch console, hãy làm theo các bước sau:
- Mở Amazon CloudWatch console.
- Trong ngăn điều hướng, chọn Settings.
- Bật thẻ tài nguyên trên telemetry.
- Bật làm giàu OTel cho metrics AWS.
Sau khi bạn bật cả hai cài đặt, tài khoản của bạn đã sẵn sàng nhận metrics OTLP tại endpoint theo khu vực.

Hình 2: Bật tính năng làm giàu OTel và thẻ tài nguyên trong cài đặt console của CloudWatch
Sử dụng AWS CLI
Ngoài ra, hãy sử dụng AWS CLI để bật cả hai lớp làm giàu. Chạy các lệnh sau:
# Enable resource tags on telemetryaws observabilityadmin start-telemetry-enrichment# Enable OTel enrichment for CloudWatchaws cloudwatch start-otel-enrichment
Để xác minh rằng cả hai cài đặt làm giàu đều đang hoạt động, hãy chạy lệnh sau:
aws cloudwatch get-otel-enrichment-status
Với tính năng làm giàu được bật, mọi metric được thu thập qua OTLP endpoint đều được tự động gắn thẻ với ngữ cảnh tài nguyên AWS. Bảng sau hiển thị các thuộc tính mà CloudWatch thêm vào:
| Thuộc tính | Mô tả | Ví dụ |
|---|---|---|
| @aws.account | ID tài khoản AWS | 123456789012 |
| @aws.region | AWS Region | us-west-2 |
| cloud.resource_id | ARN đầy đủ của cụm EKS | arn:aws:eks:us-west-2:123456789012:cluster/prod |
| k8s.cluster.name | Tên cụm EKS | production-cluster |
| k8s.namespace.name | Kubernetes namespace | karpenter |
| k8s.container.name | Tên container | controller |
| @instrumentation.name | Nguồn công cụ | cloudwatch-otel-ci |
| Resource tags | Các thẻ từ AWS Resource Explorer (@aws.tag.Application, @aws.tag.CostCenter, @resource.ec2.tag.ManagedBy, …) | env=production |
Các thuộc tính này được CloudWatch thêm vào mà không yêu cầu công cụ thủ công. Đây là điều giúp bạn có thể truy vấn trên các tài khoản AWS, Region và thẻ tài nguyên mà không cần xây dựng các pipeline tùy chỉnh hoặc chạy exporters.
Amazon CloudWatch Container Insights với metrics OpenTelemetry
Để xem OpenTelemetry với CloudWatch hoạt động, hãy bắt đầu với Container Insights. Amazon CloudWatch Container Insights cho Amazon EKS hiện hỗ trợ metrics Prometheus và OpenTelemetry. Điều này chuẩn hóa metrics container với các thuộc tính OpenTelemetry và làm cho chúng có thể truy vấn được bằng PromQL. Bạn có thể bật Container Insights bằng cách sử dụng Amazon EKS add-on thông qua console hoặc AWS CLI.
Dashboard của Container Insights
Sau khi Container Insights được triển khai, CloudWatch tự động tạo các dashboard hiển thị metrics cấp cụm bao gồm mức sử dụng CPU, mức sử dụng bộ nhớ và số lượng pod. Để xem các dashboard này, hãy mở CloudWatch console, chọn Container Insights từ ngăn điều hướng và chọn cụm của bạn từ menu thả xuống. Bạn có thể chuyển đổi giữa các chế độ xem cấp cụm, namespace và pod để đi sâu vào các workload cụ thể.

Hình 3: Dashboard của Amazon CloudWatch Container Insights
Truy vấn metrics bằng PromQL với CloudWatch Query Studio
Bạn có thể truy vấn các metrics được thu thập qua OTLP bằng PromQL trong CloudWatch console, Amazon Managed Grafana hoặc các giao diện truy vấn hỗ trợ PromQL và AWS Signature Version 4 (SigV4). CloudWatch Query Studio cung cấp một trình chỉnh sửa PromQL tích hợp để khám phá và trực quan hóa các metrics này trực tiếp trong console. Chọn chế độ truy vấn PromQL để bắt đầu.

Hình 4: Giao diện Amazon CloudWatch Query Studio với chế độ truy vấn PromQL
Truy vấn sử dụng ngữ cảnh tài nguyên AWS đã được làm giàu
Vì tính năng làm giàu được bật, bạn có thể truy vấn trên các ranh giới tài nguyên AWS bằng cách sử dụng các thẻ mà CloudWatch tự động thêm vào. Không có exporters, không có nhãn tùy chỉnh:
# AWS Lambda function duration for functions tagged with application "order-pipeline"Duration{"@aws.tag.appname"="order-pipeline"}# Amazon EC2 CPU utilization for production delivery workloadsCPUUtilization{"@aws.tag.Environment"="production", "@aws.tag.Application"="delivery"}# Running pods grouped by AWS account and namespacesum by (aws_account_id, k8s_namespace_name) (kube_pod_status_phase{phase="Running"})
Truy vấn cuối cùng trả về số lượng pod đang chạy được nhóm theo tài khoản AWS và Kubernetes namespace mà không cần bất kỳ công cụ tùy chỉnh nào. Nhãn aws_account_id được thêm tự động bởi lớp làm giàu.

Hình 5: CloudWatch Query Studio truy vấn metrics thời lượng Lambda
Truy vấn metrics bằng PromQL trong Grafana
Để trực quan hóa các metrics được thu thập qua OTLP trong Amazon Managed Grafana, hãy thêm một Prometheus data source trỏ đến CloudWatch PromQL endpoint. Phần này hướng dẫn cấu hình data source với xác thực AWS Signature Version 4 (SigV4).
- Mở workspace Amazon Managed Grafana của bạn.
- Chọn Data Sources.
- Chọn Add data source.
- Chọn Prometheus làm loại data source.
- Đối với URL, nhập CloudWatch PromQL endpoint cho Region của bạn:
https://monitoring.<AWS Region>.amazonaws.com/v1/metrics - Trong Authentication, chọn SigV4.
- Cấu hình IAM role thích hợp cho xác thực SigV4.
- Chọn Save & Test để xác minh kết nối.
Nếu Save & Test thành công, bạn sẽ thấy thông báo xác nhận “Data source is working”. Nếu thất bại, hãy xác minh rằng IAM role có các quyền
cloudwatch:GetMetricDatavàcloudwatch:ListMetrics, và rằng SigV4 signing được cấu hình đúng cách.
Sau khi data source được cấu hình, bạn có thể sử dụng các truy vấn PromQL tương tự trong Grafana dashboards.

Hình 6: Grafana Explore với CloudWatch PromQL
Metrics ứng dụng tùy chỉnh
Tính năng thu thập OTLP của CloudWatch cũng hỗ trợ metrics ứng dụng tùy chỉnh. Các ứng dụng được trang bị OpenTelemetry SDK có thể gửi metrics thông qua CloudWatch agent đang chạy trong cụm của bạn mà không cần thay đổi mã công cụ của bạn.
Để xem điều này hoạt động, hãy triển khai một ứng dụng Python mẫu từ kho lưu trữ aws-otel-community. Ứng dụng sử dụng OpenTelemetry Python SDK để phát ra các metrics tùy chỉnh bao gồm tất cả các loại metrics OTel: counters, histograms, gauges và up-down counters. Ví dụ, ứng dụng định nghĩa một histogram latency_time đo thời gian phản hồi API:
from opentelemetry import metricsmeter = metrics.get_meter(__name__)# Histogram --- measures API latency distributionlatency_time = meter.create_histogram( name="latency_time", description="Measures latency time", unit="ms",)
Triển khai ứng dụng mẫu
Tìm ứng dụng mẫu và tất cả các manifest triển khai trong kho lưu trữ aws-otel-community trên GitHub. Add-on Container Insights mà bạn đã triển khai trước đó bao gồm một CloudWatch agent hoạt động như một OpenTelemetry collector. Trỏ ứng dụng mẫu đến nó bằng cách đặt biến môi trường OTEL_EXPORTER_OTLP_ENDPOINT: http://cloudwatch-agent.amazon-cloudwatch.svc.cluster.local:4317.
Hướng dẫn này sử dụng CloudWatch agent, nhưng bạn có thể sử dụng bất kỳ collector hoặc SDK tương thích với OpenTelemetry nào hỗ trợ OTLP/HTTP để gửi metrics trực tiếp đến CloudWatch OTLP endpoint.
Truy vấn metrics ứng dụng bằng PromQL
Sau khi triển khai ứng dụng, hãy mở CloudWatch Query Studio hoặc trong workspace Amazon Managed Grafana của bạn, điều hướng đến Explore và chọn CloudWatch PromQL data source.
Truy vấn sau hiển thị độ trễ p99 cho ứng dụng demo trong Amazon Managed Grafana, được nhóm theo nhãn @aws.region đã được làm giàu tự động:
histogram_quantile(0.99, sum by (le, aws_region) (rate(latency_time_bucket{resource_service_name="python-demo-app"}[5m])))`

Hình 7: Độ trễ P99 cho ứng dụng mẫu trong Amazon Managed Grafana
Vì tính năng làm giàu được bật, mọi metric ứng dụng đều được tự động làm giàu với ngữ cảnh tài nguyên AWS. Ví dụ, truy vấn cpu_usage trả về các nhãn này mà không cần bất kỳ công cụ bổ sung nào:

Hình 8: Hiển thị tất cả các nhãn đã được làm giàu từ công cụ OTel tùy chỉnh
Giá cả
Khả năng thu thập OTLP và truy vấn PromQL hiện có sẵn mà không phải trả thêm chi phí trong thời gian xem trước. Để biết chi tiết giá hiện tại, hãy xem trang Giá của Amazon CloudWatch.
Các tài nguyên Amazon EKS và Amazon Managed Grafana được sử dụng trong hướng dẫn này sẽ được tính phí theo mức tiêu chuẩn. Để tránh các khoản phí liên tục, hãy làm theo phần dọn dẹp trong phần tiếp theo sau khi bạn hoàn thành hướng dẫn.
Dọn dẹp
- Xóa ứng dụng mẫu:
kubectl delete -f demo-app.yaml
- Xóa add-on Amazon CloudWatch Observability khỏi cụm EKS của bạn:
aws eks delete-addon \ --cluster-name \ --addon-name amazon-cloudwatch-observability
- Xóa Prometheus data source khỏi workspace Grafana của bạn (đăng nhập vào Grafana console, điều hướng đến Data Sources và xóa CloudWatch PromQL data source mà bạn đã cấu hình).
- Xóa workspace Amazon Managed Grafana (chỉ khi được tạo cho hướng dẫn này):
aws grafana delete-workspace --workspace-id
- Xóa cụm Amazon EKS (chỉ khi được tạo cho hướng dẫn này):
aws eks delete-cluster --name
- Tắt làm giàu OTel (nếu không còn cần thiết cho tài khoản của bạn):
# Disable OTel enrichmentaws cloudwatch stop-otel-enrichment# Disable telemetry enrichmentaws observabilityadmin stop-telemetry-enrichment
- Gỡ bỏ IAM policy nếu nó được gắn cụ thể cho hướng dẫn này:
aws iam detach-role-policy \ --role-name \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
Kết luận
Bài viết này đã hướng dẫn cách thu thập metrics OpenTelemetry gốc trong Amazon CloudWatch: bật các lớp làm giàu, triển khai Container Insights trên Amazon EKS, gửi metrics ứng dụng tùy chỉnh bằng OpenTelemetry SDK, truy vấn mọi thứ bằng PromQL.
Với khả năng xem trước này, bạn có thể hợp nhất pipeline metrics của mình vào CloudWatch. Các metrics cardinality cao với giới hạn nhãn mở rộng, truy vấn PromQL và làm giàu tài nguyên AWS tự động hoạt động cùng nhau để các metrics cơ sở hạ tầng, metrics container và metrics ứng dụng đều chảy qua cùng một pipeline và mang cùng ngữ cảnh tài nguyên AWS. Không có backend riêng biệt, không có exporters, không có lệnh gọi API bổ sung để đưa metrics AWS của bạn vào một chế độ xem thống nhất.
Để biết thêm các ví dụ thực tế về công cụ cấp ứng dụng với OpenTelemetry, hãy khám phá các tài nguyên sau:
- Hướng dẫn Thực hành Tốt nhất về Khả năng Quan sát của AWS: các mẫu để trang bị ứng dụng bằng OpenTelemetry SDKs
- One Observability Workshop: các phòng thí nghiệm thực hành cho metrics, traces và logs trên AWS
- AWS Observability Accelerator: các mẫu CDK và module Terraform để tự động hóa việc thu thập và truy vấn telemetry
Bản xem trước hiện có sẵn mà không phải trả thêm chi phí ở US East (N. Virginia), US West (Oregon), Europe (Ireland), Asia Pacific (Singapore) và Asia Pacific (Sydney). Để bắt đầu, hãy bật các lớp làm giàu trong tài khoản của bạn và triển khai add-on CloudWatch Observability trên một cụm Amazon EKS.
Về tác giả

Rodrigue Koffi
Rodrigue là Kiến trúc sư Giải pháp Chuyên gia tại Amazon Web Services về Observability. Anh ấy đam mê khả năng quan sát, các hệ thống phân tán và machine learning. Anh ấy có nền tảng vững chắc về DevOps và phát triển phần mềm, và yêu thích lập trình bằng Go. Ngoài công việc, Rodrigue thích bơi lội và dành thời gian chất lượng bên gia đình. Tìm anh ấy trên LinkedIn tại /grkoffi