

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

# オブザーバビリティ
<a name="observability"></a>

オブザーバビリティとは、システムが出力するデータから、そのシステムの現在の状態をどの程度推測できるかという指標のことです。出力されるデータは、一般的にテレメトリと呼ばれます。

は、メトリクス、トレース、ログの 3 つの一般的なテレメトリシグナルをすべて提供 AWS SDK for Kotlin できます。をワイヤアップ[https://docs.aws.amazon.com/smithy-kotlin/api/latest/telemetry-api/aws.smithy.kotlin.runtime.telemetry/-telemetry-provider/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/telemetry-api/aws.smithy.kotlin.runtime.telemetry/-telemetry-provider/index.html)して、テレメトリデータをオブザーバビリティバックエンド ( [AWS X-Ray](https://docs.aws.amazon.com/xray/?icmpid=docs_homepage_devtools)や [Amazon CloudWatch](https://docs.aws.amazon.com/cloudwatch/?icmpid=docs_homepage_mgmtgov) など) に送信し、それに対応できます。

デフォルトでは、SDK ではログ記録のみが有効になり、他のテレメトリ信号は無効になります。このトピックでは、テレメトリ出力を有効にして設定する方法について説明します。

**重要**  
`TelemetryProvider` は現在、使用するにはオプトインする必要がある実験的な API です。

## `TelemetryProvider` の設定
<a name="observability-conf-telemetry-provider"></a>

アプリケーション`TelemetryProvider`内の は、すべてのサービスクライアントまたは個々のクライアントに対してグローバルに設定できます。次の例では、仮定`getConfiguredProvider()`関数を使用して `TelemetryProvider` API オペレーションを示します。[テレメトリプロバイダー](observability-telemetry-providers.md) このセクションでは、 SDK が提供する実装について説明します。プロバイダーがサポートされていない場合は、独自のサポートを実装するか、[GitHub で機能リクエストを開く](https://github.com/awslabs/aws-sdk-kotlin/issues/new/choose)ことができます。

### デフォルトのグローバルテレメトリプロバイダーを設定する
<a name="observability-conf-telemetry-provider-global"></a>

デフォルトでは、すべてのサービスクライアントはグローバルに利用可能なテレメトリプロバイダーの使用を試みます。これにより、プロバイダーを 1 回設定でき、すべてのクライアントがそれを使用します。これは、サービスクライアントをインスタンス化する前に 1 回だけ行う必要があります。

グローバルテレメトリプロバイダーを使用するには、まずプロジェクトの依存関係を更新して、次の Gradle スニペットに示すようにテレメトリのデフォルトモジュールを追加します。

({{X.Y.Z}} リンクに移動して、利用可能な最新バージョンを確認できます）。

```
dependencies {
    implementation(platform("aws.smithy.kotlin:bom:[https://github.com/smithy-lang/smithy-kotlin/releases/latest](https://github.com/smithy-lang/smithy-kotlin/releases/latest)"))
    implementation("aws.smithy.kotlin:telemetry-defaults")
    ...
}
```

次に、次のコードに示すように、サービスクライアントを作成する前にグローバルテレメトリプロバイダーを設定します。

```
import aws.sdk.kotlin.services.s3.S3Client
import aws.smithy.kotlin.runtime.telemetry.GlobalTelemetryProvider
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    val myTelemetryProvider = getConfiguredProvider()
    GlobalTelemetryProvider.set(myTelemetryProvider)

    S3Client.fromEnvironment().use { s3 ->
        …
    }     
}

fun getConfiguredProvider(): TelemetryProvider {
    TODO("TODO - configure a provider")
}
```

### 特定のサービスクライアントのテレメトリプロバイダーを設定する
<a name="observability-conf-telemetry-provider-client"></a>

個々のサービスクライアントは、特定のテレメトリプロバイダー (グローバルプロバイダーを除く) で設定できます。以下の例ではこれを示しています。

```
import aws.sdk.kotlin.services.s3.S3Client
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    S3Client.fromEnvironment{
        telemetryProvider = getConfiguredProvider()
    }.use { s3 ->
        ...
    }
}

fun getConfiguredProvider(): TelemetryProvider {
    TODO("TODO - configure a provider")
}
```