View a markdown version of this page

Spuren und Metriken - AWS SDK für Go v2

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Spuren und Metriken

Das AWS SDK für Go ist so konzipiert, dass es Trace-Spans und clientseitige Metriken für SDK-Operationen aufzeichnet. Standardmäßig verwenden Clients No-Op-Implementierungen sowohl für die Ablaufverfolgung als auch für die Metriken, was bedeutet, dass keine Daten gesammelt werden, es sei denn, Sie konfigurieren einen Anbieter.

Service-Clients haben zwei Konfigurationsoptionen für die Beobachtbarkeit:

  • TracerProvider— Einstiegspunkt für die Erstellung von Tracern und die Aufzeichnung von Client-Trace-Spans.

  • MeterProvider— Einstiegspunkt für die Erstellung von Zählern und die Aufzeichnung von kundenseitigen Metriken.

Diese APIs sind zwar von den Spezifikationen OpenTelemetry (OTel) inspiriert, werden aber unabhängig voneinander in definiert. smithy-go Das SDK bietet Adaptermodule, um konkrete OTel SDK-Implementierungen mit den Provider-Schnittstellen des SDK zu verbinden.

Nachverfolgung

Verwenden Sie das Smithyoteltracing-Adaptermodul, um eine Verbindung zu einem Service-Client herzustellen. OTel trace.TracerProvider

Das folgende Beispiel zeigt, wie die Ablaufverfolgung für einen Amazon S3 S3-Client konfiguriert wird:

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) })

SDK-Operationen sind mit einer übergeordneten Hierarchie ausgestattet, die die wichtigsten Komponenten des Vorgangslebenszyklus abdeckt, wie z. B. die Serialisierung von Anfragen, das Signieren und die Wiederholungsschleife.

Kennzahlen

Verwenden Sie das Smithyotelmetrics-Adaptermodul, um eine Verbindung zu einem Service-Client herzustellen. OTel metric.MeterProvider

Das folgende Beispiel zeigt, wie Metriken für einen Amazon S3 S3-Client konfiguriert werden:

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) })

Unterstützte Metriken

SDK-Clients sammeln die folgenden Metriken:

Metrikname Einheit Typ Description
client.call.duration S Histogramm Gesamtdauer des Anrufs, einschließlich Wiederholungsversuche und Zeit zum Senden oder Empfangen von Anfrage und Antworttext.
client.call.attempts {Versuch} MonotonicCounter Die Anzahl der Versuche für einen einzelnen Vorgang.
client.call.errors {Fehler} MonotonicCounter Die Anzahl der Fehler bei einem Vorgang.
client.call.attempt_duration S Histogramm Die Zeit, um eine Verbindung mit dem Dienst herzustellen, die Anfrage zu senden und den HTTP-Statuscode und die Header (einschließlich der Wartezeit in der Warteschlange auf das Senden) zurückzuholen.
client.call.resolve_endpoint_duration S Histogramm Die Zeit, bis ein Endpunkt (Endpunktresolver, nicht DNS) für die Anfrage aufgelöst werden muss.
client.call.deserialization_duration S Histogramm Die Zeit, um einen Nachrichtentext zu deserialisieren.
client.call.auth.signing_duration S Histogramm Die Zeit, um eine Anfrage zu signieren.
client.call.auth.resolve_identity_duration S Histogramm Die Zeit, um eine Identität (AWS Anmeldeinformationen, Inhaber-Token usw.) von einem Identitätsanbieter zu erwerben.

Die folgenden Attribute (Dimensionen) sind gegebenenfalls in jeder Metrik enthalten:

  • rpc.service— Der Dienstname.

  • rpc.method— Der Name der Operation.

  • exception.type— Der Fehlertyp (enthalten inclient.call.errors).

  • auth.scheme_id— Das Authentifizierungsschema (in authentifizierungsbezogenen Metriken enthalten).

HTTP-Client-Metriken

Der HTTP-Client des SDK sammelt die folgenden zusätzlichen Metriken, die sich auf den zugrunde liegenden HTTP-Verbindungslebenszyklus beziehen:

Metrikname Einheit Typ Description
client.http.connections.acquire_duration S Histogramm Die Zeit, die eine Anfrage benötigt, um eine Verbindung herzustellen.
client.http.connections.dns_lookup_duration S Histogramm Die Zeit, die für die Durchführung einer DNS-Suche benötigt wird.
client.http.connections.tls_handshake_duration S Histogramm Die Zeit, die für die Durchführung eines TLS-Handshakes benötigt wird.
client.http.connections.usage {Verbindung} UpDownCounter Der aktuelle Status der Verbindungen im Pool. Verwendet eine state Dimension mit dem Wert idle oderacquired.
client.http.do_request_duration S Histogramm Die Gesamtzeit, die für die Ausführung der HTTP-Anfrage aufgewendet wurde.
client.http.time_to_first_byte S Histogramm Die Zeit vom Senden der Anfrage bis zum Empfang des ersten Antwortbytes.