View a markdown version of this page

추적 및 지표 - AWS SDK for Go v2

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

추적 및 지표

AWS SDK for Go 는 SDK 작업에 대한 추적 범위 및 클라이언트 측 지표를 기록하기 위해 계측됩니다. 기본적으로 클라이언트는 추적 및 지표 모두에 대해 no-op 구현을 사용합니다. 즉, 공급자를 구성하지 않는 한 데이터가 수집되지 않습니다.

서비스 클라이언트에는 관찰성을 위한 두 가지 구성 옵션이 있습니다.

  • TracerProvider - 추적기를 생성하고 클라이언트 추적 범위를 기록하기 위한 진입점입니다.

  • MeterProvider - 미터를 생성하고 클라이언트 측 지표를 기록하기 위한 진입점입니다.

OpenTelemetry(OTel) 사양에서 영감을 받았지만 이러한 APIs는에서 독립적으로 정의됩니다smithy-go. SDK는 구체적인 OTel SDK 구현을 SDK의 공급자 인터페이스에 연결하는 어댑터 모듈을 제공합니다.

추적

smithyoteltracing 어댑터 모듈을 사용하여 OTel을 서비스 클라이언트trace.TracerProvider에 연결합니다.

다음 예제에서는 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) })

SDK 작업은 요청 직렬화, 서명 및 재시도 루프와 같은 작업 수명 주기의 상위 수준 구성 요소를 포함하는 스팬 계층 구조로 계측됩니다.

Metrics

smithyotelmetrics 어댑터 모듈을 사용하여 OTel을 서비스 클라이언트metric.MeterProvider에 연결합니다.

다음 예제에서는 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) })

지원되는 지표

SDK 클라이언트는 다음 지표를 수집합니다.

지표 이름 단위 Type 설명
client.call.duration s 히스토그램(Histogram) 재시도, 요청 및 응답 본문을 보내거나 받는 데 걸리는 시간을 포함한 전체 통화 기간입니다.
client.call.attempts {attempt} MonotonicCounter 개별 작업에 대한 시도 횟수입니다.
client.call.errors {error} MonotonicCounter 작업의 오류 수입니다.
client.call.attempt_duration s 히스토그램(Histogram) 서비스에 연결하고, 요청을 보내고, HTTP 상태 코드와 헤더(전송 대기 시간 포함)를 다시 가져오는 시간입니다.
client.call.resolve_endpoint_duration s 히스토그램(Histogram) 요청에 대한 엔드포인트(DNS가 아닌 엔드포인트 해석기)를 해결하는 시간입니다.
client.call.deserialization_duration s 히스토그램(Histogram) 메시지 본문을 역직렬화하는 시간입니다.
client.call.auth.signing_duration s 히스토그램(Histogram) 요청에 서명하는 시간입니다.
client.call.auth.resolve_identity_duration s 히스토그램(Histogram) 자격 증명 공급자로부터 자격 증명(AWS 자격 증명, 보유자 토큰 등)을 획득하는 시간입니다.

해당하는 경우 다음 속성(차원)이 각 지표에 포함됩니다.

  • rpc.service - 서비스 이름입니다.

  • rpc.method - 작업 이름입니다.

  • exception.type - 오류 유형(에 포함됨client.call.errors).

  • auth.scheme_id - 인증 체계(인증 관련 지표에 포함됨).

HTTP 클라이언트 지표

SDK의 HTTP 클라이언트는 기본 HTTP 연결 수명 주기와 관련된 다음과 같은 추가 지표를 수집합니다.

지표 이름 단위 Type 설명
client.http.connections.acquire_duration s 히스토그램(Histogram) 요청을 통해 연결을 획득하는 데 걸리는 시간입니다.
client.http.connections.dns_lookup_duration s 히스토그램(Histogram) DNS 조회를 수행하는 데 걸리는 시간입니다.
client.http.connections.tls_handshake_duration s 히스토그램(Histogram) TLS 핸드셰이크를 수행하는 데 걸리는 시간입니다.
client.http.connections.usage {연결} UpDownCounter 풀의 현재 연결 상태입니다. 값이 idle 또는 인 state차원을 사용합니다acquired.
client.http.do_request_duration s 히스토그램(Histogram) HTTP 요청을 수행하는 데 소요된 총 시간입니다.
client.http.time_to_first_byte s 히스토그램(Histogram) 요청 전송부터 첫 번째 응답 바이트 수신까지의 시간입니다.