

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.

# Cambios en la publicación de métricas del SDK de la versión 1 a la versión 2
<a name="migration-metrics"></a>

En este tema se detallan los cambios en la publicación de métricas del SDK del lado del cliente desde la versión 1.x (v1) a la versión 2.x (v2) de. AWS SDK para Java

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

### Cambios en la arquitectura
<a name="migration-metrics-architecture"></a>

En la versión 1, la recopilación de métricas es una JVM-wide configuración global que se habilita con una propiedad del sistema. El SDK publica automáticamente todas las métricas recopiladas en CloudWatch. Solo hay un destino de métricas.

En la versión 2, la recopilación de métricas utiliza una [MetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/MetricPublisher.html)interfaz conectable que se conecta a los clientes o solicitudes de servicio individuales. El SDK ofrece tres implementaciones:
+ **[CloudWatchMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/cloudwatch/CloudWatchMetricPublisher.html)**: Agrega métricas y las carga periódicamente a. CloudWatch Ideal para aplicaciones de larga duración.
+ **[EmfMetricLoggingPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/emf/EmfMetricLoggingPublisher.html)**: Escribe las métricas como entradas de registro CloudWatch estructuradas en formato métrico integrado (EMF). Ideal para funciones Lambda y otros entornos de corta duración.
+ **[LoggingMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/LoggingMetricPublisher.html)**: Envía las métricas a la consola mediante el registro SLF4J. Ideal para el desarrollo y la depuración locales.

### Cambios de alcance
<a name="migration-metrics-scope"></a>

En la versión 1, al habilitar las métricas, se publican los datos de todos los clientes de AWS servicio de la JVM. En la versión 2, las métricas se controlan a nivel de cliente de servicio o a nivel de solicitud individual.

### Cambios en el tipo de métrica
<a name="migration-metrics-types"></a>

La versión 1 recopila tres categorías de métricas: métricas de AWS solicitudes, métricas de AWS servicio y métricas de máquinas (memoria de pila, recuento de subprocesos y descriptores de archivos abiertos).

La versión 2 se centra en las métricas de solicitudes y respuestas del SDK, como la duración de las llamadas a la API, la duración de la clasificación, la duración de las firmas y el recuento de reintentos. La v2 no recopila métricas de las máquinas, como la memoria acumulada, el recuento de subprocesos y los descriptores de archivos abiertos. Para seguir recopilando métricas de JVM CloudWatch, puede utilizar el [CloudWatch agente](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-JMX-metrics.html) con la recopilación de métricas de JMX.

## Cambios en las dependencias
<a name="migration-metrics-deps"></a>

La siguiente tabla muestra la dependencia de Maven y los cambios en el nombre de los paquetes entre la versión 1 y la versión 2.



| Cambio | v1 |   v2 | 
| --- | --- | --- | 
| dependencias 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>  | 
| Nombre del paquete | com.amazonaws.metrics | software.amazon.awssdk.metrics | 

1 [Última versión](https://central.sonatype.com/artifact/com.amazonaws/aws-java-sdk-bom). 2 [Última versión](https://central.sonatype.com/artifact/software.amazon.awssdk/bom).

El artefacto v2 depende del caso de uso, como se muestra en la siguiente tabla.



| Caso de uso | artifactId v2 | Versión mínima del SDK | 
| --- | --- | --- | 
| Long-running aplicaciones | cloudwatch-metric-publisher | 2.14.0 | 
| Funciones de Lambda | emf-metric-logging-publisher | 2.30.3 | 
| Desarrollo y depuración | No se necesita ninguna dependencia adicional (LoggingMetricPublisherse encuentra en el núcleo del SDK) | 2.14.0 | 

## Cambios en la API
<a name="migration-metrics-api"></a>

### Habilitar métricas de
<a name="migration-metrics-enabling"></a>

En la siguiente tabla, se compara cómo habilitar las métricas en las versiones 1 y 2 para distintos casos de uso.



| Caso de uso | v1 |   v2 | 
| --- | --- | --- | 
| Habilite las métricas a nivel mundial | Agregue una propiedad del sistema JVM:<pre>-Dcom.amazonaws.sdk.enableDefaultMetrics=credentialFile=/path/aws.properties</pre> | No admitido. Adjunte MetricPublisher a cada cliente de servicio. | 
| Habilite las métricas en Amazon EC2 sin un archivo de credenciales |  <pre>-Dcom.amazonaws.sdk.enableDefaultMetrics</pre>  | No aplicable. La versión 2 utiliza su resolución de credenciales estándar. | 
| Habilite las métricas para un cliente de servicio | No admitido. Las métricas son globales o inactivas. |  <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>  | 
| Habilita las métricas para una sola solicitud | No admitido. |  <pre>ddb.listTables(ListTablesRequest.builder()<br />    .overrideConfiguration(c -> c<br />        .addMetricPublisher(metricsPub))<br />    .build());</pre>  | 

### Configurar el CloudWatch destino
<a name="migration-metrics-cw-config"></a>

La siguiente tabla muestra cómo configurar el CloudWatch destino en la versión 1 en comparación con la versión 2.



| Caso de uso | v1 |   v2 | 
| --- | --- | --- | 
| Defina CloudWatch la región | Atributo de propiedad 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>  | 
| Defina la frecuencia de carga | No se puede configurar. Se carga aproximadamente una vez por minuto. |  <pre>CloudWatchMetricPublisher.builder()<br />    .uploadFrequency(Duration.ofMinutes(5))<br />    .build();</pre>  | 
| Establece el espacio de nombres CloudWatch  | Fijado a. AWSSDK/Java | El valor predeterminado es `AwsSdk/JavaSdk2`. Configurable mediante:<pre>CloudWatchMetricPublisher.builder()<br />    .namespace("MyApp/SDK")<br />    .build();</pre> Si tiene CloudWatch paneles o alarmas existentes que hacen referencia al espacio de nombres de la versión 1`AWSSDK/Java`, `.namespace("AWSSDK/Java")` configúrelos para preservar la continuidad.  | 
| Excluya las métricas de la máquina | Atributo de propiedad del sistema:<pre>-Dcom.amazonaws.sdk.enableDefaultMetrics=excludeMachineMetrics</pre> | No aplicable. La versión 2 no recopila las métricas de la máquina. | 

### Métricas para funciones Lambda
<a name="migration-metrics-lambda"></a>

La versión 1 no tiene una solución de Lambda-specific métricas. En la versión 2, `EmfMetricLoggingPublisher` utilícela para escribir las métricas como entradas de registro CloudWatch estructuradas en formato métrico integrado (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**  
En los entornos Lambda, `logGroupName` se detecta automáticamente desde la `AWS_LAMBDA_LOG_GROUP_NAME` variable de entorno. En entornos que no son de Lambda, como Amazon ECS o Amazon EC2, debe `logGroupName` configurarlo de forma explícita en el generador.

### Métricas para el desarrollo y la depuración
<a name="migration-metrics-debugging"></a>

La versión 1 no tiene una salida de métricas basada en una consola. En la versión 2, utilice`LoggingMetricPublisher`:

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

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

### Administración del ciclo de vida
<a name="migration-metrics-lifecycle"></a>

En la versión 1, la recopilación de métricas se ejecuta durante toda la vida útil de la JVM una vez establecida la propiedad del sistema. En la versión 2, debe gestionar el ciclo de vida de`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**  
Llame `close` a la `MetricPublisher` instancia cuando ya no la necesite. Si no lo hace, se pueden filtrar los descriptores del hilo o del archivo.

### Permisos necesarios
<a name="migration-metrics-permissions"></a>

En la siguiente tabla se enumeran los permisos de IAM necesarios para cada publicador de métricas.



| Tipo de permiso | v1 | v2 (CloudWatchMetricPublisher) | v2 (EmfMetricLoggingPublisher) | 
| --- | --- | --- | --- | 
| Permiso de IAM | cloudwatch:PutMetricData | cloudwatch:PutMetricData | logs:PutLogEvents | 

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

El [cliente AWS CRT-based S3](crt-based-s3-client.md) no admite actualmente la recopilación de métricas del SDK en la versión 2.

## Recursos adicionales
<a name="migration-metrics-resources"></a>
+ [documentación de métricas de la versión 1](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/generating-sdk-metrics.html)
+ [Publique las métricas del SDK desde AWS SDK for Java 2.x](metrics.md)
+ [Publique métricas del SDK de aplicaciones de larga ejecución](metric-pub-impl-cwmp.md)
+ [Publica métricas del SDK para las funciones AWS Lambda](metric-pub-impl-emf.md)
+ [Envía las métricas del SDK a la consola](metric-pub-impl-logging.md)
+ [Referencia completa de métricas](metrics-list.md)