本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 OpenTelemetry 傳送指標
您可以使用 OpenTelemetry Protocol (OTLP) 將自訂指標發佈至 CloudWatch。您可以使用 OTel SDKs(Java、Python、Go、.NET、Node.js)、OTel Collector 或任何與 OTLP 相容的用戶端。
CloudWatch OTLP 端點
將指標傳送至您區域中的 CloudWatch OTLP 端點:
https://monitoring.region.amazonaws.com/v1/metrics
身分驗證使用 standard AWS SigV4 簽署。服務名稱為 monitoring。如需端點、身分驗證選項和限制的詳細資訊,請參閱 OTLP 端點。
快速入門:發佈您的第一個指標
選項 1:OTel 收集器 (建議用於生產)
使用 OTLP HTTP 匯出器和 SigV4 身分驗證設定 OTel 收集器:
receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 processors: batch: send_batch_size: 200 timeout: 10s exporters: otlphttp: tls: insecure: false metrics_endpoint: "https://monitoring.us-east-1.amazonaws.com/v1/metrics" auth: authenticator: sigv4auth extensions: sigv4auth: service: "monitoring" region: "us-east-1" service: extensions: [sigv4auth] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [otlphttp]
如需詳細的設定說明,請參閱 開始使用。
選項 2:OTel SDK (Python 範例)
from opentelemetry import metrics from opentelemetry.sdk.metrics import MeterProvider from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader from opentelemetry.exporter.otlp.proto.http.metric_exporter import OTLPMetricExporter # Point at the CloudWatch OTLP endpoint exporter = OTLPMetricExporter( endpoint="https://monitoring.us-east-1.amazonaws.com:443/v1/metrics" ) reader = PeriodicExportingMetricReader(exporter, export_interval_millis=60000) provider = MeterProvider(metric_readers=[reader]) metrics.set_meter_provider(provider) # Create and record a metric meter = metrics.get_meter("my-app") counter = meter.create_counter("http_requests_total", description="Total HTTP requests") counter.add(1, {"method": "GET", "path": "/api/users", "status": "200"})
選項 3:OTel SDK (Java 範例)
import io.opentelemetry.api.metrics.Meter; import io.opentelemetry.api.metrics.LongCounter; Meter meter = GlobalOpenTelemetry.getMeter("my-app"); LongCounter counter = meter.counterBuilder("http_requests_total") .setDescription("Total HTTP requests") .build(); counter.add(1, Attributes.of( AttributeKey.stringKey("method"), "GET", AttributeKey.stringKey("path"), "/api/users", AttributeKey.stringKey("status"), "200" ));
所需的 IAM 許可
身分傳送指標需要 cloudwatch:PutMetricData許可。對於 SigV4 身分驗證,請連接下列政策:
{ "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*" }
如需承載字符身分驗證,請參閱 設定指標的承載字符身分驗證。
驗證指標是否到達
開啟 CloudWatch 主控台,導覽至 Query Studio,然後執行:
http_requests_total
指標通常會在傳送第一個資料點的 1-2 分鐘內顯示。
支援的指標類型
下表說明 CloudWatch 支援的 OTel 指標類型,以及如何使用 PromQL 查詢它們。
| OTel 指標類型 | PromQL 行為 |
|---|---|
| 計數器 | 使用 rate()或 increase() 查詢 |
| 量測計 | 直接查詢 (目前值) |
| 直方圖 | histogram_quantile() 用於百分位數 |
最佳實務
透過 OTLP 傳送指標時,請遵循下列建議:
-
使用有意義的指標名稱 — 遵循 OTel 命名慣例 (例如
http.server.request.duration或http_request_duration_seconds)。 -
保持標籤基數合理 - 避免將請求 IDs或 UUIDs作為標籤值。
-
設定適當的匯出間隔 — 標準為 60 秒。較短的間隔會增加成本。
-
使用資源屬性 — 使用靜態中繼資料 (服務名稱、版本、環境) 的資源屬性,而非per-data-point標籤。