

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á.

# Publique métricas do SDK de aplicativos de longa execução usando o AWS SDK for Java 2.x
<a name="metric-pub-impl-cwmp"></a>

Como a `[CloudWatchMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/cloudwatch/CloudWatchMetricPublisher.html)` implementação agrega e carrega periodicamente métricas para a Amazon CloudWatch com um atraso, seu uso é mais adequado para aplicativos de longa execução. 

As configurações padrão do editor de métricas têm como objetivo minimizar o uso e o CloudWatch custo da memória, ao mesmo tempo em que fornecem uma quantidade útil de informações sobre os dados métricos.

## Configuração
<a name="prerequisitesmetrics"></a>

Antes de ativar e usar as métricas usando `CloudWatchMetricPublisher`, siga as etapas a seguir.

### Etapa 1: adicionar dependência necessária
<a name="cwmp-set-up-deps"></a>

Configure as dependências do seu projeto (por exemplo, no seu arquivo `pom.xml` ou `build.gradle`) para usar a versão `2.14.0` ou posterior do AWS SDK para Java.

Inclua o artifactId `cloudwatch-metric-publisher` com o número da versão `2.14.0` ou posterior nas dependências do projeto.

Por exemplo:

```
<project>
  <dependencyManagement>
   <dependencies>
      <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>[2.30.11](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)</version>  <!-- Navigate the link to see the latest version. -->
        <type>pom</type>
        <scope>import</scope>
      </dependency>
   </dependencies>
  </dependencyManagement>
  <dependencies>
   <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>cloudwatch-metric-publisher</artifactId>
   </dependency>
  </dependencies>
</project>
```

### Etapa 2: configurar as permissões necessárias
<a name="cwmp-set-up-perms"></a>

Habilite as permissões `cloudwatch:PutMetricData` para a identidade do IAM usada pelo publicador de métricas para permitir que o SDK para Java escreva métricas.

## Habilitar métricas para uma solicitação específica
<a name="enable-metrics-for-a-specific-request"></a>

A classe a seguir mostra como habilitar o editor de CloudWatch métricas para uma solicitação ao Amazon DynamoDB. Ele usa a configuração padrão do publicador de métricas.

```
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.publishers.cloudwatch.CloudWatchMetricPublisher;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.ListTablesRequest;

public class DefaultConfigForRequest {
    // Use one MetricPublisher for your application. It can be used with requests or service clients.
    static MetricPublisher metricsPub = CloudWatchMetricPublisher.create();

    public static void main(String[] args) {
        DynamoDbClient ddb = DynamoDbClient.create();
        // Publish metrics the for ListTables operation.
        ddb.listTables(ListTablesRequest.builder()
            .overrideConfiguration(c -> c.addMetricPublisher(metricsPub))
            .build());

        // Perform more work in your application.

        // A MetricsPublisher has its own lifecycle independent of any service client or request that uses it.
        // If you no longer need the publisher, close it to free up resources.
        metricsPub.close();  // All metrics stored in memory are flushed to CloudWatch.

        // Perform more work with the DynamoDbClient instance without publishing metrics.
        // Close the service client when you no longer need it.
        ddb.close();
    }
}
```

**Importante**  
A aplicação deve chamar `close` na instância `[MetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/MetricPublisher.html)` quando o cliente de serviço não estiver mais em uso. Não fazer isso pode causar vazamentos de threads ou descritores de arquivo.

## Habilitar métricas resumidas para um cliente de serviço específico
<a name="enable-metrics-for-a-specific-service-client"></a>

O trecho de código a seguir mostra como habilitar um editor de CloudWatch métricas com configurações padrão para um cliente de serviço.

```
MetricPublisher metricsPub = CloudWatchMetricPublisher.create();

DynamoDbClient ddb = DynamoDbClient.builder()
          .overrideConfiguration(c -> c.addMetricPublisher(metricsPub))
          .build();
```

## Personalize um editor de CloudWatch métricas
<a name="customize-metrics-publisher"></a>

A classe a seguir demonstra como definir uma configuração personalizada para o publicador de métricas de um cliente de serviço específico. As personalizações incluem carregar um perfil específico, especificar uma AWS região para a qual o editor de métricas envia solicitações e personalizar a frequência com que o editor envia métricas. CloudWatch

```
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.publishers.cloudwatch.CloudWatchMetricPublisher;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;

import java.time.Duration;

public class CustomConfigForDDBClient {
    // Use one MetricPublisher for your application. It can be used with requests or service clients.
    static MetricPublisher metricsPub = CloudWatchMetricPublisher.builder()
        .cloudWatchClient(CloudWatchAsyncClient.builder()
            .region(Region.US_WEST_2)
            .credentialsProvider(ProfileCredentialsProvider.create("cloudwatch"))
            .build())
        .uploadFrequency(Duration.ofMinutes(5))
        .maximumCallsPerUpload(100)
        .namespace("ExampleSDKV2Metrics")
        .detailedMetrics(CoreMetric.API_CALL_DURATION)
        .build();

    public static void main(String[] args) {
        DynamoDbClient ddb = DynamoDbClient.builder()
            .overrideConfiguration(c -> c.addMetricPublisher(metricsPub))
            .build();
        // Publish metrics for DynamoDB operations.
        ddb.listTables();
        ddb.describeEndpoints();
        ddb.describeLimits();
        // Perform more work in your application.

        // A MetricsPublisher has its own lifecycle independent of any service client or request that uses it.
        // If you no longer need the publisher, close it to free up resources.
        metricsPub.close();  // All metrics stored in memory are flushed to CloudWatch.


        // Perform more work with the DynamoDbClient instance without publishing metrics.
        // Close the service client when you no longer need it.
        ddb.close();
    }
}
```

As personalizações mostradas no trecho anterior têm os efeitos a seguir.
+ O `cloudWatchClient` método permite que você personalize o CloudWatch cliente usado para enviar métricas. Neste exemplo, usamos uma região diferente do padrão de *us-east-1* para onde o cliente envia métricas. Também usamos um perfil nomeado diferente, *cloudwatch*, cujas credenciais serão usadas para autenticar solicitações para. CloudWatch Essas credenciais devem ter permissões para `cloudwatch:PutMetricData`.
+ O `uploadFrequency` método permite que você especifique com que frequência o editor de métricas faz o upload das métricas. CloudWatch O padrão é uma vez por minuto.
+ O método `maximumCallsPerUpload` limita o número de chamadas feitas por upload. O valor padrão é ilimitado.
+ Por padrão, o SDK para Java 2.x publica métricas no namespace `AwsSdk/JavaSdk2`. Você pode usar o método `namespace` para especificar um valor diferente.
+ Por padrão, o SDK publica métricas resumidas. As métricas resumidas consistem em média, mínimo, máximo, soma e contagem de amostras. Ao especificar uma ou mais métricas do SDK no método `detailedMetrics`, o SDK publica dados adicionais para cada métrica. Esses dados adicionais permitem estatísticas percentuais, como p90 e p99, que você pode consultar. CloudWatch As métricas detalhadas são especialmente úteis para métricas de latência`APICallDuration`, como a que mede a end-to-end latência das solicitações de clientes do SDK. É possível usar os campos da classe `[CoreMetric](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/metrics/CoreMetric.html)` para especificar outras métricas comuns do SDK. 

**Próximas etapas:** Se você também estiver trabalhando com funções do Lambda, consulte [Publicar métricas do SDK para AWS Lambda funções para publicação de métricas baseadas](metric-pub-impl-emf.md) em EMF.