Usa le SDK metriche del AWS SDK for Java - 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à.

Usa le SDK metriche del AWS SDK for Java

Con la AWS SDK for Java versione 2.x, puoi raccogliere metriche sui client di servizio della tua applicazione, analizzare l'output e quindi agire di conseguenza. Amazon CloudWatch

Per impostazione predefinita, la raccolta delle metriche è disabilitata in. SDK Questo argomento consente di attivarla e configurarla.

Prerequisiti

Prima di poter abilitare e utilizzare le metriche, devi completare i seguenti passaggi:

  • Completa le fasi descritte in Configura il AWS SDK for Java 2.x.

  • Configura le dipendenze del progetto (ad esempio, nel tuo build.gradle file pom.xml o) per utilizzare la versione 2.14.0 o successiva di. AWS SDK for Java

    Per consentire la pubblicazione delle metriche su CloudWatch, includetele anche artifactId cloudwatch-metric-publisher con il numero di versione 2.14.0 o successivo nelle dipendenze del progetto.

    Per esempio:

    <project> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.27.21</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>
  • Abilita cloudwatch:PutMetricData le autorizzazioni per l'IAMidentità utilizzata dall'editore delle metriche SDK per consentire a Java di scrivere le metriche.

Come abilitare la raccolta delle metriche

Puoi abilitare le metriche nella tua applicazione per un client di servizio o su richieste individuali.

Abilita le metriche per una richiesta specifica

La classe seguente mostra come abilitare l'editore delle CloudWatch metriche per una richiesta a. Amazon DynamoDB Utilizza la configurazione predefinita di Metrics Publisher.

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

Assicurati che l'applicazione richiami close l'MetricPublisheristanza quando il client del servizio non è più in uso. In caso contrario, potrebbero verificarsi fughe di thread o descrittori di file.

Abilita le metriche di riepilogo per un client di servizio specifico

Il seguente frammento di codice mostra come abilitare un editore di CloudWatch metriche con impostazioni predefinite per un client di servizio.

MetricPublisher metricsPub = CloudWatchMetricPublisher.create(); DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration(c -> c.addMetricPublisher(metricsPub)) .build();

Personalizza l'editore di metriche

La seguente classe dimostra come impostare una configurazione personalizzata per l'editore delle metriche per uno specifico client di servizio. Le personalizzazioni includono il caricamento di un profilo specifico, la specificazione di una AWS regione in cui l'editore delle metriche invia le richieste e la personalizzazione della frequenza a cui l'editore invia le metriche. 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(); } }

Le personalizzazioni mostrate nello snippet precedente hanno i seguenti effetti.

  • Il cloudWatchClient metodo consente di personalizzare il CloudWatch client utilizzato per inviare le metriche. In questo esempio, utilizziamo una regione diversa da quella predefinita di us-east-1 in cui il client invia le metriche. Utilizziamo anche un profilo con nome diverso, cloudwatch, le cui credenziali verranno utilizzate per autenticare le richieste. CloudWatch Tali credenziali devono avere le autorizzazioni per. cloudwatch:PutMetricData

  • Il uploadFrequency metodo consente di specificare la frequenza con cui l'editore di metriche carica le metriche. CloudWatch L'impostazione predefinita è una volta al minuto.

  • Il maximumCallsPerUpload metodo limita il numero di chiamate effettuate per ogni caricamento. Il valore predefinito è illimitato.

  • Per impostazione predefinita, SDK for Java 2.x pubblica le metriche nello spazio dei nomi. AwsSdk/JavaSdk2 È possibile utilizzare il namespace metodo per specificare un valore diverso.

  • Per impostazione predefinita, SDK pubblica metriche di riepilogo. Le metriche di riepilogo sono costituite da media, minima, massima, somma e conteggio dei campioni. Specificando una o più SDK metriche nel detailedMetrics metodo, SDK pubblica dati aggiuntivi per ogni metrica. Questi dati aggiuntivi consentono statistiche percentili come p90 e p99 su cui è possibile eseguire interrogazioni. CloudWatch Le metriche dettagliate sono particolarmente utili per le metriche di latenza comeAPICallDuration, che misurano la latenza per le richieste dei clienti. end-to-end SDK È possibile utilizzare i campi della CoreMetric classe per specificare altre metriche comuni. SDK

Quando sono disponibili le metriche?

Le metriche sono generalmente disponibili entro 5-10 minuti dalla loro emissione da parte di SDK for Java. Per informazioni accurate e up-to-date metriche, controlla Cloudwatch almeno 10 minuti dopo aver emesso le metriche dalle tue applicazioni Java.

Quali informazioni vengono raccolte?

La raccolta di metriche include quanto segue:

  • Numero di API richieste, compreso se hanno esito positivo o negativo

  • Informazioni sui AWS servizi richiamati nelle API richieste, incluse le eccezioni restituite

  • La durata di varie operazioni come Marshalling, Signing e richieste HTTP

  • HTTPmetriche del client, come il numero di connessioni aperte, il numero di richieste in sospeso e il nome del client utilizzato HTTP

Nota

Le metriche disponibili variano in base al client. HTTP

Per un elenco completo, consulta le metriche dei client di assistenza.

Come posso usare queste informazioni?

Puoi utilizzare le metriche SDK raccolte per monitorare i client di servizio nella tua applicazione. È possibile esaminare le tendenze generali di utilizzo, identificare anomalie, esaminare le eccezioni restituite dai client di assistenza o approfondire un problema particolare. Utilizzando Amazon CloudWatch, puoi anche creare allarmi per avvisarti non appena l'applicazione raggiunge una condizione da te definita.

Per ulteriori informazioni, consulta Utilizzo Amazon CloudWatch delle metriche e Utilizzo degli Amazon CloudWatch allarmi nella Guida per l'Amazon CloudWatch utente.

Argomenti