

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Observabilitas
<a name="observability"></a>

Observabilitas adalah sejauh mana keadaan sistem saat ini dapat disimpulkan dari data yang dipancarkannya. Data yang dipancarkan biasanya disebut sebagai telemetri.

 AWS SDK untuk Kotlin Dapat menyediakan ketiga sinyal telemetri umum: metrik, jejak, dan log. Anda dapat menghubungkan data telemetri [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)untuk mengirim ke backend observabilitas (seperti atau [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)) dan kemudian menindaklanjutinya.

Secara default, hanya logging yang diaktifkan dan sinyal telemetri lainnya dinonaktifkan di SDK. Topik ini menjelaskan cara mengaktifkan dan mengonfigurasi keluaran telemetri.

**penting**  
`TelemetryProvider`saat ini merupakan API eksperimental yang harus dipilih untuk digunakan.

## Konfigurasikan a `TelemetryProvider`
<a name="observability-conf-telemetry-provider"></a>

Anda dapat mengonfigurasi a `TelemetryProvider` dalam aplikasi Anda secara global untuk semua klien layanan atau untuk klien individu. Contoh berikut menggunakan `getConfiguredProvider()` fungsi hipotetis untuk mendemonstrasikan operasi `TelemetryProvider` API. [Penyedia telemetri](observability-telemetry-providers.md)Bagian ini menjelaskan informasi untuk implementasi yang disediakan oleh SDK. Jika penyedia tidak didukung, Anda dapat menerapkan dukungan Anda sendiri atau [membuka permintaan fitur GitHub](https://github.com/awslabs/aws-sdk-kotlin/issues/new/choose).

### Konfigurasikan penyedia telemetri global default
<a name="observability-conf-telemetry-provider-global"></a>

Secara default, setiap klien layanan mencoba menggunakan penyedia telemetri yang tersedia secara global. Dengan cara ini, Anda dapat mengatur penyedia sekali, dan semua klien akan menggunakannya. Ini harus dilakukan hanya sekali, sebelum Anda membuat instance klien layanan apa pun.

Untuk menggunakan penyedia telemetri global, perbarui dependensi project terlebih dahulu untuk menambahkan modul default telemetri seperti yang ditunjukkan pada cuplikan Gradle berikut.

(Anda dapat menavigasi ke {{X.Y.Z}} tautan untuk melihat versi terbaru yang tersedia.)

```
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")
    ...
}
```

Kemudian atur penyedia telemetri global sebelum membuat klien layanan seperti yang ditunjukkan pada kode berikut.

```
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")
}
```

### Konfigurasikan penyedia telemetri untuk klien layanan tertentu
<a name="observability-conf-telemetry-provider-client"></a>

Anda dapat mengonfigurasi klien layanan individual dengan penyedia telemetri tertentu (selain yang global). Seperti yang ditunjukkan dalam contoh berikut.

```
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")
}
```