View a markdown version of this page

Modifiche nella pubblicazione delle metriche SDK dalla versione 1 alla versione 2 - AWS SDK for Java 2.x

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modifiche nella pubblicazione delle metriche SDK dalla versione 1 alla versione 2

Questo argomento descrive in dettaglio le modifiche apportate alla pubblicazione delle metriche SDK lato client dalla versione 1.x (v1) alla versione 2.x (v2) di. AWS SDK per Java

High-level modifiche

Modifiche all'architettura

Nella v1, la raccolta di metriche è un' JVM-wide impostazione globale che puoi abilitare con una proprietà di sistema. L'SDK pubblica automaticamente tutte le metriche raccolte su. CloudWatch Esiste una sola destinazione delle metriche.

Nella v2, la raccolta delle metriche utilizza un'MetricPublisherinterfaccia collegabile che si collega a singoli client o richieste di servizio. L'SDK fornisce tre implementazioni:

  • CloudWatchMetricPublisher: aggrega e carica periodicamente le metriche su. CloudWatch Ideale per applicazioni di lunga durata.

  • EmfMetricLoggingPublisher: scrive le metriche come voci di registro strutturate in CloudWatch Embedded Metric Format (EMF). Ideale per le funzioni Lambda e altri ambienti di breve durata.

  • LoggingMetricPublisher: invia le metriche alla console tramite la registrazione SLF4J. Ideale per lo sviluppo e il debug locali.

Modifiche all'ambito

Nella v1, l'abilitazione delle metriche pubblica i dati per tutti i client di AWS servizio nella JVM. Nella v2, puoi controllare le metriche a livello di client di servizio o a livello di richiesta individuale.

Modifiche al tipo di metrica

v1 raccoglie tre categorie di metriche: AWS Request Metrics, AWS Service Metrics e Machine Metrics (memoria heap, numero di thread, descrittori di file aperti).

v2 si concentra sulle metriche di richiesta e risposta dell'SDK, come la durata delle chiamate API, la durata del marshalling, la durata della firma e il numero di tentativi. v2 non raccoglie metriche automatiche come la memoria heap, il numero di thread e i descrittori di file aperti. Per continuare a raccogliere le metriche JVM in, puoi utilizzare la raccolta di metriche Agent with JMX. CloudWatch CloudWatch

Modifiche nelle dipendenze

La tabella seguente mostra la dipendenza di Maven e le modifiche al nome del pacchetto tra v1 e v2.

Modifica v1   v2

Dipendenze 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 pacchetto com.amazonaws.metrics software.amazon.awssdk.metrics

1 Ultima versione. 2 Ultima versione.

L'artefatto v2 dipende dal caso d'uso, come illustrato nella tabella seguente.

Caso d’uso artifactID v2 Versione SDK minima
Long-running applicazioni cloudwatch-metric-publisher 2.14.0
Funzioni Lambda emf-metric-logging-publisher 2.30.3
Sviluppo e debug Non è necessaria alcuna dipendenza aggiuntiva (LoggingMetricPublisherè nel core dell'SDK) 2.14.0

Modifiche all'API

Abilitazione dei parametri di

La tabella seguente confronta come abilitare le metriche in v1 e v2 per diversi casi d'uso.

Caso d’uso v1   v2

Abilita le metriche a livello globale

Aggiungi una proprietà di sistema JVM:

-Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties
Non supportato. Allega un MetricPublisher a ogni client di servizio.

Abilita i parametri su Amazon EC2 senza file di credenziali

-Dcom.amazonaws.sdk.enableDefaultMetrics
Non applicabile. v2 utilizza la risoluzione delle credenziali standard.

Abilita le metriche per un client di servizio

Non supportato. Le metriche sono globali o disattivate.
MetricPublisher metricsPub = CloudWatchMetricPublisher.create(); DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration(c -> c .addMetricPublisher(metricsPub)) .build(); // ... use the client ... metricsPub.close(); ddb.close();

Abilita le metriche per una singola richiesta

Non supportato.
ddb.listTables(ListTablesRequest.builder() .overrideConfiguration(c -> c .addMetricPublisher(metricsPub)) .build());

Configurazione della destinazione CloudWatch

La tabella seguente mostra come configurare la CloudWatch destinazione in v1 rispetto alla v2.

Caso d’uso v1   v2

Imposta la regione CloudWatch

Attributo di proprietà del sistema:

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

Imposta la frequenza di caricamento

Non configurabile Caricamenti all'incirca una volta al minuto.
CloudWatchMetricPublisher.builder() .uploadFrequency(Duration.ofMinutes(5)) .build();

CloudWatch Imposta lo spazio dei nomi

Risolto a. AWSSDK/Java

L’impostazione predefinita è AwsSdk/JavaSdk2. Configurabile tramite:

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

Se hai CloudWatch dashboard o allarmi esistenti che fanno riferimento allo spazio dei nomi AWSSDK/Java v1, imposta per preservare la continuità. .namespace("AWSSDK/Java")

Escludi le metriche della macchina

Attributo di proprietà del sistema:

-Dcom.amazonaws.sdk.enableDefaultMetrics=excludeMachineMetrics
Non applicabile. v2 non raccoglie le metriche delle macchine.

Metriche per le funzioni Lambda

v1 non dispone di una Lambda-specific soluzione di metrica. Nella v2, utilizza EmfMetricLoggingPublisher che scrive le metriche come voci di registro strutturate in 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

Negli ambienti Lambda, logGroupName viene rilevato automaticamente dalla variabile di ambiente. AWS_LAMBDA_LOG_GROUP_NAME In ambienti non Lambda come Amazon ECS o Amazon EC2, devi logGroupName impostarlo in modo esplicito sul builder.

Metriche per lo sviluppo e il debug

v1 non dispone di un output di metriche basato sulla console. Nella v2, usa: LoggingMetricPublisher

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

Gestione del ciclo di vita

Nella v1, la raccolta di metriche viene eseguita per tutta la durata della JVM una volta impostata la proprietà di sistema. Nella v2, è necessario gestire il ciclo di vita di: 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

Chiama close l'MetricPublisheristanza quando non è più necessaria. In caso contrario, si possono verificare perdite di thread o di descrittori di file.

Autorizzazioni richieste

La tabella seguente elenca le autorizzazioni IAM richieste per ogni editore di metriche.

Tipo di autorizzazione v1 v2 () CloudWatchMetricPublisher v2 () EmfMetricLoggingPublisher
Autorizzazione IAM cloudwatch:PutMetricData cloudwatch:PutMetricData logs:PutLogEvents

Limitazioni

Il client AWS CRT-based S3 attualmente non supporta la raccolta di metriche SDK nella v2.

Risorse aggiuntive