

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Traços e métricas
<a name="configure-observability"></a>

 AWS SDK para Go É instrumentado para registrar extensões de rastreamento e métricas do lado do cliente para operações do SDK. Por padrão, os clientes usam implementações autônomas para rastreamento e métricas, o que significa que nenhum dado é coletado, a menos que você configure um provedor. 

 Os clientes de serviço têm duas opções de configuração para observabilidade: 
+  [TracerProvider](https://pkg.go.dev/github.com/aws/smithy-go/tracing#TracerProvider)— Ponto de entrada para criar rastreadores e registrar extensões de rastreamento do cliente. 
+  [MeterProvider](https://pkg.go.dev/github.com/aws/smithy-go/metrics#MeterProvider)— Ponto de entrada para criar medidores e registrar métricas do lado do cliente. 

 Embora inspiradas nas especificações OpenTelemetry (OTel), elas APIs são definidas de forma independente em`smithy-go`. O SDK fornece módulos adaptadores para conectar implementações concretas do OTel SDK às interfaces do provedor do SDK. 

## Rastreamento
<a name="configure-tracing"></a>

 Use o módulo adaptador [smithyoteltracing](https://pkg.go.dev/github.com/aws/smithy-go/tracing/smithyoteltracing) para conectar e a um cliente de serviço. OTel `trace.TracerProvider` 

 O exemplo a seguir mostra como configurar o rastreamento para um cliente 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)
})
```

 As operações do SDK são instrumentadas com uma hierarquia de abrangência que abrange os componentes de alto nível do ciclo de vida da operação, como serialização de solicitações, assinatura e o ciclo de repetição. 

## Metrics
<a name="configure-metrics"></a>

 Use o módulo adaptador [smithyotelmetrics](https://pkg.go.dev/github.com/aws/smithy-go/metrics/smithyotelmetrics) para conectar e a um OTel `metric.MeterProvider` cliente de serviço. 

 O exemplo a seguir mostra como configurar métricas para um cliente 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)
})
```

### Métricas compatíveis
<a name="supported-metrics"></a>

 Os clientes do SDK coletam as seguintes métricas: 


| Nome da métrica | Unidade | Tipo | Description | 
| --- | --- | --- | --- | 
| client.call.duration | s | Histograma | Duração geral da chamada, incluindo novas tentativas e tempo para enviar ou receber a solicitação e o corpo da resposta. | 
| client.call.attempts | \$1attempt\$1 | MonotonicCounter | O número de tentativas de uma operação individual. | 
| client.call.errors | \$1error\$1 | MonotonicCounter | O número de erros de uma operação. | 
| client.call.attempt\$1duration | s | Histograma | O tempo para se conectar ao serviço, enviar a solicitação e recuperar o código de status e os cabeçalhos HTTP (incluindo o tempo na fila de espera para ser enviado). | 
| client.call.resolve\$1endpoint\$1duration | s | Histograma | A hora de resolver um endpoint (resolvedor de endpoint, não DNS) para a solicitação. | 
| client.call.deserialization\$1duration | s | Histograma | A hora de desserializar o corpo da mensagem. | 
| client.call.auth.signing\$1duration | s | Histograma | A hora de assinar uma solicitação. | 
| client.call.auth.resolve\$1identity\$1duration | s | Histograma | O momento de adquirir uma identidade (AWS credenciais, token do portador etc.) de um provedor de identidade. | 

 Os seguintes atributos (dimensões) estão incluídos em cada métrica, quando aplicável: 
+ `rpc.service`— O nome do serviço.
+ `rpc.method`— O nome da operação.
+ `exception.type`— O tipo de erro (incluído com`client.call.errors`).
+ `auth.scheme_id`— O esquema de autenticação (incluído nas métricas relacionadas à autenticação).

### Métricas do cliente HTTP
<a name="http-client-metrics"></a>

 O cliente HTTP do SDK coleta as seguintes métricas adicionais relacionadas ao ciclo de vida da conexão HTTP subjacente: 


| Nome da métrica | Unidade | Tipo | Description | 
| --- | --- | --- | --- | 
| client.http.connections.acquire\$1duration | s | Histograma | O tempo necessário para que uma solicitação adquira uma conexão. | 
| client.http.connections.dns\$1lookup\$1duration | s | Histograma | O tempo necessário para realizar uma pesquisa de DNS. | 
| client.http.connections.tls\$1handshake\$1duration | s | Histograma | O tempo necessário para realizar um handshake TLS. | 
| client.http.connections.usage | \$1conexão\$1 | UpDownCounter | O estado atual das conexões no pool. Usa uma state dimensão com um valor de idle ouacquired. | 
| client.http.do\$1request\$1duration | s | Histograma | O tempo total gasto executando a solicitação HTTP. | 
| client.http.time\$1to\$1first\$1byte | s | Histograma | O tempo desde o envio da solicitação até o recebimento do primeiro byte de resposta. | 