

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
<a name="migration-metrics"></a>

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
<a name="migration-metrics-high-level"></a>

### Modifiche all'architettura
<a name="migration-metrics-architecture"></a>

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'[MetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/MetricPublisher.html)interfaccia collegabile che si collega a singoli client o richieste di servizio. L'SDK fornisce tre implementazioni:
+ **[CloudWatchMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/cloudwatch/CloudWatchMetricPublisher.html)**: aggrega e carica periodicamente le metriche su. CloudWatch Ideale per applicazioni di lunga durata.
+ **[EmfMetricLoggingPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/emf/EmfMetricLoggingPublisher.html)**: 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](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/LoggingMetricPublisher.html)**: invia le metriche alla console tramite la registrazione SLF4J. Ideale per lo sviluppo e il debug locali.

### Modifiche all'ambito
<a name="migration-metrics-scope"></a>

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
<a name="migration-metrics-types"></a>

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 ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-JMX-metrics.html)

## Modifiche nelle dipendenze
<a name="migration-metrics-deps"></a>

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



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

1 Ultima versione[.](https://central.sonatype.com/artifact/com.amazonaws/aws-java-sdk-bom) 2 [Ultima versione](https://central.sonatype.com/artifact/software.amazon.awssdk/bom).

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
<a name="migration-metrics-api"></a>

### Abilitazione dei parametri di
<a name="migration-metrics-enabling"></a>

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:<pre>-Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties</pre> | Non supportato. Allega un MetricPublisher a ogni client di servizio. | 
| Abilita i parametri su Amazon EC2 senza file di credenziali |  <pre>-Dcom.amazonaws.sdk.enableDefaultMetrics</pre>  | 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. |  <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>  | 
| Abilita le metriche per una singola richiesta | Non supportato. |  <pre>ddb.listTables(ListTablesRequest.builder()<br />    .overrideConfiguration(c -> c<br />        .addMetricPublisher(metricsPub))<br />    .build());</pre>  | 

### Configurazione della destinazione CloudWatch
<a name="migration-metrics-cw-config"></a>

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:<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>  | 
| Imposta la frequenza di caricamento | Non configurabile Caricamenti all'incirca una volta al minuto. |  <pre>CloudWatchMetricPublisher.builder()<br />    .uploadFrequency(Duration.ofMinutes(5))<br />    .build();</pre>  | 
|  CloudWatch Imposta lo spazio dei nomi | Risolto a. AWSSDK/Java | L’impostazione predefinita è `AwsSdk/JavaSdk2`. Configurabile tramite:<pre>CloudWatchMetricPublisher.builder()<br />    .namespace("MyApp/SDK")<br />    .build();</pre> 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:<pre>-Dcom.amazonaws.sdk.enableDefaultMetrics=excludeMachineMetrics</pre> | Non applicabile. v2 non raccoglie le metriche delle macchine. | 

### Metriche per le funzioni Lambda
<a name="migration-metrics-lambda"></a>

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
<a name="migration-metrics-debugging"></a>

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
<a name="migration-metrics-lifecycle"></a>

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'`MetricPublisher`istanza quando non è più necessaria. In caso contrario, si possono verificare perdite di thread o di descrittori di file.

### Autorizzazioni richieste
<a name="migration-metrics-permissions"></a>

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
<a name="migration-metrics-limitations"></a>

Il [client AWS CRT-based S3](crt-based-s3-client.md) attualmente non supporta la raccolta di metriche SDK nella v2.

## Risorse aggiuntive
<a name="migration-metrics-resources"></a>
+ [documentazione sulle metriche v1](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/generating-sdk-metrics.html)
+ [Pubblica le metriche SDK dal AWS SDK for Java 2.x](metrics.md)
+ [Pubblica le metriche SDK da applicazioni a esecuzione prolungata](metric-pub-impl-cwmp.md)
+ [Pubblica le metriche SDK per le funzioni AWS Lambda](metric-pub-impl-emf.md)
+ [Invia le metriche SDK alla console](metric-pub-impl-logging.md)
+ [Riferimento completo alle metriche](metrics-list.md)