기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
추적 및 지표
AWS SDK for Go 는 SDK 작업에 대한 추적 범위 및 클라이언트 측 지표를 기록하기 위해 계측됩니다. 기본적으로 클라이언트는 추적 및 지표 모두에 대해 no-op 구현을 사용합니다. 즉, 공급자를 구성하지 않는 한 데이터가 수집되지 않습니다.
서비스 클라이언트에는 관찰성을 위한 두 가지 구성 옵션이 있습니다.
-
TracerProvider
- 추적기를 생성하고 클라이언트 추적 범위를 기록하기 위한 진입점입니다. -
MeterProvider
- 미터를 생성하고 클라이언트 측 지표를 기록하기 위한 진입점입니다.
OpenTelemetry(OTel) 사양에서 영감을 받았지만 이러한 APIs는에서 독립적으로 정의됩니다smithy-go. SDK는 구체적인 OTel SDK 구현을 SDK의 공급자 인터페이스에 연결하는 어댑터 모듈을 제공합니다.
추적
smithyoteltracingtrace.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
smithyotelmetricsmetric.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) | 요청 전송부터 첫 번째 응답 바이트 수신까지의 시간입니다. |