View a markdown version of this page

Kirim metrik menggunakan OpenTelemetry - Amazon CloudWatch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kirim metrik menggunakan OpenTelemetry

Anda dapat mempublikasikan metrik khusus untuk CloudWatch menggunakan OpenTelemetry Protokol (OTLP). Anda dapat menggunakan OTel SDK (Java, Python, Go, .NET, Node.js), Kolektor OTel, atau klien apa pun. OTLP-compatible

CloudWatch Titik akhir OTLP

Kirim metrik ke titik akhir CloudWatch OTLP di Wilayah Anda:

https://monitoring.region.amazonaws.com/v1/metrics

Otentikasi menggunakan AWS penandatanganan SiGv4 standar. Nama layanannya adalahmonitoring. Untuk informasi selengkapnya tentang titik akhir, opsi otentikasi, dan batas, lihat. Titik Akhir OTLP

Mulai cepat: publikasikan metrik pertama Anda

Opsi 1: Otel Collector (direkomendasikan untuk produksi)

Konfigurasikan Kolektor OTel dengan eksportir HTTP OTLP dan otentikasi SigV4:

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]

Untuk petunjuk penyiapan terperinci, lihatMemulai.

Opsi 2: OTel SDK (contoh 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"})

Opsi 3: OTel SDK (contoh 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" ));

Izin IAM yang diperlukan

Metrik pengiriman identitas memerlukan cloudwatch:PutMetricData izin. Untuk otentikasi SiGv4, lampirkan kebijakan berikut:

{ "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*" }

Untuk otentikasi token pembawa, lihat. Menyiapkan otentikasi token pembawa untuk Metrik

Verifikasi metrik sudah tiba

Buka CloudWatch konsol, navigasikan ke Query Studio, dan jalankan:

http_requests_total

Metrik biasanya muncul dalam 1-2 menit dari titik data pertama dikirim.

Jenis metrik yang didukung

Tabel berikut menjelaskan jenis metrik OTel yang CloudWatch mendukung dan cara menanyakannya dengan PromQL.

Jenis metrik OTel Perilaku PromQL
Penghitung Gunakan rate() atau increase() kueri
Pengukur Kueri langsung (nilai saat ini)
Histogram Gunakan histogram_quantile() untuk persentil

Praktik terbaik

Ikuti rekomendasi ini saat mengirim metrik melalui OTLP:

  • Gunakan nama metrik yang berarti — Ikuti konvensi penamaan OTel (misalnya, http.server.request.duration atauhttp_request_duration_seconds).

  • Jaga agar kardinalitas label tetap wajar — Hindari ID permintaan atau UUID sebagai nilai label.

  • Tetapkan interval ekspor yang sesuai - 60 detik adalah standar. Interval yang lebih pendek meningkatkan biaya.

  • Gunakan atribut sumber daya — Gunakan atribut sumber daya untuk metadata statis (nama layanan, versi, lingkungan) daripada label per titik data.