Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisez SDK les métriques du AWS SDK for Java
Avec la AWS SDK for Java version 2.x, vous pouvez collecter des métriques sur les clients du service dans votre application, analyser les résultats Amazon CloudWatch, puis agir en conséquence.
Par défaut, la collecte des métriques est désactivée dans leSDK. Cette rubrique vous aide à l'activer et à le configurer.
Prérequis
Avant de pouvoir activer et utiliser les métriques, vous devez suivre les étapes suivantes :
-
Suivez les étapes de Configurez le AWS SDK for Java 2.x.
-
Configurez les dépendances de votre projet (par exemple, dans votre
build.gradle
fichierpom.xml
ou dans votre fichier) pour utiliser la version2.14.0
ou une version ultérieure du AWS SDK for Java.Pour permettre la publication de métriques sur CloudWatch, incluez-les également artifactId
cloudwatch-metric-publisher
avec le numéro de version2.14.0
ou une version ultérieure dans les dépendances de votre projet.Par exemple :
<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>
-
Activez
cloudwatch:PutMetricData
les autorisations pour l'IAMidentité utilisée par l'éditeur de métriques afin de permettre SDK à Java d'écrire des métriques.
Comment activer la collecte de métriques
Vous pouvez activer les métriques dans votre application pour un client de service ou sur des demandes individuelles.
Activer les métriques pour une demande spécifique
La classe suivante montre comment activer l'éditeur de CloudWatch métriques pour une demande adressée à Amazon DynamoDB. Il utilise la configuration par défaut de l'éditeur de métriques.
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(); } }
Important
Assurez-vous que votre application appelle close
l'MetricPublisher
instance lorsque le client de service n'est plus utilisé. Si vous ne le faites pas, cela peut entraîner des fuites de thread ou de descripteur de fichier.
Activer les métriques récapitulatives pour un client de service spécifique
L'extrait de code suivant montre comment activer un éditeur de CloudWatch mesures avec des paramètres par défaut pour un client de service.
MetricPublisher metricsPub = CloudWatchMetricPublisher.create(); DynamoDbClient ddb = DynamoDbClient.builder() .overrideConfiguration(c -> c.addMetricPublisher(metricsPub)) .build();
Personnaliser l'éditeur de métriques
La classe suivante montre comment configurer une configuration personnalisée pour l'éditeur de métriques pour un client de service spécifique. Les personnalisations incluent le chargement d'un profil spécifique, la spécification d'une AWS région dans laquelle l'éditeur de métriques envoie des demandes et la personnalisation de la fréquence à laquelle l'éditeur envoie des métriques. 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(); } }
Les personnalisations présentées dans l'extrait de code précédent ont les effets suivants.
-
La
cloudWatchClient
méthode vous permet de personnaliser le CloudWatch client utilisé pour envoyer les métriques. Dans cet exemple, nous utilisons une région différente de la région par défaut us-east-1 où le client envoie des métriques. Nous utilisons également un profil nommé différent, cloudwatch, dont les informations d'identification seront utilisées pour authentifier les demandes adressées à. CloudWatch Ces informations d'identification doivent être autorisées àcloudwatch:PutMetricData
. -
La
uploadFrequency
méthode vous permet de spécifier la fréquence à laquelle l'éditeur télécharge les CloudWatch métriques. La valeur par défaut est une fois par minute. -
La
maximumCallsPerUpload
méthode limite le nombre d'appels effectués par téléchargement. La valeur par défaut est illimitée. -
Par défaut, SDK for Java 2.x publie les métriques sous l'espace de noms
AwsSdk/JavaSdk2
. Vous pouvez utilisernamespace
cette méthode pour spécifier une valeur différente. -
Par défaut, SDK publie des statistiques récapitulatives. Les mesures récapitulatives comprennent la moyenne, le minimum, le maximum, la somme et le nombre d'échantillons. En spécifiant une ou plusieurs SDK métriques dans la
detailedMetrics
méthode, des SDK données supplémentaires sont publiées pour chaque métrique. Ces données supplémentaires permettent d'obtenir des statistiques percentiles, telles que p90 et p99, que vous pouvez interroger. CloudWatch Les métriques détaillées sont particulièrement utiles pour les métriques de latence telles queAPICallDuration
celles qui mesurent la end-to-end latence des demandes des SDK clients. Vous pouvez utiliser les champs de laCoreMetric
classe pour spécifier d'autres SDK métriques courantes.
Quand les statistiques sont-elles disponibles ?
Les métriques sont généralement disponibles dans les 5 à 10 minutes suivant leur émission par SDK for Java. Pour des up-to-date statistiques précises, vérifiez Cloudwatch au moins 10 minutes après avoir émis les métriques depuis vos applications Java.
Quelles informations sont collectées ?
La collecte de métriques inclut les éléments suivants :
-
Nombre de API demandes, y compris si elles aboutissent ou échouent
-
Informations sur les AWS services auxquels vous faites appel dans le cadre de vos API demandes, y compris les exceptions renvoyées
-
La durée des différentes opérations telles que le triage, la signature et les demandes HTTP
-
HTTPles métriques du client, telles que le nombre de connexions ouvertes, le nombre de demandes en attente et le nom du HTTP client utilisé
Note
Les indicateurs disponibles varient selon le HTTP client.
Pour une liste complète, consultez la section Mesures relatives aux clients du service.
Comment puis-je utiliser ces informations ?
Vous pouvez utiliser les métriques SDK collectées pour surveiller les clients du service dans votre application. Vous pouvez examiner les tendances générales d'utilisation, identifier les anomalies, examiner les exceptions renvoyées par les clients du service ou approfondir la compréhension d'un problème particulier. En utilisant Amazon CloudWatch, vous pouvez également créer des alarmes pour vous avertir dès que votre application atteint une condition que vous définissez.
Pour plus d'informations, consultez les sections Utilisation Amazon CloudWatch des métriques et Utilisation des Amazon CloudWatch alarmes dans le guide de Amazon CloudWatch l'utilisateur.