View a markdown version of this page

Jejak dan metrik - AWS SDK untuk Go v2

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

Jejak dan metrik

Alat AWS SDK untuk Go ini diinstrumentasi untuk merekam rentang jejak dan metrik sisi klien untuk operasi SDK. Secara default, klien menggunakan implementasi no-op untuk penelusuran dan metrik, yang berarti tidak ada data yang dikumpulkan kecuali Anda mengonfigurasi penyedia.

Klien layanan memiliki dua opsi konfigurasi untuk observabilitas:

  • TracerProvider— Titik masuk untuk membuat pelacak dan merekam rentang jejak klien.

  • MeterProvider— Titik masuk untuk membuat meter dan merekam metrik sisi klien.

Meskipun terinspirasi oleh spesifikasi OpenTelemetry (OTel), ini didefinisikan APIs secara independen dismithy-go. SDK menyediakan modul adaptor untuk menghubungkan implementasi OTel SDK konkret ke antarmuka penyedia SDK.

Pelacakan

Gunakan modul adaptor smithyoteltracing untuk menghubungkan ke klien layanan. OTel trace.TracerProvider

Contoh berikut menunjukkan cara mengonfigurasi penelusuran untuk klien Amazon S3:

import ( "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/smithy-go/tracing/smithyoteltracing" "go.opentelemetry.io/otel/trace" ) // provider is an OTel trace.TracerProvider that you have configured. var provider trace.TracerProvider svc := s3.NewFromConfig(cfg, func(o *s3.Options) { o.TracerProvider = smithyoteltracing.Adapt(provider) })

Operasi SDK diinstrumentasi dengan hierarki rentang yang mencakup komponen tingkat tinggi dari siklus hidup operasi, seperti serialisasi permintaan, penandatanganan, dan loop coba lagi.

Metrik-metrik

Gunakan modul adaptor smithyotelmetrics untuk menghubungkan ke klien layanan. OTel metric.MeterProvider

Contoh berikut menunjukkan cara mengonfigurasi metrik untuk klien Amazon S3:

import ( "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/aws/smithy-go/metrics/smithyotelmetrics" "go.opentelemetry.io/otel/metric" ) // provider is an OTel metric.MeterProvider that you have configured. var provider metric.MeterProvider svc := s3.NewFromConfig(cfg, func(o *s3.Options) { o.MeterProvider = smithyotelmetrics.Adapt(provider) })

Metrik yang didukung

Klien SDK mengumpulkan metrik berikut:

Nama metrik Unit Tipe Deskripsi
client.call.duration detik Histogram Durasi panggilan keseluruhan termasuk percobaan ulang dan waktu untuk mengirim atau menerima permintaan dan badan respons.
client.call.attempts {mencoba} MonotonicCounter Jumlah upaya untuk operasi individu.
client.call.errors {kesalahan} MonotonicCounter Jumlah kesalahan untuk suatu operasi.
client.call.attempt_duration detik Histogram Waktu untuk terhubung ke layanan, mengirim permintaan, dan mendapatkan kembali kode status HTTP dan header (termasuk waktu antrian menunggu untuk dikirim).
client.call.resolve_endpoint_duration detik Histogram Waktu untuk menyelesaikan titik akhir (endpoint resolver, bukan DNS) untuk permintaan.
client.call.deserialization_duration detik Histogram Waktu untuk deserialisasi badan pesan.
client.call.auth.signing_duration detik Histogram Waktu untuk menandatangani permintaan.
client.call.auth.resolve_identity_duration detik Histogram Waktu untuk memperoleh identitas (AWS kredensyal, token pembawa, dll.) Dari penyedia identitas.

Atribut (dimensi) berikut disertakan dengan setiap metrik jika berlaku:

  • rpc.service- Nama layanan.

  • rpc.methodNama operasi.

  • exception.type— Jenis kesalahan (disertakan denganclient.call.errors).

  • auth.scheme_id— Skema otentikasi (disertakan dengan metrik terkait auth-related).

Metrik klien HTTP

Klien HTTP SDK mengumpulkan metrik tambahan berikut yang terkait dengan siklus hidup koneksi HTTP yang mendasarinya:

Nama metrik Unit Tipe Deskripsi
client.http.connections.acquire_duration detik Histogram Waktu yang dibutuhkan permintaan untuk mendapatkan koneksi.
client.http.connections.dns_lookup_duration detik Histogram Waktu yang dibutuhkan untuk melakukan pencarian DNS.
client.http.connections.tls_handshake_duration detik Histogram Waktu yang dibutuhkan untuk melakukan jabat tangan TLS.
client.http.connections.usage {koneksi} UpDownCounter Keadaan koneksi saat ini di kolam renang. Menggunakan state dimensi dengan nilai idle atauacquired.
client.http.do_request_duration detik Histogram Total waktu yang dihabiskan untuk melakukan permintaan HTTP.
client.http.time_to_first_byte detik Histogram Waktu dari mengirim permintaan untuk menerima byte respons pertama.