View a markdown version of this page

Traços e métricas - AWS SDK para Go v2

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

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— Ponto de entrada para criar rastreadores e registrar extensões de rastreamento do cliente.

  • 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 emsmithy-go. O SDK fornece módulos adaptadores para conectar implementações concretas do OTel SDK às interfaces do provedor do SDK.

Rastreamento

Use o módulo adaptador 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

Use o módulo adaptador 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

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 {attempt} MonotonicCounter O número de tentativas de uma operação individual.
client.call.errors {error} MonotonicCounter O número de erros de uma operação.
client.call.attempt_duration 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_endpoint_duration s Histograma A hora de resolver um endpoint (resolvedor de endpoint, não DNS) para a solicitação.
client.call.deserialization_duration s Histograma A hora de desserializar o corpo da mensagem.
client.call.auth.signing_duration s Histograma A hora de assinar uma solicitação.
client.call.auth.resolve_identity_duration 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 comclient.call.errors).

  • auth.scheme_id— O esquema de autenticação (incluído nas métricas relacionadas à autenticação).

Métricas do cliente HTTP

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_duration s Histograma O tempo necessário para que uma solicitação adquira uma conexão.
client.http.connections.dns_lookup_duration s Histograma O tempo necessário para realizar uma pesquisa de DNS.
client.http.connections.tls_handshake_duration s Histograma O tempo necessário para realizar um handshake TLS.
client.http.connections.usage {conexão} UpDownCounter O estado atual das conexões no pool. Usa uma state dimensão com um valor de idle ouacquired.
client.http.do_request_duration s Histograma O tempo total gasto executando a solicitação HTTP.
client.http.time_to_first_byte s Histograma O tempo desde o envio da solicitação até o recebimento do primeiro byte de resposta.