

Der AWS SDK für .NET V3 ist in den Wartungsmodus übergegangen.

Wir empfehlen Ihnen, auf [AWS SDK für .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html) zu migrieren. Weitere Einzelheiten und Informationen zur Migration finden Sie in unserer [Ankündigung zum Wartungsmodus](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/).

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.

# Beobachtbarkeit
<a name="observability"></a>

Beobachtbarkeit ist das Ausmaß, in dem der aktuelle Zustand eines Systems aus den ausgegebenen Daten abgeleitet werden kann. Die ausgestrahlten Daten werden allgemein als Telemetrie bezeichnet.

 AWS SDK für .NET Sie können zwei gängige Telemetriesignale, Metriken und Traces, sowie Protokollierung bereitstellen. Sie können eine Verbindung herstellen [TelemetryProvider](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TTelemetryProvider.html), um Telemetriedaten an ein Observability-Backend (z. B. [AWS X-Ray](https://docs.aws.amazon.com/xray/?icmpid=docs_homepage_devtools)oder [Amazon CloudWatch](https://docs.aws.amazon.com/cloudwatch/?icmpid=docs_homepage_mgmtgov)) zu senden und dann darauf zu reagieren.

Standardmäßig sind Telemetriesignale im SDK deaktiviert. In diesem Thema wird erklärt, wie die Telemetrieausgabe aktiviert und konfiguriert wird.

## Weitere Ressourcen
<a name="observability-resources"></a>

Weitere Informationen zur Aktivierung und Verwendung von Observability finden Sie in den folgenden Ressourcen:
+ [OpenTelemetry](https://opentelemetry.io/)
+ Der Blogbeitrag [Enhancing Observability in the AWS SDK für .NET with](https://aws.amazon.com/blogs/developer/enhancing-observability-in-the-aws-sdk-for-net-with-opentelemetry/). OpenTelemetry
+ Der Blogbeitrag [Ankündigung der allgemeinen Verfügbarkeit AWS OpenTelemetry von.NET-Bibliotheken](https://aws.amazon.com/blogs/dotnet/announcing-the-general-availability-of-aws-net-opentelemetry-libraries/).
+ [Exporteure für OpenTelemetry](https://opentelemetry.io/docs/languages/net/exporters/)
+ Beispiele für Observability in finden Sie unter [Observability](https://docs.aws.amazon.com/powershell/latest/userguide/observability.html) im [Tools for PowerShell ](https://docs.aws.amazon.com/powershell/latest/userguide/) User Guide. AWS -Tools für PowerShell

## Konfigurieren Sie ein `TelemetryProvider`
<a name="observability-conf-telemetry-provider"></a>

Sie können a `TelemetryProvider` in Ihrer Anwendung global für alle Service-Clients oder für einzelne Clients konfigurieren, wie in den folgenden Beispielen gezeigt. Der [Telemetrieanbieter](observability-telemetry-providers.md) Abschnitt enthält Informationen zu Telemetrie-Implementierungen, einschließlich Informationen zu Implementierungen, die mit dem SDK bereitgestellt werden.

### Konfigurieren Sie den globalen Standardtelemetrie-Anbieter
<a name="observability-conf-telemetry-provider-global"></a>

Standardmäßig versucht jeder Dienstclient, den weltweit verfügbaren Telemetrieanbieter zu verwenden. Auf diese Weise können Sie den Anbieter einmal festlegen, und alle Clients verwenden ihn. Dies sollte nur einmal durchgeführt werden, bevor Sie Service-Clients erstellen.

Der folgende Codeausschnitt zeigt Ihnen, wie Sie den globalen Telemetrieanbieter einrichten. Anschließend wird ein Amazon S3 S3-Serviceclient erstellt und versucht, einen fehlgeschlagenen Vorgang auszuführen. Der Code fügt der Anwendung sowohl Tracing als auch Metriken hinzu. Dieser Code verwendet die folgenden NuGet Pakete: `OpenTelemetry.Exporter.Console` und`OpenTelemetry.Instrumentation.AWS`.

**Anmerkung**  
Wenn Sie AWS IAM Identity Center für die Authentifizierung verwenden, achten Sie darauf, auch `AWSSDK.SSO` und hinzuzufügen`AWSSDK.SSOOIDC`.

```
using Amazon.S3;
using OpenTelemetry;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;

Sdk.CreateTracerProviderBuilder()
    .ConfigureResource(e => e.AddService("DemoOtel"))
    .AddAWSInstrumentation()
    .AddConsoleExporter()
    .Build();

Sdk.CreateMeterProviderBuilder()
    .ConfigureResource(e => e.AddService("DemoOtel"))
    .AddAWSInstrumentation()
    .AddConsoleExporter()
    .Build();

var s3Client = new AmazonS3Client();

try
{
    var listBucketsResponse = await s3Client.ListBucketsAsync();
    // Attempt to delete a bucket that doesn't exist.
    var deleteBucketResponse = await s3Client.DeleteBucketAsync("amzn-s3-demo-bucket");
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

Console.Read();
```

### Konfigurieren Sie einen Telemetrieanbieter für einen bestimmten Service-Client
<a name="observability-conf-telemetry-provider-client"></a>

Sie können einen einzelnen Dienstclient mit einem bestimmten Telemetrieanbieter (mit Ausnahme des globalen) konfigurieren. Verwenden Sie dazu die `TelemetryProvider` Klasse des Config-Objekts eines Service-Client-Konstruktors. Sehen Sie sich zum Beispiel [AmazonS3Config](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Config.html) an und suchen Sie nach der Eigenschaft. `TelemetryProvider` Informationen zu benutzerdefinierten [Telemetrieanbieter](observability-telemetry-providers.md) Telemetrie-Implementierungen finden Sie unter.

**Topics**
+ [Weitere Ressourcen](#observability-resources)
+ [Konfigurieren Sie ein `TelemetryProvider`](#observability-conf-telemetry-provider)
+ [Metriken](observability-metrics.md)
+ [Telemetrieanbieter](observability-telemetry-providers.md)

# Metriken
<a name="observability-metrics"></a>

In der folgenden Tabelle sind die Telemetriemetriken aufgeführt, die das SDK ausgibt. [Konfigurieren Sie einen Telemetrieanbieter, um die Messwerte](observability.md#observability-conf-telemetry-provider) beobachtbar zu machen.


**Welche Metriken werden ausgegeben?**  

| Metrikname | Einheiten | Typ | Attribute | Beschreibung | 
| --- | --- | --- | --- | --- | 
| client.call.duration | S | Histogramm | rpc.service, rpc.method | Gesamtdauer des Anrufs (einschließlich Wiederholungsversuche und Zeit zum Senden oder Empfangen von Anfrage und Antworttext) | 
| client.uptime | S | Histogramm | rpc.service | Die Zeit, seit ein Client erstellt wurde | 
| client.call.attempts | \$1Versuch\$1 | MonotonicCounter | rpc.service, rpc.method | Die Anzahl der Versuche für einen einzelnen Vorgang | 
| client.call.errors | \$1Fehler\$1 | MonotonicCounter | rpc.service, rpc.method, exception.type | Die Anzahl der Fehler bei einem Vorgang | 
| client.call.attempt t\$1duration | S | Histogramm | rpc.service, rpc.method | Die Zeit, die benötigt wird, um eine Verbindung mit dem Dienst herzustellen, die Anfrage zu senden und den HTTP-Statuscode und die Header zurückzubekommen (einschließlich der Wartezeit in der Warteschlange auf das Senden) | 
| client.call.resolve\$1endpoint\$1duration | S | Histogramm | rpc.service, rpc.method | Die Zeit, die benötigt wird, um einen Endpunkt (Endpoint Resolver, nicht DNS) für die Anfrage aufzulösen | 
| client.call.serialization\$1duration | S | Histogramm | rpc.service, rpc.method | Die Zeit, die benötigt wird, um einen Nachrichtentext zu serialisieren | 
| client.call.deserialization\$1duration | S | Histogramm | rpc.service, rpc.method | Die Zeit, die benötigt wird, um einen Nachrichtentext zu deserialisieren | 
| client.call.auth.signing\$1duration | S | Histogramm | rpc.service, rpc.method | Die Zeit, die benötigt wird, um eine Anfrage zu signieren | 
| client.call.auth.resolve\$1identity\$1duration | S | Histogramm | rpc.service, rpc.method | Die Zeit, die benötigt wird, um eine Identität (wie AWS Anmeldeinformationen oder ein Inhabertoken) von einem Identitätsanbieter abzurufen | 
| client.http.bytes\$1sent | Von | MonotonicCounter | server.adresse | Die Gesamtzahl der vom HTTP-Client gesendeten Byte | 
| client.http.bytes\$1received | Von | MonotonicCounter | server.adresse | Die Gesamtzahl der vom HTTP-Client empfangenen Byte | 

Im Folgenden finden Sie die Spaltenbeschreibungen:
+ **Metrikname** — Der Name der ausgegebenen Metrik.
+ **Einheiten** — Die Maßeinheit für die Metrik. Die Einheiten werden in der [UCUM-Notation](https://unitsofmeasure.org/ucum) mit Berücksichtigung der Groß- und Kleinschreibung („c/s“) angegeben.
+ **Typ** — Die Art des Instruments, das zur Erfassung der Metrik verwendet wird.
+ **Attribute** — Der Satz von Attributen (Dimensionen), die mit der Metrik ausgegeben werden.
+ **Beschreibung** — Eine Beschreibung dessen, was die Metrik misst.

# Telemetrieanbieter
<a name="observability-telemetry-providers"></a>

Das SDK bietet eine Implementierung von [OpenTelemetry](https://opentelemetry.io/)als Telemetrieanbieter, die im [nächsten](observability-telemetry-providers-otel.md) Abschnitt beschrieben wird.

Wenn Sie spezielle Telemetrieanforderungen haben, bereits eine Telemetrielösung im Sinn haben oder eine genaue Kontrolle darüber benötigen, wie Telemetriedaten erfasst und verarbeitet werden, können Sie auch Ihren eigenen Telemetrieanbieter implementieren.

Registrieren Sie Ihre eigene Implementierung bei der Klasse. [TelemetryProvider](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TTelemetryProvider.html) Das Folgende ist ein einfaches Beispiel dafür, wie Sie Ihr eigenes `TracerProvider` und registrieren können`MeterProvider`.

```
using Amazon;
using Amazon.Runtime.Telemetry;
using Amazon.Runtime.Telemetry.Metrics;
using Amazon.Runtime.Telemetry.Tracing;

public class CustomTracerProvider : TracerProvider
{
    // Implement custom tracing logic here
}
public class CustomMeterProvider : MeterProvider
{
    // Implement custom metrics logic here
}

// Register custom implementations
AWSConfigs.TelemetryProvider.RegisterTracerProvider(new CustomTracerProvider());
AWSConfigs.TelemetryProvider.RegisterMeterProvider(new CustomMeterProvider());
```

**Topics**
+ [OpenTelemetry](observability-telemetry-providers-otel.md)

# Konfigurieren Sie den OpenTelemetry basierten Telemetrieanbieter
<a name="observability-telemetry-providers-otel"></a>

Das AWS SDK für .NET beinhaltet eine Implementierung eines OpenTelemetry basierten Telemetrieanbieters. Einzelheiten dazu, wie Sie diesen Anbieter als globalen Telemetrieanbieter einrichten, finden Sie unter. [Konfigurieren Sie ein `TelemetryProvider`](observability.md#observability-conf-telemetry-provider) Um diesen Telemetrieanbieter verwenden zu können, benötigen Sie die folgenden Ressourcen in Ihrem Projekt:
+ Das [OpenTelemetry.instrumentation.aws-Paket](https://www.nuget.org/packages/OpenTelemetry.Instrumentation.AWS) NuGet .
+ Ein Telemetrieexporteur wie OTLP oder Console. Weitere Informationen finden Sie in der Dokumentation unter [Exporter.](https://opentelemetry.io/docs/languages/net/exporters/) OpenTelemetry

Die im SDK enthaltene OpenTelemetry Implementierung kann so konfiguriert werden, dass weniger Ablaufverfolgung für HTTPS-Anfragen, Anmeldeinformationen und Komprimierung erforderlich ist. Stellen Sie dazu die `SuppressDownstreamInstrumentation` Option auf ein`true`, ähnlich wie im Folgenden:

```
Sdk.CreateTracerProviderBuilder()
    .ConfigureResource(e => e.AddService("DemoOtel"))
    .AddAWSInstrumentation(options => options.SuppressDownstreamInstrumentation = true)
    .AddConsoleExporter()
    .Build();
```

Weitere Informationen zu diesem Anbieter finden Sie im Blogbeitrag [Enhancing Observability in the AWS SDK für .NET with OpenTelemetry](https://aws.amazon.com/blogs/developer/enhancing-observability-in-the-aws-sdk-for-net-with-opentelemetry/).