Utilice SDK las métricas del AWS SDK for Java - AWS SDK for Java 2.x

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Utilice SDK las métricas del AWS SDK for Java

Con la AWS SDK for Java versión 2.x, puede recopilar métricas sobre los clientes de servicio de su aplicación, analizar los resultados y Amazon CloudWatch, después, actuar en consecuencia.

De forma predeterminada, la recopilación de métricas está deshabilitada en. SDK En este tema se explica cómo activarlo y configurarlo.

Requisitos previos

Antes de poder activar y utilizar las métricas, debe completar los siguientes pasos:

  • Realice los pasos que se indican en Configurar el AWS SDK for Java 2.x.

  • Configure las dependencias de su proyecto (por ejemplo, en su archivo pom.xml o build.gradle) para usar la versión 2.14.0 o posterior del AWS SDK for Java.

    Para permitir la publicación de métricas en CloudWatch, incluye también las métricas artifactId cloudwatch-metric-publisher con el número de versión 2.14.0 o posterior en las dependencias de tu proyecto.

    Por ejemplo:

    <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>
  • Habilite cloudwatch:PutMetricData los permisos para la IAM identidad utilizada por el editor de métricas SDK para que Java pueda escribir métricas.

Habilitar la recopilación de métricas

Puede habilitar las métricas en su aplicación para un cliente de servicio o para solicitudes individuales.

Habilitar métricas para una solicitud específica

La siguiente clase muestra cómo habilitar el publicador de CloudWatch métricas para una solicitud Amazon DynamoDB. Utiliza la configuración predeterminada del 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

Asegúrese de que la aplicación llame close a la MetricPublisher instancia cuando el cliente del servicio ya no esté en uso. Si no lo hace, es posible que se filtre el subproceso o el descriptor del archivo.

Habilite las métricas resumidas para un cliente de servicio específico

En el siguiente fragmento de código, se muestra cómo habilitar un publicador de CloudWatch métricas con la configuración predeterminada para un cliente de servicio.

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

Personalice el editor de métricas

La siguiente clase muestra cómo configurar una configuración personalizada para el publicador de métricas de un cliente de servicio específico. Las personalizaciones incluyen cargar un perfil específico, especificar una AWS región a la que el publicador de métricas envía las solicitudes y personalizar la frecuencia a la que envía las 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(); } }

Las personalizaciones que se muestran en el fragmento anterior tienen los siguientes efectos.

  • El cloudWatchClient método permite personalizar el CloudWatch cliente que se utiliza para enviar las métricas. En este ejemplo, utilizamos una región diferente de la predeterminada us-east-1 a la que el cliente envía las métricas. También utilizamos un perfil con nombre diferente, cloudwatch, cuyas credenciales se utilizarán para autenticar las solicitudes. CloudWatch Esas credenciales deben tener permisos para. cloudwatch:PutMetricData

  • El uploadFrequency método le permite especificar la frecuencia con la que el editor carga las métricas. CloudWatch El valor predeterminado es una vez por minuto.

  • El maximumCallsPerUpload método limita el número de llamadas realizadas por carga. El valor predeterminado es ilimitado.

  • De forma predeterminada, la versión 2.x SDK de Java publica las métricas en el espacio de nombresAwsSdk/JavaSdk2. Puede usar el namespace método para especificar un valor diferente.

  • De forma predeterminada, SDK publica métricas resumidas. Las métricas resumidas se componen del promedio, el mínimo, el máximo, la suma y el recuento de muestras. Al especificar una o más SDK métricas en el detailedMetrics método, SDK publica datos adicionales para cada métrica. Estos datos adicionales permiten realizar consultas con estadísticas de percentiles, como p90 y p99. CloudWatch Las métricas detalladas son especialmente útiles para las métricas de latenciaAPICallDuration, como las que miden la end-to-end latencia de las solicitudes de los clientes. SDK Puedes usar los campos de la CoreMetric clase para especificar otras SDK métricas comunes.

¿Cuándo están disponibles las métricas?

Por lo general, las métricas están disponibles entre 5 y 10 minutos después SDK de que Java las emita. Para obtener up-to-date métricas precisas, consulte Cloudwatch al menos 10 minutos después de emitir las métricas desde sus aplicaciones Java.

¿Qué información se recopila?

La recopilación de métricas incluye lo siguiente:

  • Número de API solicitudes, incluido si se han realizado correctamente o no

  • Información sobre los AWS servicios a los que llamas en tus API solicitudes, incluidas las excepciones devueltas

  • La duración de varias operaciones, como la clasificación, la firma y las solicitudes HTTP

  • HTTPmétricas del cliente, como el número de conexiones abiertas, el número de solicitudes pendientes y el nombre del HTTP cliente utilizado

nota

Las métricas disponibles varían según el HTTP cliente.

Para ver una lista completa, consulte Métricas de los clientes de servicio.

¿Cómo puedo usar esta información?

Puede usar las métricas SDK recopiladas para monitorear los clientes de servicio de su aplicación. Puede analizar las tendencias generales de uso, identificar anomalías, revisar las excepciones detectadas por los clientes del servicio o profundizar para entender un problema concreto. También puede crear alarmas que le notifiquen tan pronto como su aplicación alcance una condición que usted defina. Amazon CloudWatch

Para obtener más información, consulte Uso de Amazon CloudWatch métricas y Uso de Amazon CloudWatch alarmas en la Guía del Amazon CloudWatch usuario.

Temas