

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# トレースとメトリクス
<a name="configure-observability"></a>

 AWS SDK for Go は、SDK オペレーションのトレーススパンとクライアント側のメトリクスを記録するように計測されます。デフォルトでは、クライアントはトレースとメトリクスの両方に no-op 実装を使用します。つまり、プロバイダーを設定しない限り、データは収集されません。

 サービスクライアントには、オブザーバビリティのための 2 つの設定オプションがあります。
+  [TracerProvider](https://pkg.go.dev/github.com/aws/smithy-go/tracing#TracerProvider) – トレーサーを作成し、クライアントトレーススパンを記録するためのエントリポイント。
+  [MeterProvider](https://pkg.go.dev/github.com/aws/smithy-go/metrics#MeterProvider) – メーターを作成し、クライアント側のメトリクスを記録するためのエントリポイント。

 OpenTelemetry (OTel) 仕様に着想を得ながら、これらの APIsは で個別に定義されています`smithy-go`。SDK には、具体的な OTel SDK 実装を SDK のプロバイダーインターフェイスに接続するためのアダプターモジュールが用意されています。

## トレース
<a name="configure-tracing"></a>

 [Smithyoteltracing](https://pkg.go.dev/github.com/aws/smithy-go/tracing/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 オペレーションは、リクエストのシリアル化、署名、再試行ループなど、オペレーションライフサイクルの高レベルのコンポーネントをカバーするスパン階層で計測されます。

## メトリクス
<a name="configure-metrics"></a>

 [Smithyotelmetrics](https://pkg.go.dev/github.com/aws/smithy-go/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)
})
```

### サポートされるメトリクス
<a name="supported-metrics"></a>

 SDK クライアントは、次のメトリクスを収集します。


| メトリクス名 | Unit | 型 | 説明 | 
| --- | --- | --- | --- | 
| client.call.duration | s | ヒストグラム | 再試行、リクエストとレスポンス本文の送受信時間を含む全体的な通話時間。 | 
| client.call.attempts | \$1attempt\$1 | MonotonicCounter | 個々のオペレーションの試行回数。 | 
| client.call.errors | \$1error\$1 | MonotonicCounter | オペレーションのエラーの数。 | 
| client.call.attempt\$1duration | s | ヒストグラム | サービスに接続してリクエストを送信し、HTTP ステータスコードとヘッダーを返す時間 (キューに入れられた送信待機時間を含む）。 | 
| client.call.resolve\$1endpoint\$1duration | s | ヒストグラム | リクエストのエンドポイント (DNS ではなくエンドポイントリゾルバー) を解決する時間。 | 
| client.call.deserialization\$1duration | s | ヒストグラム | メッセージ本文を逆シリアル化する時間。 | 
| client.call.auth.signing\$1duration | s | ヒストグラム | リクエストに署名する時間。 | 
| client.call.auth.resolve\$1identity\$1duration | s | ヒストグラム | ID プロバイダーから ID (AWS 認証情報、ベアラートークンなど) を取得する時間。 | 

 該当する場合は、各メトリクスに次の属性 (ディメンション) が含まれます。
+ `rpc.service` – サービス名。
+ `rpc.method` – オペレーション名。
+ `exception.type` – エラータイプ ( に付属`client.call.errors`)。
+ `auth.scheme_id` – 認証スキーム (認証関連のメトリクスに付属）。

### HTTP クライアントメトリクス
<a name="http-client-metrics"></a>

 SDK の HTTP クライアントは、基盤となる HTTP 接続ライフサイクルに関連する以下の追加のメトリクスを収集します。


| メトリクス名 | Unit | 型 | 説明 | 
| --- | --- | --- | --- | 
| client.http.connections.acquire\$1duration | s | ヒストグラム | 接続の取得リクエストにかかる時間。 | 
| client.http.connections.dns\$1lookup\$1duration | s | ヒストグラム | DNS ルックアップの実行にかかる時間。 | 
| client.http.connections.tls\$1handshake\$1duration | s | ヒストグラム | TLS ハンドシェイクの実行にかかる時間。 | 
| client.http.connections.usage | \$1接続\$1 | UpDownCounter | プール内の接続の現在の状態。idle または の値を持つstateディメンションを使用しますacquired。 | 
| client.http.do\$1request\$1duration | s | ヒストグラム | HTTP リクエストの実行にかかった合計時間。 | 
| client.http.time\$1to\$1first\$1byte | s | ヒストグラム | リクエストの送信から最初のレスポンスバイトの受信までの時間。 | 