View a markdown version of this page

Alterações na publicação de métricas do SDK da versão 1 para a versão 2 - 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á.

Alterações na publicação de métricas do SDK da versão 1 para a versão 2

Este tópico detalha as mudanças na publicação de métricas do SDK do lado do cliente da versão 1.x (v1) para a versão 2.x (v2) do. AWS SDK para Java

High-level mudanças

Mudanças na arquitetura

Na v1, a coleta de métricas é uma JVM-wide configuração global que você ativa com uma propriedade do sistema. O SDK publica automaticamente todas as métricas coletadas em. CloudWatch Há apenas um destino de métricas.

Na v2, a coleta de métricas usa uma MetricPublisherinterface conectável que você anexa a clientes ou solicitações de serviços individuais. O SDK fornece três implementações:

  • CloudWatchMetricPublisher: agrega e carrega periodicamente métricas para. CloudWatch Mais adequado para aplicativos de longa duração.

  • EmfMetricLoggingPublisher: grava métricas como entradas de registro estruturadas no CloudWatch Embedded Metric Format (EMF). Mais adequado para funções Lambda e outros ambientes de curta duração.

  • LoggingMetricPublisher: envia métricas para o console por meio do registro SLF4J. Mais adequado para desenvolvimento e depuração locais.

Mudanças no escopo

Na v1, habilitar métricas publica dados para todos os clientes de AWS serviço na JVM. Na v2, você controla as métricas no nível do cliente de serviço ou no nível da solicitação individual.

Alterações no tipo de métrica

A v1 coleta três categorias de métricas: métricas de AWS solicitação, métricas de AWS serviço e métricas de máquina (memória de pilha, contagem de threads, descritores de arquivos abertos).

A v2 se concentra nas métricas de solicitação e resposta do SDK, como duração da chamada de API, duração do empacotamento, duração da assinatura e contagem de novas tentativas. A v2 não coleta métricas da máquina, como memória de pilha, contagem de threads e descritores de arquivos abertos. Para continuar coletando métricas da JVM CloudWatch, você pode usar a coleção de métricas CloudWatch Agent with JMX.

Mudanças nas dependências

A tabela a seguir mostra as mudanças na dependência e no nome do pacote do Maven entre v1 e v2.

Alteração v1 v2 da

Dependências do Maven

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.12.x1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-cloudwatchmetrics</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.x.x2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>cloudwatch-metric-publisher</artifactId> </dependency> </dependencies>
Nome do pacote com.amazonaws.metrics software.amazon.awssdk.metrics

1 Versão mais recente. 2 Versão mais recente.

O artefato v2 depende do caso de uso, conforme mostrado na tabela a seguir.

Caso de uso artifactId da v2 Versão mínima do SDK
Long-running aplicações cloudwatch-metric-publisher 2.14.0
funções do Lambda emf-metric-logging-publisher 2.30.3
Desenvolvimento e depuração Nenhuma dependência adicional é necessária (LoggingMetricPublisherestá no núcleo do SDK) 2.14.0

Alterações de API

Habilitar as métricas do

A tabela a seguir compara como habilitar métricas na v1 e na v2 para diferentes casos de uso.

Caso de uso v1 v2 da

Habilite métricas globalmente

Adicione uma propriedade do sistema JVM:

-Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties
Sem compatibilidade. Anexe um MetricPublisher a cada cliente de serviço.

Habilite métricas no Amazon EC2 sem arquivo de credenciais

-Dcom.amazonaws.sdk.enableDefaultMetrics
Não aplicável. A v2 usa sua resolução de credencial padrão.

Habilitar métricas para um cliente de serviço

Sem compatibilidade. As métricas são globais ou desativadas.
MetricPublisher metricsPub = CloudWatchMetricPublisher.create(); DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration(c -> c .addMetricPublisher(metricsPub)) .build(); // ... use the client ... metricsPub.close(); ddb.close();

Habilite métricas para uma única solicitação

Sem compatibilidade.
ddb.listTables(ListTablesRequest.builder() .overrideConfiguration(c -> c .addMetricPublisher(metricsPub)) .build());

Configurando o destino CloudWatch

A tabela a seguir mostra como configurar o CloudWatch destino na v1 em comparação com a v2.

Caso de uso v1 v2 da

Definir CloudWatch região

Atributo de propriedade do sistema:

-Dcom.amazonaws.sdk.enableDefaultMetrics=cloudwatchRegion=us-west-2
CloudWatchMetricPublisher.builder() .cloudWatchClient( CloudWatchAsyncClient.builder() .region(Region.US_WEST_2) .build()) .build();

Definir frequência de carregamento

Não configurável. Carrega aproximadamente uma vez por minuto.
CloudWatchMetricPublisher.builder() .uploadFrequency(Duration.ofMinutes(5)) .build();

Definir CloudWatch namespace

Fixado emAWSSDK/Java.

O padrão é AwsSdk/JavaSdk2. Configurável via:

CloudWatchMetricPublisher.builder() .namespace("MyApp/SDK") .build();
nota

Se você tiver CloudWatch painéis ou alarmes existentes referenciando o namespace AWSSDK/Java v1, defina para preservar a continuidade. .namespace("AWSSDK/Java")

Excluir métricas da máquina

Atributo de propriedade do sistema:

-Dcom.amazonaws.sdk.enableDefaultMetrics=excludeMachineMetrics
Não aplicável. A v2 não coleta métricas da máquina.

Métricas para funções Lambda

A v1 não tem uma solução de Lambda-specific métricas. Na v2, use EmfMetricLoggingPublisher which grava métricas como entradas de registro estruturadas no CloudWatch Embedded Metric Format (EMF):

// v2 - Lambda-optimized metrics publishing EmfMetricLoggingPublisher emfPublisher = EmfMetricLoggingPublisher.builder() .namespace("MyApp") .dimensions(CoreMetric.SERVICE_ID, CoreMetric.OPERATION_NAME) .build(); DynamoDbClient dynamoDb = DynamoDbClient.builder() .overrideConfiguration(c -> c.addMetricPublisher(emfPublisher)) .build();
nota

Em ambientes Lambda, o logGroupName é detectado automaticamente a partir da variável de ambiente. AWS_LAMBDA_LOG_GROUP_NAME Em ambientes não Lambda, como Amazon ECS ou Amazon EC2, você deve definir logGroupName explicitamente o construtor.

Métricas para desenvolvimento e depuração

A v1 não tem uma saída de métricas baseada em console. Na v2, useLoggingMetricPublisher:

// v2 - Console output for debugging MetricPublisher loggingPublisher = LoggingMetricPublisher.create(); S3Client s3 = S3Client.builder() .overrideConfiguration(c -> c.addMetricPublisher(loggingPublisher)) .build();

Gerenciamento de ciclo de vida

Na v1, a coleta de métricas é executada durante toda a vida útil da JVM depois que a propriedade do sistema é definida. Na v2, você deve gerenciar o ciclo de vida do: MetricPublisher

// v2 - Close the publisher when no longer needed MetricPublisher metricsPub = CloudWatchMetricPublisher.create(); DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration(c -> c.addMetricPublisher(metricsPub)) .build(); // ... use the client ... metricsPub.close(); // Flushes remaining metrics to CloudWatch ddb.close();
Importante

Chame close a MetricPublisher instância quando ela não for mais necessária. Não fazer isso pode resultar em vazamentos de thread ou descritor de arquivo.

Permissões obrigatórias

A tabela a seguir lista as permissões do IAM necessárias para cada editor de métricas.

Tipo de permissão v1 versão 2 () CloudWatchMetricPublisher versão 2 () EmfMetricLoggingPublisher
Permissão do IAM cloudwatch:PutMetricData cloudwatch:PutMetricData logs:PutLogEvents

Limitações

Atualmente, o cliente AWS CRT-based S3 não oferece suporte à coleta de métricas do SDK na v2.

Recursos adicionais do