

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

Observabilidade é a medida em que o estado atual de um sistema pode ser identificado com base nos dados que ele emite. Os dados emitidos são chamados, com frequência, de telemetria.

Eles AWS SDK para Kotlin podem fornecer todos os três sinais comuns de telemetria: métricas, rastreamentos e registros. Você pode conectar um [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)para enviar dados de telemetria para um back-end de observabilidade (como a [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)) e, em seguida, agir de acordo com eles.

Por padrão, somente o registro está ativado e outros sinais de telemetria são desativados no SDK. Este tópico explica como habilitar e configurar a saída de telemetria.

**Importante**  
`TelemetryProvider`atualmente é uma API experimental que deve ser ativada para uso.

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

Você pode configurar um `TelemetryProvider` em seu aplicativo globalmente para todos os clientes de serviço ou para clientes individuais. Os exemplos a seguir usam uma `getConfiguredProvider()` função hipotética para demonstrar as operações da `TelemetryProvider` API. A [Provedores de telemetria](observability-telemetry-providers.md) seção descreve as informações para implementações fornecidas pelo SDK. Se um provedor não for compatível, você poderá implementar seu próprio suporte ou [abrir uma solicitação de recurso no GitHub](https://github.com/awslabs/aws-sdk-kotlin/issues/new/choose).

### Configurar o provedor de telemetria global padrão
<a name="observability-conf-telemetry-provider-global"></a>

Por padrão, todo cliente de serviço tenta usar o provedor de telemetria disponível globalmente. Dessa forma, é possível definir o provedor uma vez e todos os clientes o usarão. Isso deve ser feito apenas uma vez, antes de você instanciar qualquer cliente de serviço.

Para usar o provedor global de telemetria, primeiro atualize as dependências do projeto para adicionar o módulo de padrões de telemetria, conforme mostrado no seguinte trecho do Gradle.

(Você pode navegar até o {{X.Y.Z}} link para ver a versão mais recente disponível.)

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

Em seguida, defina o provedor de telemetria global antes de criar um cliente de serviço, conforme mostrado no código a seguir.

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

### Configurar um provedor de telemetria para um cliente de serviço específico
<a name="observability-conf-telemetry-provider-client"></a>

É possível configurar um cliente de serviço individual com um provedor de telemetria específico (diferente do global). Isso é mostrado no exemplo a seguir.

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