Use SDK métricas do AWS SDK for Java - AWS SDK for Java 2.x

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

Use SDK métricas do AWS SDK for Java

Com o AWS SDK for Java 2.x, você pode coletar métricas sobre os clientes de serviço em seu aplicativo, analisar a saída e, em seguida Amazon CloudWatch, agir de acordo com ela.

Por padrão, a coleta de métricas está desativada noSDK. Este tópico ajuda a habilitar e configurá-lo.

Pré-requisitos

Antes de habilitar e usar métricas, é necessário seguir essas etapas:

  • Siga as etapas em Configure o AWS SDK for Java 2.x.

  • 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 for Java.

    Para permitir a publicação de métricas em CloudWatch, inclua também o artifactId cloudwatch-metric-publisher com o número da versão 2.14.0 ou posterior nas dependências do seu projeto.

    Por exemplo: .

    <project> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.14.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>cloudwatch-metric-publisher</artifactId> <version>2.14.0</version> </dependency> </dependencies> </project>
  • Ative cloudwatch:PutMetricData as permissões para a IAM identidade usada pelo editor de métricas SDK para permitir que o Java escreva métricas.

Como ativar a coleta de métricas

Você pode habilitar métricas em seu aplicativo para um cliente de serviço ou em solicitações individuais.

Habilitar métricas para uma solicitação específica

A classe a seguir mostra como habilitar o editor de CloudWatch métricas para uma solicitação para 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

Certifique-se de que seu aplicativo chame close a MetricPublisher instância quando o cliente de serviço não estiver mais em uso. Não fazer isso resulta em possíveis vazamentos de thread ou descritor de arquivo.

Ativar métricas resumidas para um cliente de serviço específico

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 o editor de métricas

A classe a seguir demonstra como definir uma configuração personalizada para o editor 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 seguintes efeitos.

  • 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 us-east-1 para a qual o cliente envia métricas. Também usamos um perfil com nome diferente, cloudwatch, cujas credenciais serão usadas para autenticar solicitações para. CloudWatch Essas credenciais devem ter permissões paracloudwatch: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 maximumCallsPerUpload método limita o número de chamadas feitas por upload. O valor padrão é ilimitado.

  • Por padrão, o SDK for Java 2.x publica métricas no namespace. AwsSdk/JavaSdk2 Você pode usar o namespace método para especificar um valor diferente.

  • Por padrã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 SDK métricas no detailedMetrics método, ele 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ênciaAPICallDuration, como a que mede a end-to-end latência das solicitações dos SDK clientes. Você pode usar os campos da CoreMetric classe para especificar outras SDK métricas comuns.

Quando as métricas estão disponíveis?

As métricas geralmente estão disponíveis dentro de 5 a 10 minutos após a emissão das métricas SDK para Java. Para obter up-to-date métricas precisas, verifique o Cloudwatch pelo menos 10 minutos depois de emitir as métricas de seus aplicativos Java.

Quais informações são coletadas?

A coleção de métricas inclui o seguinte:

  • Número de API solicitações, incluindo se elas foram bem-sucedidas ou fracassadas

  • Informações sobre os AWS serviços que você chama em suas API solicitações, incluindo exceções devolvidas

  • A duração de várias operações, como organização, assinatura e solicitações HTTP

  • HTTPmétricas do cliente, como o número de conexões abertas, o número de solicitações pendentes e o nome do HTTP cliente usado

nota

As métricas disponíveis variam de acordo com HTTP o cliente.

Para obter uma lista completa, consulte Métricas de serviço do cliente.

Como posso usar essas informações?

Você pode usar as métricas SDK coletadas para monitorar os clientes do serviço em seu aplicativo. Você pode analisar as tendências gerais de uso, identificar anomalias, analisar as exceções retornadas pelos clientes de serviço ou obter mais informações para entender um problema específico. Usando Amazon CloudWatch, você também pode criar alarmes para notificá-lo assim que seu aplicativo atingir uma condição definida por você.

Para obter mais informações, consulte Usando Amazon CloudWatch métricas e usando Amazon CloudWatch alarmes no Guia do Amazon CloudWatch usuário.

Tópicos