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.durationatauhttp_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.