

È stata rilasciata la versione 4 (V4) di\$1 AWS SDK per .NET 

Per informazioni su come apportare modifiche e migrare le applicazioni, consulta l'argomento sulla [migrazione](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html).

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Osservabilità
<a name="observability"></a>

L'osservabilità è la misura in cui lo stato attuale di un sistema può essere dedotto dai dati che emette. I dati emessi vengono comunemente definiti telemetria.

 AWS SDK per .NET Può fornire due segnali di telemetria comuni, metriche e tracce, oltre alla registrazione. Puoi collegare un [TelemetryProvider](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TTelemetryProvider.html)per inviare dati di telemetria a un backend di osservabilità (come o [AWS X-Ray](https://docs.aws.amazon.com/xray/?icmpid=docs_homepage_devtools)[Amazon CloudWatch](https://docs.aws.amazon.com/cloudwatch/?icmpid=docs_homepage_mgmtgov)) e quindi agire di conseguenza.

Per impostazione predefinita, i segnali di telemetria sono disabilitati nell'SDK. Questo argomento spiega come abilitare e configurare l'output di telemetria.

## Risorse aggiuntive
<a name="observability-resources"></a>

Per ulteriori informazioni sull'abilitazione e l'utilizzo dell'osservabilità, consulta le seguenti risorse:
+ [OpenTelemetry](https://opentelemetry.io/)
+ Il post sul blog [Enhancing Observability in the AWS SDK per .NET with](https://aws.amazon.com/blogs/developer/enhancing-observability-in-the-aws-sdk-for-net-with-opentelemetry/). OpenTelemetry
+ Il post sul blog [che annuncia la disponibilità generale delle AWS librerie.NET OpenTelemetry ](https://aws.amazon.com/blogs/dotnet/announcing-the-general-availability-of-aws-net-opentelemetry-libraries/).
+ [Esportatori per OpenTelemetry](https://opentelemetry.io/docs/languages/net/exporters/)
+ Per esempi di osservabilità in AWS Strumenti per PowerShell, vedere [Observability](https://docs.aws.amazon.com/powershell/latest/userguide/observability.html) nella [Tools for PowerShell ](https://docs.aws.amazon.com/powershell/latest/userguide/) User Guide.

## Configura un `TelemetryProvider`
<a name="observability-conf-telemetry-provider"></a>

È possibile configurare un `TelemetryProvider` nella propria applicazione a livello globale per tutti i client di servizio o per singoli client, come illustrato negli esempi seguenti. La [Provider di telemetria](observability-telemetry-providers.md) sezione contiene informazioni sulle implementazioni di telemetria, incluse informazioni sulle implementazioni fornite con l'SDK.

### Configura il provider di telemetria globale predefinito
<a name="observability-conf-telemetry-provider-global"></a>

Per impostazione predefinita, ogni client di servizio tenta di utilizzare il provider di telemetria disponibile a livello globale. In questo modo, puoi impostare il provider una sola volta e tutti i client lo useranno. Questa operazione deve essere eseguita una sola volta, prima di creare qualsiasi client di servizio.

Il seguente frammento di codice mostra come impostare il provider di telemetria globale. Quindi crea un client di servizio Amazon S3 e tenta di eseguire un'operazione che non riesce. Il codice aggiunge tracciamento e metriche all'applicazione. Questo codice utilizza i seguenti NuGet pacchetti: `OpenTelemetry.Exporter.Console` e. `OpenTelemetry.Instrumentation.AWS`

**Nota**  
Se lo utilizzi AWS IAM Identity Center per l'autenticazione, assicurati di aggiungere anche `AWSSDK.SSO` e`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();
```

### Configura un provider di telemetria per un client di servizio specifico
<a name="observability-conf-telemetry-provider-client"></a>

È possibile configurare un singolo client di servizio con un provider di telemetria specifico (diverso da quello globale). A tale scopo, utilizzate la `TelemetryProvider` classe dell'oggetto Config di un costruttore di client di servizi. Ad esempio, consulta [AmazonS3Config](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Config.html) e cerca la proprietà. `TelemetryProvider` [Provider di telemetria](observability-telemetry-providers.md)Per informazioni sulle implementazioni di telemetria personalizzate, consulta.

**Topics**
+ [

## Risorse aggiuntive
](#observability-resources)
+ [

## Configura un `TelemetryProvider`
](#observability-conf-telemetry-provider)
+ [

# Metriche
](observability-metrics.md)
+ [

# Provider di telemetria
](observability-telemetry-providers.md)

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

La tabella seguente elenca le metriche di telemetria emesse dall'SDK. [Configura un provider di telemetria](observability.md#observability-conf-telemetry-provider) per rendere le metriche osservabili.


**Quali metriche vengono emesse?**  

| Nome parametro | Unità | Tipo | Attributes | Descrizione | 
| --- | --- | --- | --- | --- | 
| client.call.duration | s | Istogramma | rpc.service, rpc.method | Durata complessiva della chiamata (compresi i tentativi e il tempo necessario per inviare o ricevere la richiesta e il testo della risposta) | 
| client.uptime | s | Istogramma | servizio rpc | Il periodo di tempo trascorso dalla creazione di un client | 
| client.call.attemps | \$1tentativo\$1 | MonotonicCounter | rpc.service, rpc.method | Il numero di tentativi per una singola operazione | 
| client.call.errors | \$1errore\$1 | MonotonicCounter | rpc.service, rpc.method, exception.type | Il numero di errori per un'operazione | 
| client.call.attempt\$1duration | s | Istogramma | rpc.service, rpc.method | Il tempo necessario per connettersi al servizio, inviare la richiesta e recuperare il codice di stato HTTP e le intestazioni (incluso il tempo in coda in attesa di invio) | 
| client.call.resolve\$1endpoint\$1duration | s | Istogramma | rpc.service, rpc.method | Il tempo necessario per risolvere un endpoint (endpoint resolver, non DNS) per la richiesta | 
| client.call.serialization\$1duration | s | Istogramma | rpc.service, rpc.method | Il tempo necessario per serializzare il corpo di un messaggio | 
| client.call.deserialization\$1duration | s | Istogramma | rpc.service, rpc.method | Il tempo necessario per deserializzare il corpo di un messaggio | 
| client.call.auth.signing\$1duration | s | Istogramma | rpc.service, rpc.method | Il tempo necessario per firmare una richiesta | 
| client.call.auth.resolve\$1identity\$1duration | s | Istogramma | rpc.service, rpc.method | Il tempo necessario per acquisire un'identità (ad esempio AWS credenziali o un bearer token) da un Identity Provider | 
| client.http.bytes\$1sent | Come | MonotonicCounter | indirizzo.server | Il numero totale di byte inviati dal client HTTP | 
| client.http.bytes\$1received | Come | MonotonicCounter | indirizzo.server | Il numero totale di byte ricevuti dal client HTTP | 

Di seguito sono riportate le descrizioni delle colonne:
+ **Nome della metrica**: il nome della metrica emessa.
+ **Unità**: l'unità di misura per la metrica. Le unità sono fornite nella notazione [UCUM](https://unitsofmeasure.org/ucum) con distinzione tra maiuscole e minuscole («c/s»).
+ **Tipo**: il tipo di strumento utilizzato per acquisire la metrica.
+ **Attributi**: l'insieme di attributi (dimensioni) emessi con la metrica.
+ **Descrizione**: una descrizione di ciò che viene misurato dalla metrica.

# Provider di telemetria
<a name="observability-telemetry-providers"></a>

[L'SDK fornisce un'implementazione [OpenTelemetry](https://opentelemetry.io/)come provider di telemetria, descritta nella sezione successiva.](observability-telemetry-providers-otel.md)

Se hai requisiti di telemetria specifici, hai già in mente una soluzione di telemetria o hai bisogno di un controllo approfondito sul modo in cui i dati di telemetria vengono acquisiti ed elaborati, puoi anche implementare il tuo provider di telemetria.

[TelemetryProvider](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TTelemetryProvider.html)Registra la tua implementazione con la classe. Quello che segue è un semplice esempio di come registrare il proprio `TracerProvider` e`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)

# Configurare il provider di telemetria OpenTelemetry basato
<a name="observability-telemetry-providers-otel"></a>

 AWS SDK per .NET Include l'implementazione di un provider di telemetria OpenTelemetry basato. Per informazioni dettagliate su come impostare questo provider come provider globale di telemetria, consulta. [Configura un `TelemetryProvider`](observability.md#observability-conf-telemetry-provider) Per utilizzare questo provider di telemetria, sono necessarie le seguenti risorse nel progetto:
+ [Il OpenTelemetry pacchetto .instrumentation.aws.](https://www.nuget.org/packages/OpenTelemetry.Instrumentation.AWS) NuGet 
+ Un esportatore di telemetria come OTLP o Console. [Per ulteriori informazioni, consulta Esportatori nella documentazione.](https://opentelemetry.io/docs/languages/net/exporters/) OpenTelemetry

L' OpenTelemetry implementazione inclusa nell'SDK può essere configurata per ridurre la quantità di tracciamento per richieste, credenziali e compressione HTTPS. A tale scopo, imposta l'`SuppressDownstreamInstrumentation`opzione su`true`, in modo simile alla seguente:

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

Per ulteriori informazioni su questo provider, consulta il post del blog [Enhancing Observability in the AWS SDK per .NET with OpenTelemetry](https://aws.amazon.com/blogs/developer/enhancing-observability-in-the-aws-sdk-for-net-with-opentelemetry/).