

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.

# Modifications apportées à la publication des métriques du SDK de la version 1 à la version 2
<a name="migration-metrics"></a>

Cette rubrique détaille les modifications apportées à la publication des métriques du SDK côté client entre la version 1.x (v1) et la version 2.x (v2) du. AWS SDK pour Java

## High-level modifications
<a name="migration-metrics-high-level"></a>

### Changements d'architecture
<a name="migration-metrics-architecture"></a>

Dans la version 1, la collecte de métriques est un JVM-wide paramètre global que vous activez à l'aide d'une propriété système. Le SDK publie automatiquement toutes les métriques collectées sur CloudWatch. Il n'existe qu'une seule destination pour les métriques.

Dans la version 2, la collecte de métriques utilise une [MetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/MetricPublisher.html)interface enfichable que vous associez à des clients ou à des demandes de service individuels. Le SDK propose trois implémentations :
+ **[CloudWatchMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/cloudwatch/CloudWatchMetricPublisher.html)**: agrège les statistiques et les télécharge périodiquement vers. CloudWatch Idéal pour les applications de longue durée.
+ **[EmfMetricLoggingPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/emf/EmfMetricLoggingPublisher.html)**: écrit les métriques sous forme d'entrées de journal structurées au format EMF ( CloudWatch Embedded Metric Format). Idéal pour les fonctions Lambda et autres environnements de courte durée.
+ **[LoggingMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/LoggingMetricPublisher.html)**: affiche les métriques sur la console via la journalisation SLF4J. Idéal pour le développement local et le débogage.

### Modifications du champ
<a name="migration-metrics-scope"></a>

Dans la version 1, l'activation des métriques publie les données de tous les clients de AWS service de la JVM. Dans la version 2, vous contrôlez les métriques au niveau du client de service ou au niveau des demandes individuelles.

### Changements de type de métrique
<a name="migration-metrics-types"></a>

v1 collecte trois catégories de métriques : les métriques de AWS demande, les métriques de AWS service et les métriques de machine (mémoire de segment, nombre de threads, descripteurs de fichiers ouverts).

La v2 se concentre sur les métriques de demande et de réponse du SDK, telles que la durée des appels d'API, la durée du marshaling, la durée de signature et le nombre de tentatives. La v2 ne collecte pas les métriques de la machine telles que la mémoire en tas, le nombre de threads et les descripteurs de fichiers ouverts. Pour continuer à collecter des métriques JVM dans CloudWatch, vous pouvez utiliser l'[CloudWatch agent avec la collecte de métriques JMX](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-JMX-metrics.html).

## Modifications des dépendances
<a name="migration-metrics-deps"></a>

Le tableau suivant montre la dépendance Maven et les changements de nom de package entre la v1 et la v2.



| Modifier | v1 |   v2 | 
| --- | --- | --- | 
| Dépendances de Maven |  <pre><dependencyManagement><br />    <dependencies><br />        <dependency><br />            <groupId>com.amazonaws</groupId><br />            <artifactId>aws-java-sdk-bom</artifactId><br />            <version>{{1.12.x1}}</version><br />            <type>pom</type><br />            <scope>import</scope><br />        </dependency><br />    </dependencies><br /></dependencyManagement><br /><dependencies><br />    <dependency><br />        <groupId>com.amazonaws</groupId><br />        <artifactId>aws-java-sdk-cloudwatchmetrics</artifactId><br />    </dependency><br /></dependencies></pre>  |  <pre><dependencyManagement><br />    <dependencies><br />        <dependency><br />            <groupId>software.amazon.awssdk</groupId><br />            <artifactId>bom</artifactId><br />            <version>{{2.x.x2}}</version><br />            <type>pom</type><br />            <scope>import</scope><br />        </dependency><br />    </dependencies><br /></dependencyManagement><br /><dependencies><br />    <dependency><br />        <groupId>software.amazon.awssdk</groupId><br />        <artifactId>cloudwatch-metric-publisher</artifactId><br />    </dependency><br /></dependencies></pre>  | 
| Nom du package | com.amazonaws.metrics | software.amazon.awssdk.metrics | 

1 [Dernière version](https://central.sonatype.com/artifact/com.amazonaws/aws-java-sdk-bom). 2 [Dernière version](https://central.sonatype.com/artifact/software.amazon.awssdk/bom).

L'artefact v2 dépend du cas d'utilisation, comme indiqué dans le tableau suivant.



| Cas d’utilisation | Artifactid v2 | Version minimale du SDK | 
| --- | --- | --- | 
| Long-running applications | cloudwatch-metric-publisher | 2.14.0 | 
| Fonctions Lambda | emf-metric-logging-publisher | 2,30,3 | 
| Développement et débogage | Aucune dépendance supplémentaire n'est nécessaire (LoggingMetricPublisherse trouve dans le noyau du SDK) | 2.14.0 | 

## Modifications de l'API
<a name="migration-metrics-api"></a>

### Activation des métriques
<a name="migration-metrics-enabling"></a>

Le tableau suivant compare la manière d'activer les métriques dans les versions 1 et 2 pour différents cas d'utilisation.



| Cas d’utilisation | v1 |   v2 | 
| --- | --- | --- | 
| Activez les métriques au niveau mondial | Ajoutez une propriété de système JVM :<pre>-Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties</pre> | Non pris en charge. Attachez-en un MetricPublisher à chaque client de service. | 
| Activer les métriques sur Amazon EC2 sans fichier d'informations d'identification |  <pre>-Dcom.amazonaws.sdk.enableDefaultMetrics</pre>  | Non applicable. La v2 utilise sa résolution d'identification standard. | 
| Activer les métriques pour un client de service | Non pris en charge. Les métriques sont globales ou non. |  <pre>MetricPublisher metricsPub =<br />    CloudWatchMetricPublisher.create();<br /><br />DynamoDbClient ddb = DynamoDbClient.builder()<br />    .overrideConfiguration(c -> c<br />        .addMetricPublisher(metricsPub))<br />    .build();<br /><br />// ... use the client ...<br /><br />metricsPub.close();<br />ddb.close();</pre>  | 
| Activez les métriques pour une seule demande | Non pris en charge. |  <pre>ddb.listTables(ListTablesRequest.builder()<br />    .overrideConfiguration(c -> c<br />        .addMetricPublisher(metricsPub))<br />    .build());</pre>  | 

### Configuration de la CloudWatch destination
<a name="migration-metrics-cw-config"></a>

Le tableau suivant montre comment configurer la CloudWatch destination dans la version v1 par rapport à la version v2.



| Cas d’utilisation | v1 |   v2 | 
| --- | --- | --- | 
| Définir CloudWatch la région | Attribut de propriété du système :<pre>-Dcom.amazonaws.sdk.enableDefaultMetrics=cloudwatchRegion={{us-west-2}}</pre> |  <pre>CloudWatchMetricPublisher.builder()<br />    .cloudWatchClient(<br />        CloudWatchAsyncClient.builder()<br />            .region(Region.US_WEST_2)<br />            .build())<br />    .build();</pre>  | 
| Définir la fréquence de téléchargement | Non configurable. Télécharge environ une fois par minute. |  <pre>CloudWatchMetricPublisher.builder()<br />    .uploadFrequency(Duration.ofMinutes(5))<br />    .build();</pre>  | 
| Définir l'espace CloudWatch de noms | Fixé àAWSSDK/Java. | La valeur par défaut est `AwsSdk/JavaSdk2` . Configurable via :<pre>CloudWatchMetricPublisher.builder()<br />    .namespace("MyApp/SDK")<br />    .build();</pre> Si vous disposez déjà de CloudWatch tableaux de bord ou d'alarmes faisant référence à l'espace de noms v1`AWSSDK/Java`, configurez-le `.namespace("AWSSDK/Java")` pour préserver la continuité.  | 
| Exclure les métriques des machines | Attribut de propriété du système :<pre>-Dcom.amazonaws.sdk.enableDefaultMetrics=excludeMachineMetrics</pre> | Non applicable. La v2 ne collecte pas les métriques de la machine. | 

### Métriques pour les fonctions Lambda
<a name="migration-metrics-lambda"></a>

v1 n'a pas de solution de Lambda-specific métriques. Dans la version 2, utilisez celui `EmfMetricLoggingPublisher` qui écrit les métriques sous forme d'entrées de journal structurées au format EMF ( CloudWatch Embedded Metric Format) :

```
// 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();
```

**Note**  
Dans les environnements Lambda, le `logGroupName` est détecté automatiquement à partir de la `AWS_LAMBDA_LOG_GROUP_NAME` variable d'environnement. Dans les environnements autres que Lambda tels qu'Amazon ECS ou Amazon EC2, vous devez `logGroupName` définir explicitement le générateur.

### Métriques pour le développement et le débogage
<a name="migration-metrics-debugging"></a>

v1 n'a pas de sortie de métriques basée sur la console. Dans la version 2, utilisez `LoggingMetricPublisher` :

```
// v2 - Console output for debugging
MetricPublisher loggingPublisher = LoggingMetricPublisher.create();

S3Client s3 = S3Client.builder()
        .overrideConfiguration(c -> c.addMetricPublisher(loggingPublisher))
        .build();
```

### Gestion du cycle de vie
<a name="migration-metrics-lifecycle"></a>

Dans la version 1, la collecte des métriques s'exécute pendant toute la durée de vie de la machine virtuelle Java une fois que la propriété du système est définie. Dans la version 2, vous devez gérer le cycle de vie des `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();
```

**Important**  
Appelez `close` l'`MetricPublisher`instance lorsqu'elle n'est plus nécessaire. Si vous ne le faites pas, cela peut entraîner des fuites de thread ou de descripteur de fichier.

### Autorisations requises
<a name="migration-metrics-permissions"></a>

Le tableau suivant répertorie les autorisations IAM requises pour chaque éditeur de mesures.



| Type d'autorisation | v1 | v2 (CloudWatchMetricPublisher) | v2 (EmfMetricLoggingPublisher) | 
| --- | --- | --- | --- | 
| Autorisation IAM | cloudwatch:PutMetricData | cloudwatch:PutMetricData | logs:PutLogEvents | 

## Limitations
<a name="migration-metrics-limitations"></a>

Le [client AWS CRT-based S3](crt-based-s3-client.md) ne prend actuellement pas en charge la collecte des métriques du SDK dans la version v2.

## Ressources supplémentaires
<a name="migration-metrics-resources"></a>
+ [documentation sur les métriques v1](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/generating-sdk-metrics.html)
+ [Publiez les métriques du SDK à partir du AWS SDK for Java 2.x](metrics.md)
+ [Publiez des métriques du SDK à partir d'applications de longue durée](metric-pub-impl-cwmp.md)
+ [Publier les métriques du SDK pour les fonctions AWS Lambda](metric-pub-impl-emf.md)
+ [Afficher les métriques du SDK sur la console](metric-pub-impl-logging.md)
+ [Référence complète sur les métriques](metrics-list.md)