

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
<a name="configure-observability"></a>

 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](https://pkg.go.dev/github.com/aws/smithy-go/tracing#TracerProvider)— Einstiegspunkt für die Erstellung von Tracern und die Aufzeichnung von Client-Trace-Spans. 
+  [MeterProvider](https://pkg.go.dev/github.com/aws/smithy-go/metrics#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
<a name="configure-tracing"></a>

 Verwenden Sie das [Smithyoteltracing-Adaptermodul](https://pkg.go.dev/github.com/aws/smithy-go/tracing/smithyoteltracing), 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
<a name="configure-metrics"></a>

 Verwenden Sie das [Smithyotelmetrics-Adaptermodul](https://pkg.go.dev/github.com/aws/smithy-go/metrics/smithyotelmetrics), 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
<a name="supported-metrics"></a>

 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 | \$1Versuch\$1 | MonotonicCounter | Die Anzahl der Versuche für einen einzelnen Vorgang. | 
| client.call.errors | \$1Fehler\$1 | MonotonicCounter | Die Anzahl der Fehler bei einem Vorgang. | 
| client.call.attempt\$1duration | 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\$1endpoint\$1duration | S | Histogramm | Die Zeit, bis ein Endpunkt (Endpunktresolver, nicht DNS) für die Anfrage aufgelöst werden muss. | 
| client.call.deserialization\$1duration | S | Histogramm | Die Zeit, um einen Nachrichtentext zu deserialisieren. | 
| client.call.auth.signing\$1duration | S | Histogramm | Die Zeit, um eine Anfrage zu signieren. | 
| client.call.auth.resolve\$1identity\$1duration | 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 in`client.call.errors`).
+ `auth.scheme_id`— Das Authentifizierungsschema (in authentifizierungsbezogenen Metriken enthalten).

### HTTP-Client-Metriken
<a name="http-client-metrics"></a>

 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\$1duration | S | Histogramm | Die Zeit, die eine Anfrage benötigt, um eine Verbindung herzustellen. | 
| client.http.connections.dns\$1lookup\$1duration | S | Histogramm | Die Zeit, die für die Durchführung einer DNS-Suche benötigt wird. | 
| client.http.connections.tls\$1handshake\$1duration | S | Histogramm | Die Zeit, die für die Durchführung eines TLS-Handshakes benötigt wird. | 
| client.http.connections.usage | \$1Verbindung\$1 | UpDownCounter | Der aktuelle Status der Verbindungen im Pool. Verwendet eine state Dimension mit dem Wert idle oderacquired. | 
| client.http.do\$1request\$1duration | S | Histogramm | Die Gesamtzeit, die für die Ausführung der HTTP-Anfrage aufgewendet wurde. | 
| client.http.time\$1to\$1first\$1byte | S | Histogramm | Die Zeit vom Senden der Anfrage bis zum Empfang des ersten Antwortbytes. | 