

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.

# Publique las métricas del SDK desde AWS SDK for Java 2.x
<a name="metrics"></a>

Con él, AWS SDK for Java 2.x puede recopilar métricas sobre los clientes y las solicitudes de servicio de su aplicación, analizar el resultado en Amazon CloudWatch Logs y, a continuación, actuar en consecuencia.

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

## Introducción a las métricas de SDK
<a name="getting-started-with-metrics"></a>

Para habilitar la recopilación de métricas en la aplicación, elija la implementación adecuada de la interfaz de `[MetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/MetricPublisher.html)` en función del caso de uso y siga las instrucciones de configuración detalladas:

**Para aplicaciones de larga duración:**
+ Uso de `[CloudWatchMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/cloudwatch/CloudWatchMetricPublisher.html)`
+ Consulte [Publicación de métricas del SDK desde aplicaciones de ejecución prolongada](metric-pub-impl-cwmp.md) para ver instrucciones de configuración completas, ejemplos de código y opciones de configuración.

**Para AWS Lambda funciones:**
+ Uso de `[EmfMetricLoggingPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/emf/EmfMetricLoggingPublisher.html)`
+ Consulte [Publicar métricas del SDK para ver AWS Lambda las funciones](metric-pub-impl-emf.md) para obtener instrucciones de configuración completas, las dependencias y la configuración específica de Lambda.

**Para resolución de problemas y salida de la consola:**
+ Uso de `[LoggingMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/LoggingMetricPublisher.html)`
+ Consulte [Envío de métricas del SDK a la consola para desarrollo y depuración](metric-pub-impl-logging.md) para ver instrucciones de configuración, opciones de formato y ejemplos de desarrollo local y solución de problemas.

## Vista previa de implementación rápida
<a name="quick-implementation-preview"></a>

Así se habilitan las métricas para cada caso de uso:

**Aplicaciones de ejecución prolongada:**

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

**Funciones Lambda:**

```
EmfMetricLoggingPublisher emfPublisher = EmfMetricLoggingPublisher.builder()
    .namespace("MyApp")
    .build();
DynamoDbClient dynamoDb = DynamoDbClient.builder()
    .overrideConfiguration(c -> c.addMetricPublisher(emfPublisher))
    .build();
```

**Desarrollo y depuración:**

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

## Limitación de métricas del cliente S3 basado en AWS CRT
<a name="metrics-using-s3-crt-based-client"></a>

El [cliente de S3 basado en AWS CRT](crt-based-s3-client.md) no admite actualmente la recopilación de métricas del SDK. El creador de una instancia de cliente S3 AWS basada en CRT no proporciona métodos para configurar los publicadores de métricas. [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3CrtAsyncClientBuilder.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3CrtAsyncClientBuilder.html)

## ¿Cuándo están disponibles las métricas?
<a name="when-are-metrics-available"></a>

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

## ¿Qué información se recopila?
<a name="what-information-is-collected"></a>

La recopilación de métricas incluye lo siguiente:
+ Número de solicitudes de API, se hayan realizado correctamente o no
+ Información sobre a Servicios de AWS qué llamas en tus solicitudes de API, incluidas las excepciones devueltas
+ La duración de varias operaciones, como la serialización, la firma y las solicitudes HTTP
+ Métricas del cliente HTTP, como el número de conexiones abiertas, el número de solicitudes pendientes y el nombre del cliente HTTP utilizado

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

Para ver una lista completa, consulte [Métricas de los clientes de servicio](metrics-list.md).

## ¿Cómo puedo usar esta información?
<a name="how-can-i-use-this-information"></a>

Puede utilizar las métricas que recopila el SDK para monitorizar 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. Con Amazon CloudWatch Logs, también puede crear alarmas que le notifiquen en cuanto su aplicación alcance una condición que usted defina.

Para obtener más información, consulte [Uso de métricas de Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) y [Uso de alarmas de Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) en la [Guía del usuario de Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).

# Publique métricas del SDK de aplicaciones de larga ejecución mediante el AWS SDK for Java 2.x
<a name="metric-pub-impl-cwmp"></a>

Debido a que la `[CloudWatchMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/cloudwatch/CloudWatchMetricPublisher.html)` implementación agrega y carga periódicamente las métricas a Amazon CloudWatch con un retraso, su uso es más adecuado para aplicaciones de larga duración. 

La configuración predeterminada del editor de métricas tiene por objeto minimizar el uso y el CloudWatch coste de la memoria y, al mismo tiempo, proporcionar una cantidad útil de información sobre los datos de las métricas.

## Configuración
<a name="prerequisitesmetrics"></a>

Para poder habilitar y utilizar métricas utilizando `CloudWatchMetricPublisher`, siga estos pasos.

### Paso 1: agregación de dependencia requerida
<a name="cwmp-set-up-deps"></a>

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 para Java.

Incluya el artifactId `cloudwatch-metric-publisher` con el número de versión `2.14.0` o posterior en las dependencias del proyecto.

Por ejemplo:

```
<project>
  <dependencyManagement>
   <dependencies>
      <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>[2.30.11](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)</version>  <!-- Navigate the link to see the latest 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>
```

### Paso 2: configuración de permisos requeridos
<a name="cwmp-set-up-perms"></a>

Habilite los permisos de `cloudwatch:PutMetricData` para la identidad de IAM utilizada por el publicador de métricas con el fin de permitir que el SDK para Java escriba métricas.

## Habilitar métricas para una solicitud específica
<a name="enable-metrics-for-a-specific-request"></a>

La clase siguiente muestra cómo habilitar el publicador de CloudWatch métricas para una solicitud a 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 a `close` en la instancia de `[MetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/MetricPublisher.html)` cuando el cliente de servicio ya no esté en uso. En caso contrario, pueden producirse filtraciones de subprocesos o descriptores de archivo.

## Habilitación de métricas para un cliente de servicio específico
<a name="enable-metrics-for-a-specific-service-client"></a>

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 un publicador de métricas CloudWatch
<a name="customize-metrics-publisher"></a>

En la siguiente clase se muestra cómo utilizar 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 el editor 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 de *us-east-1* a la que el cliente envía las métricas. También utilizamos un perfil con un nombre diferente, *cloudwatch*, cuyas credenciales se utilizarán para autenticar las solicitudes. CloudWatch Estas credenciales deben tener permisos para `cloudwatch:PutMetricData`.
+ El `uploadFrequency` método te permite especificar la frecuencia con la que el publicador de las métricas las carga. CloudWatch El valor predeterminado es una vez por minuto.
+ El método `maximumCallsPerUpload` limita el número de llamadas realizadas por carga. El valor predeterminado es ilimitado.
+ De forma predeterminada, el SDK para Java 2.x publica las métricas en el espacio de nombres `AwsSdk/JavaSdk2`. Puede utilizar el método `namespace` para especificar un valor diferente.
+ De forma predeterminada, el SDK publica métricas resumidas. Las métricas resumidas se componen de media, mínimo, máximo, suma y recuento de muestras. Al especificar una o más métricas del SDK en el método `detailedMetrics`, el 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 latencia`APICallDuration`, como las que miden la end-to-end latencia de las solicitudes de los clientes del SDK. Puede usar campos de la clase `[CoreMetric](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/metrics/CoreMetric.html)` para especificar otras métricas comunes del SDK. 

**Próximos pasos:** Si también trabaja con funciones de Lambda, consulte [Publicar métricas del SDK para AWS Lambda funciones para la publicación de métricas](metric-pub-impl-emf.md) basadas en EMF.

# Publique las métricas del SDK para las funciones mediante el AWS Lambda AWS SDK for Java 2.x
<a name="metric-pub-impl-emf"></a>

Dado que las funciones de Lambda suelen ejecutarse entre milisegundos y minutos, cualquier retraso en el envío de las métricas, como ocurre con `CloudWatchMetricPublisher`, supone un riesgo de pérdida de datos. 

`[EmfMetricLoggingPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/emf/EmfMetricLoggingPublisher.html)`proporciona un enfoque más adecuado al escribir inmediatamente las métricas como entradas de registro estructuradas en [formato métrico CloudWatch integrado (EMF)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html). `EmfMetricLoggingPublisher`funciona en entornos de ejecución que tienen una integración integrada con Amazon CloudWatch Logs, como AWS Lambda Amazon Elastic Container Service.

## Configuración
<a name="metric-pub-impl-emf-set-up"></a>

Para poder habilitar y utilizar métricas utilizando `EmfMetricLoggingPublisher`, siga estos pasos.

### Paso 1: agregación de dependencia requerida
<a name="metric-pub-impl-emf-set-up-deps"></a>

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

Incluya el artifactId `emf-metric-logging-publisher` con el número de versión `2.30.3` o posterior en las dependencias del proyecto.

Por ejemplo:

```
<project>
  <dependencyManagement>
   <dependencies>
      <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>[2.30.11](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)</version>  <!-- Navigate the link to see the latest version. -->
        <type>pom</type>
        <scope>import</scope>
      </dependency>
   </dependencies>
  </dependencyManagement>
  <dependencies>
   <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>emf-metric-logging-publisher</artifactId>
   </dependency>
  </dependencies>
</project>
```

### Paso 2: configuración de permisos requeridos
<a name="metric-pub-impl-emf-set-up-perm"></a>

Habilite permisos de `logs:PutLogEvents` para la identidad de IAM utilizada por el publicador de métricas con el fin de permitir que el SDK para Java escriba registros con formato EMF.

### Paso 3: configuración del registro
<a name="metric-pub-impl-emf-set-up-logger"></a>

Para garantizar una recopilación de métricas adecuada, configure el registro para enviar a la consola en el nivel de `INFO` o un nivel inferior (por ejemplo, `DEBUG`). En el archivo `log4j2.xml`:

```
<Loggers>
  <Root level="WARN">
   <AppenderRef ref="ConsoleAppender"/>
  </Root>
  <Logger name="software.amazon.awssdk.metrics.publishers.emf.EmfMetricLoggingPublisher" level="INFO" />
</Loggers>
```

Consulte el [tema de registro](logging-slf4j.md) de esta guía para obtener más información sobre cómo configurar un archivo `log4j2.xml`. 

## Configure y utilice `EmfMetricLoggingPublisher`
<a name="metric-pub-impl-emf-use"></a>

La siguiente clase de función de Lambda primero crea y configura una instancia de `EmfMetricLoggingPublisher` y, a continuación, la utiliza con un cliente de servicio de Amazon DynamoDB:

```
public class GameIdHandler implements RequestHandler<Map<String, String>, String> {
    private final EmfMetricLoggingPublisher emfPublisher;
    private final DynamoDbClient dynamoDb;

    public GameIdHandler() {
        // Build the publisher. 
        this.emfPublisher = EmfMetricLoggingPublisher.builder()
                .namespace("namespace")
                .dimensions(CoreMetric.SERVICE_ID,
                        CoreMetric.OPERATION_NAME)
                .build();
        // Add the publisher to the client.
        this.dynamoDb = DynamoDbClient.builder()
                .overrideConfiguration(c -> c.addMetricPublisher(emfPublisher))
                .region(Region.of(System.getenv("AWS_REGION")))
                .build();
    }

    @Override
    public String handleRequest(Map<String, String> event, Context context) {
        Map<String, AttributeValue> gameItem = new HashMap<>();

        gameItem.put("gameId", AttributeValue.builder().s(event.get("id")).build());

        PutItemRequest putItemRequest = PutItemRequest.builder()
                .tableName("games")
                .item(gameItem)
                .build();

        dynamoDb.putItem(putItemRequest);

        return "Request handled";
    }
}
```

Cuando el cliente DynamoDB ejecuta `putItem` el método, publica automáticamente las métricas en CloudWatch un flujo de registro en formato EMF. 

### Ejemplo de evento de registro de EMF
<a name="emf-logged-output"></a>

Por ejemplo, si envía el siguiente evento a la función GameHandler Lambda con el registro configurado como se muestra anteriormente:

```
{
  "id": "23456"
}
```

Cuando la función procese el evento, encontrará dos eventos de registro similares al siguiente ejemplo. El objeto JSON del segundo evento contiene los datos de métricas del SDK de Java para la operación `PutItem` en DynamoDB.

Cuando CloudWatch recibe un evento de registro en formato EMF, analiza automáticamente el JSON estructurado para extraer datos métricos. CloudWatch a continuación, crea las métricas correspondientes mientras almacena la entrada de registro original en CloudWatch Logs.

```
2025-07-11 15:58:30 [main] INFO  org.example.GameIdHandler:39 - Received map: {id=23456}

2025-07-11 15:58:34 [main] INFO  software.amazon.awssdk.metrics.publishers.emf.EmfMetricLoggingPublisher:43 - 
{
    "_aws": {
        "Timestamp": 1752249513975,
        "LogGroupName": "/aws/lambda/GameId",
        "CloudWatchMetrics": [
            {
                "Namespace": "namespace",
                "Dimensions": [
                    [
                        "OperationName",
                        "ServiceId"
                    ]
                ],
                "Metrics": [
                    {
                        "Name": "AvailableConcurrency"
                    },
                    {
                        "Name": "PendingConcurrencyAcquires"
                    },
                    {
                        "Name": "ServiceCallDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "EndpointResolveDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "MaxConcurrency"
                    },
                    {
                        "Name": "BackoffDelayDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "MarshallingDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "LeasedConcurrency"
                    },
                    {
                        "Name": "SigningDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "ConcurrencyAcquireDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "ApiCallSuccessful"
                    },
                    {
                        "Name": "RetryCount"
                    },
                    {
                        "Name": "UnmarshallingDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "ApiCallDuration",
                        "Unit": "Milliseconds"
                    },
                    {
                        "Name": "CredentialsFetchDuration",
                        "Unit": "Milliseconds"
                    }
                ]
            }
        ]
    },
    "AvailableConcurrency": 0,
    "PendingConcurrencyAcquires": 0,
    "OperationName": "PutItem",
    "ServiceCallDuration": 1339,
    "EndpointResolveDuration": 81,
    "MaxConcurrency": 50,
    "BackoffDelayDuration": 0,
    "ServiceId": "DynamoDB",
    "MarshallingDuration": 181,
    "LeasedConcurrency": 1,
    "SigningDuration": 184,
    "ConcurrencyAcquireDuration": 83,
    "ApiCallSuccessful": 1,
    "RetryCount": 0,
    "UnmarshallingDuration": 85,
    "ApiCallDuration": 1880,
    "CredentialsFetchDuration": 138
}
```

La [documentación de la API](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/publishers/emf/EmfMetricLoggingPublisher.Builder.html) para `EmfMetricLoggingPublisher.Builder` muestra las opciones de configuración que puede utilizar.

También puede habilitar el registro de métricas de EMF para una sola solicitud, como [se muestra en el CloudWatchMetricPublisher](metric-pub-impl-cwmp.md#enable-metrics-for-a-specific-request).

**Próximos pasos:** Para aplicaciones de ejecución prolongada, consulte [Publicar métricas del SDK desde aplicaciones de ejecución prolongada](metric-pub-impl-cwmp.md) para publicar métricas CloudWatch basadas en datos.

# Envía las métricas del SDK a la consola mediante AWS SDK for Java 2.x
<a name="metric-pub-impl-logging"></a>

La implementación de `[LoggingMetricPublisher](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/metrics/LoggingMetricPublisher.html)` envía métricas directamente a la consola o los archivos de registro de la aplicación. Este enfoque es ideal para el desarrollo, la depuración y la comprensión de las métricas que recopila el SDK sin necesidad de servicios externos como Amazon CloudWatch.

A diferencia de `CloudWatchMetricPublisher` y `EmfMetricLoggingPublisher`, `LoggingMetricPublisher` proporciona resultados inmediatos sin demoras ni dependencias externas. Por ello resulta perfecto en escenarios de desarrollo local y solución de problemas.

## ¿Cuándo usarlo LoggingMetricPublisher
<a name="logging-metric-publisher-when-to-use"></a>

Use `LoggingMetricPublisher` cuando necesite:
+ Depuración de la recopilación de métricas durante el desarrollo
+ Explicación de las métricas que recopila el SDK para operaciones
+ Solución de problemas de rendimiento localmente
+ Prueba de recopilación de métricas sin dependencias de servicios externos
+ Visualización de métricas inmediatamente en la consola o los archivos de registro

**nota**  
No se recomienda `LoggingMetricPublisher` para entornos de producción en los que se necesiten capacidades de almacenamiento persistente y análisis de métricas.

## Configuración del registro de la consola para métricas
<a name="logging-metric-publisher-setup"></a>

SI desea ver el resultado de `LoggingMetricPublisher`, configure el marco de registro para mostrar mensajes de nivel de `INFO`. La siguiente configuración de `log4j2.xml` garantiza que las métricas aparezcan en la consola:

```
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="ConsoleAppender"/>
        </Root>
        <!-- Ensure LoggingMetricPublisher output appears. -->
        <Logger name="software.amazon.awssdk.metrics.LoggingMetricPublisher" level="INFO" />
    </Loggers>
</Configuration>
```

Esta configuración indica al SDK que envíe las métricas a la consola en el nivel de `INFO`. La configuración del registrador `LoggingMetricPublisher` garantiza que la salida de las métricas aparezca incluso aunque el registrador raíz utilice un nivel superior como `WARN` o `ERROR`.

## Habilitación de métricas de la consola para un cliente de servicio
<a name="logging-metric-publisher-basic-usage"></a>

En el siguiente ejemplo se muestra cómo crear un `LoggingMetricPublisher` y utilizarlo con un cliente de Amazon Simple Storage Service:

```
import software.amazon.awssdk.metrics.LoggingMetricPublisher;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;

// Create a LoggingMetricPublisher with default settings.
MetricPublisher metricPublisher = LoggingMetricPublisher.create();

// Add the publisher to your service client.
S3Client s3Client = S3Client.builder()
    .region(Region.US_EAST_1)
    .overrideConfiguration(config -> config.addMetricPublisher(metricPublisher))
    .build();

// Make requests - metrics will appear in your console.
s3Client.listBuckets();

// Clean up resources.
metricPublisher.close();
s3Client.close();
```

## Elección del formato de salida de la métrica
<a name="logging-metric-publisher-formatting-options"></a>

`LoggingMetricPublisher` admite dos formatos de salida:
+ **Formato PLAIN (predeterminado):** genera métricas como entradas compactas de una sola línea
+ **Formato PRETTY:** genera métricas en un formato multilínea legible por humanos

En el siguiente ejemplo se muestra cómo utilizar formato PRETTY para facilitar la lectura durante el desarrollo:

```
import org.slf4j.event.Level;
import software.amazon.awssdk.metrics.LoggingMetricPublisher;

// Create a LoggingMetricPublisher with PRETTY format.
MetricPublisher prettyMetricPublisher = LoggingMetricPublisher.create(
    Level.INFO, 
    LoggingMetricPublisher.Format.PRETTY
);

// Use with your service client.
S3Client s3Client = S3Client.builder()
    .region(Region.US_EAST_1)
    .overrideConfiguration(config -> config.addMetricPublisher(prettyMetricPublisher))
    .build();
```

## Ejemplo completo
<a name="logging-metric-publisher-complete-example"></a>

En el ejemplo siguiente se muestra el uso de `LoggingMetricPublisher` de dos formas:
+ En el nivel de cliente de servicio
+ Para una sola solicitud

```
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.event.Level;
import software.amazon.awssdk.metrics.LoggingMetricPublisher;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.ListBucketsRequest;
import software.amazon.awssdk.services.s3.model.ListBucketsResponse;

/**
 * Demonstrates how to use LoggingMetricPublisher with AWS S3 SDK for Java 2.x.
 * <p>
 * This demo focuses on the S3 listBuckets operation to show how metrics are collected
 * and logged to the console for development and debugging purposes.
 * <p>
 * LoggingMetricPublisher is ideal for:
 * - Development and debugging
 * - Console output for troubleshooting
 * - Understanding what metrics are being collected
 * - Testing metric collection without external dependencies
 */
public class S3LoggingMetricPublisherDemo {

    private static final Logger logger = LoggerFactory.getLogger(S3LoggingMetricPublisherDemo.class);

    public static void main(String[] args) {
        S3LoggingMetricPublisherDemo demo = new S3LoggingMetricPublisherDemo();
        demo.demonstrateUsage();
    }

    /**
     * Demonstrates basic usage with S3Client and metrics enabled at the client level.
     */
    private void demonstrateUsage() {

        // Create a LoggingMetricPublisher with default settings. The SDK logs metrics as text in a single line.
        // The default settings are equivalent to using `LoggingMetricPublisher.Format.PLAIN`.

        MetricPublisher metricPublisher = LoggingMetricPublisher.create();

        // Create an S3 client with metrics enabled.
        try (S3Client s3Client = S3Client.builder()
                .region(Region.US_EAST_1)
                .overrideConfiguration(config -> config.addMetricPublisher(metricPublisher))
                .build()) {

            // Make the listBuckets request - metrics will be logged to console.
            ListBucketsResponse response = s3Client.listBuckets(ListBucketsRequest.builder().build());

            // The next block shows the using a different LoggingMetricPublisher with a `PRETTY` format.
            // Since the metric publisher is added to the request using the `overrideConfiguration`, this formatting
            // applies only to the one request.
            try {
                s3Client.listBuckets(ListBucketsRequest.builder()
                        .overrideConfiguration(config -> config
                                .addMetricPublisher(LoggingMetricPublisher.create(
                                        Level.INFO, LoggingMetricPublisher.Format.PRETTY)))
                        .build());
            } catch (Exception e) {
                logger.info("Request failed with metrics logged: {}", e.getMessage());
            }
            logger.info("Found {} buckets in your AWS account.", response.buckets().size());

        } catch (Exception e) {
            logger.error("Error during S3 operation: {}", e.getMessage());
            logger.info("Note: This is expected if AWS credentials are not configured.");
        }

        // Close the metric publisher to flush any remaining metrics.
        metricPublisher.close();
    }
}
```

El código registra lo siguiente en la consola:

```
INFO  LoggingMetricPublisher - Metrics published: MetricCollection(name=ApiCall, metrics=[MetricRecord(metric=MarshallingDuration, value=PT0.005409792S), MetricRecord(metric=RetryCount, value=0), MetricRecord(metric=ApiCallSuccessful, value=true), MetricRecord(metric=OperationName, value=ListBuckets), MetricRecord(metric=EndpointResolveDuration, value=PT0.000068S), MetricRecord(metric=ApiCallDuration, value=PT0.163802958S), MetricRecord(metric=CredentialsFetchDuration, value=PT0.145686542S), MetricRecord(metric=ServiceEndpoint, value=https://s3.amazonaws.com), MetricRecord(metric=ServiceId, value=S3)], children=[MetricCollection(name=ApiCallAttempt, metrics=[MetricRecord(metric=TimeToFirstByte, value=PT0.138816S), MetricRecord(metric=SigningDuration, value=PT0.007803459S), MetricRecord(metric=ReadThroughput, value=165153.96002660287), MetricRecord(metric=ServiceCallDuration, value=PT0.138816S), MetricRecord(metric=AwsExtendedRequestId, value=e13Swj3uwn0qP1Oz+m7II5OGq7jf8xxT8H18iDfRBCQmDg+gU4ek91Xrsl8XxRLROlIzCAPQtsQF0DAAWOb8ntuKCzX2AJdj), MetricRecord(metric=HttpStatusCode, value=200), MetricRecord(metric=BackoffDelayDuration, value=PT0S), MetricRecord(metric=TimeToLastByte, value=PT0.148915667S), MetricRecord(metric=AwsRequestId, value=78AW9BM7SWR6YMGB)], children=[MetricCollection(name=HttpClient, metrics=[MetricRecord(metric=MaxConcurrency, value=50), MetricRecord(metric=AvailableConcurrency, value=0), MetricRecord(metric=LeasedConcurrency, value=1), MetricRecord(metric=ConcurrencyAcquireDuration, value=PT0.002623S), MetricRecord(metric=PendingConcurrencyAcquires, value=0), MetricRecord(metric=HttpClientName, value=Apache)], children=[])])])
INFO  LoggingMetricPublisher - [4e6f2bb5] ApiCall
INFO  LoggingMetricPublisher - [4e6f2bb5] ┌──────────────────────────────────────────┐
INFO  LoggingMetricPublisher - [4e6f2bb5] │ MarshallingDuration=PT0.000063S          │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ RetryCount=0                             │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ ApiCallSuccessful=true                   │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ OperationName=ListBuckets                │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ EndpointResolveDuration=PT0.000024375S   │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ ApiCallDuration=PT0.018463083S           │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ CredentialsFetchDuration=PT0.000022334S  │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ ServiceEndpoint=https://s3.amazonaws.com │
INFO  LoggingMetricPublisher - [4e6f2bb5] │ ServiceId=S3                             │
INFO  LoggingMetricPublisher - [4e6f2bb5] └──────────────────────────────────────────┘
INFO  LoggingMetricPublisher - [4e6f2bb5]     ApiCallAttempt
INFO  LoggingMetricPublisher - [4e6f2bb5]     ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ TimeToFirstByte=PT0.0165575S                                                                                          │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ SigningDuration=PT0.000301125S                                                                                        │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ ReadThroughput=1195591.792850103                                                                                      │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ ServiceCallDuration=PT0.0165575S                                                                                      │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ AwsExtendedRequestId=3QI1eenRuokdszWqZBmBMDUmko6FlSmHkM+CUMNMeLor7gJml4D4lv6QXUZ1zWoTgG+tHbr6yo2vHdz4h1P8PDovvtMFRCeB │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ HttpStatusCode=200                                                                                                    │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ BackoffDelayDuration=PT0S                                                                                             │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ TimeToLastByte=PT0.017952625S                                                                                         │
INFO  LoggingMetricPublisher - [4e6f2bb5]     │ AwsRequestId=78AVFAF795AAWAXH                                                                                         │
INFO  LoggingMetricPublisher - [4e6f2bb5]     └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
INFO  LoggingMetricPublisher - [4e6f2bb5]         HttpClient
INFO  LoggingMetricPublisher - [4e6f2bb5]         ┌───────────────────────────────────────┐
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ MaxConcurrency=50                     │
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ AvailableConcurrency=0                │
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ LeasedConcurrency=1                   │
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ ConcurrencyAcquireDuration=PT0.00004S │
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ PendingConcurrencyAcquires=0          │
INFO  LoggingMetricPublisher - [4e6f2bb5]         │ HttpClientName=Apache                 │
INFO  LoggingMetricPublisher - [4e6f2bb5]         └───────────────────────────────────────┘
INFO  S3LoggingMetricPublisherDemo - Found 6 buckets in your AWS account.
```

### Artefactos adicionales para el ejemplo
<a name="logging-metric-publisher-complete-example-artifacts"></a>

Archivo `pom.xml` de Maven

```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>s3-logging-metric-publisher-demo</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <name>AWS S3 LoggingMetricPublisher Demo</name>
    <description>Demonstrates how to use LoggingMetricPublisher with AWS S3 SDK for Java 2.x</description>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <aws.java.sdk.version>2.31.66</aws.java.sdk.version>
        <log4j.version>2.24.3</log4j.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- AWS SDK BOM for dependency management -->
            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>bom</artifactId>
                <version>${aws.java.sdk.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Log4j BOM for logging dependency management -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-bom</artifactId>
                <version>${log4j.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- AWS S3 SDK for demonstration -->
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>s3</artifactId>
        </dependency>

        <!-- Log4j2 SLF4J implementation -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j2-impl</artifactId>
        </dependency>

        <!-- Log4j2 Core -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.13.0</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
```

Archivo de configuración de la `Log4j2.xml`

```
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="ConsoleAppender"/>
        </Root>
        <!-- Ensure LoggingMetricPublisher output appears. -->
        <Logger name="software.amazon.awssdk.metrics.LoggingMetricPublisher" level="INFO"/>
    </Loggers>
</Configuration>
```

Las métricas incluyen información sobre los tiempos, los detalles del servicio, los nombres de las operaciones y los códigos de estado HTTP que te ayudan a entender los patrones de uso de las AWS API de tu aplicación.

## Siguientes pasos
<a name="logging-metric-publisher-next-steps"></a>

Después de utilizar `LoggingMetricPublisher` para desarrollo y depuración, considere estas opciones para entornos de producción:
+ En el caso de aplicaciones de larga duración, se utilizan [CloudWatchMetricPublisher](metric-pub-impl-cwmp.md)para enviar métricas a Amazon CloudWatch para su análisis y emisión de alertas
+ Para AWS Lambda las funciones, utilícelas [EmfMetricLoggingPublisher](metric-pub-impl-emf.md)para publicar métricas en formato métrico CloudWatch integrado

# AWS SDK for Java 2.x: referencia completa de métricas
<a name="metrics-list"></a>

Con él AWS SDK for Java 2.x, puedes recopilar métricas de los clientes de servicio de tu aplicación y, a continuación, publicarlas (generar) esas métricas en [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).

En estas tablas, se muestran las métricas que puede recopilar y cualquier requisito de uso del cliente HTTP.

Para obtener más información sobre cómo habilitar y configurar las métricas del SDK, consulte [Habilitar métricas del SDK](metrics.md).

## Métricas recopiladas con cada solicitud
<a name="metrics-perrequest"></a>


| Nombre de métrica | Description (Descripción) | Tipo | 
| --- | --- | --- | 
|  ApiCallDuration  |  Duración de la llamada a la API. Incluye todos los intentos de llamada realizados.  |  Duración\$1  | 
|  ApiCallSuccessful  |  Verdadero si la llamada a la API se realizó correctamente; false en caso contrario.  |  Booleano  | 
|  CredentialsFetchDuration  |  Tiempo que se tarda en obtener credenciales de firma para la llamada a la API.  |  Duración\$1  | 
| EndpointResolveDuration | Tiempo que se tarda en resolver el punto de conexión utilizado para la llamada a la API. | Duración\$1 | 
|  MarshallingDuration  |  Tiempo que se tarda en serializar una solicitud del SDK en una solicitud HTTP.  |  Duración\$1  | 
|  OperationName  |  Nombre de la operación de servicio que se invoca.  |  Cadena  | 
|  RetryCount  |  Número de reintentos que el SDK realizó al ejecutar la solicitud. 0 implica que la solicitud funcionó la primera vez y no se volvió a intentar. Para obtener más información sobre cómo configurar el comportamiento de reintento, consulte [Estrategias de reintento](retry-strategy.md#retry-strategies).  |  Entero  | 
|  ServiceId  |  ID exclusivo del servicio.  |  Cadena  | 
|  ServiceEndpoint  |  Punto de conexión del servicio.  |  URI  | 
|  TokenFetchDuration  | Tiempo que se tarda en obtener credenciales de firma para la llamada a la API. | Duración\$1 | 

\$1[java.time.Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html).

## Métricas recopiladas para cada intento de solicitud
<a name="metrics-perattempt"></a>

Es posible que cada llamada a la API requiera varios intentos antes de recibir una respuesta. Estas métricas se recogen para cada intento.

### Métricas principales
<a name="metrics-perattempt-core"></a>


| Nombre de métrica | Description (Descripción) | Tipo | 
| --- | --- | --- | 
|  AwsExtendedRequestId  |  ID de solicitud extendida de la solicitud de servicio.  |  Cadena  | 
|  AwsRequestId  |  ID de solicitud de la solicitud de servicio.  |  Cadena  | 
|  BackoffDelayDuration  |  Tiempo que el SDK esperó antes de este intento de llamada a la API. El valor se basa en el conjunto `[https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/retries/api/BackoffStrategy.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/retries/api/BackoffStrategy.html)` del cliente. Consulte la sección [Estrategias de reintento](retry-strategy.md#retry-strategies) de esta guía para obtener más información.  |  Duración\$1  | 
| ErrorType |  Tipo de error que se produjo en un intento de llamada. Los valores posibles son los siguientes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sdk-for-java/latest/developer-guide/metrics-list.html)  | Cadena | 
| ReadThroughput |  Rendimiento de lectura del cliente, definido como `NumberOfResponseBytesRead / (TTLB - TTFB)`. Este valor se expresa en bytes por segundo. Tenga en cuenta que esta métrica solo mide los bytes leídos desde `ResponseTransformer` o `AsyncResponseTransformer`. Los datos que se leen fuera del transformador (por ejemplo, cuando el flujo de respuesta se devuelve como resultado del transformador) no se incluyen en el cálculo.  | Double | 
| WriteThroughput |  El rendimiento de escritura del cliente, definido como`RequestBytesWritten / (LastByteWrittenTime - FirstByteWrittenTime)`. Este valor se expresa en bytes por segundo. Esta métrica mide la velocidad a la que el SDK proporciona el cuerpo de la solicitud al cliente HTTP. No incluye la configuración de la conexión, el tiempo de protocolo de enlace TLS ni el tiempo de procesamiento del servidor. Esta métrica solo se informa para las solicitudes que tienen un cuerpo de transmisión como S3. PutObject Ten en cuenta que esta métrica no tiene en cuenta el almacenamiento en búfer en la capa de cliente HTTP. La velocidad real de transmisión de la red puede ser inferior si el cliente HTTP almacena los datos en búfer antes de enviarlos. Esta métrica representa un límite superior del rendimiento de la red.  | Double | 
|  ServiceCallDuration  |  Tiempo necesario para conectarse al servicio (o adquirir una conexión desde el grupo de conexiones), enviar la solicitud serializada y recibir la respuesta inicial (por ejemplo, código de estado HTTP y encabezados). NO incluye el tiempo necesario para leer la respuesta completa del servicio.  |  Duración\$1  | 
|  SigningDuration  |  Duración del tiempo para firmar la solicitud HTTP.  |  Duración\$1  | 
| TimeToFirstByte | Tiempo transcurrido desde el envío de la solicitud HTTP (incluida la adquisición de una conexión) al servicio hasta la recepción del primer byte de los encabezados de la respuesta. | Duración\$1 | 
| TimeToLastByte |  Tiempo transcurrido desde el envío de la solicitud HTTP (incluida la adquisición de una conexión) al servicio hasta la recepción del último byte de la respuesta. Tenga en cuenta que, en el caso de las respuestas de streaming devueltas, esta métrica abarca el tiempo transcurrido hasta que se complete la operación `ResponseTransformer` o`AsyncResponseTransformer`. APIs   | Duración\$1 | 
|  UnmarshallingDuration  |  Tiempo que se tarda en desactivar la serialización de la respuesta HTTP a una respuesta del SDK. Nota: En el caso de las operaciones de streaming, esto no incluye el tiempo necesario para leer la carga útil de la respuesta.  |  Duración\$1  | 

\$1[java.time.Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html).

### Métricas de HTTP
<a name="metrics-perattempt-http"></a>


| Nombre de métrica | Description (Descripción) | Tipo | Cliente HTTP necesario\$1 | 
| --- | --- | --- | --- | 
|  AvailableConcurrency  |  Número de solicitudes simultáneas adicionales que admite el cliente HTTP sin establecer nuevas conexiones con el servidor de destino. En el caso de operaciones HTTP/1, es igual al número de conexiones TCP inactivas establecidas con el servicio. En el caso de operaciones HTTP/2, es igual al número de transmisiones inactivas. Nota: Este valor varía según la implementación del cliente HTTP: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sdk-for-java/latest/developer-guide/metrics-list.html) El valor incluye una instancia de cliente HTTP individual y excluye la simultaneidad de otros clientes HTTP en la misma JVM.  |  Entero  | Apache, Netty, CRT | 
|  ConcurrencyAcquireDuration  |  Tiempo que se tarda en adquirir un canal del grupo de conexiones. En el caso de operaciones HTTP/1, un canal equivale a una conexión TCP. En el caso de operaciones HTTP/2, un canal equivale a un canal de streaming HTTP/2. La adquisición de un nuevo canal puede incluir tiempo para: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sdk-for-java/latest/developer-guide/metrics-list.html)  |  Duración\$1  |  Apache, Netty, CRT  | 
|  HttpClientName  |  Nombre del HTTP que se utiliza para la solicitud  |  Cadena  |  Apache, Netty, CRT  | 
|  HttpStatusCode  |  Código de estado de la respuesta HTTP.  |  Entero  |  Cualquiera  | 
|  LeasedConcurrency  |  Número de solicitudes que el cliente de HTTP está ejecutando actualmente  En el caso de operaciones HTTP/1, es igual al número de conexiones TCP activas con el servicio (excluidas las conexiones inactivas). En el caso de las operaciones HTTP/2, es igual al número de flujos de HTTP activos con el servicio (excluida la capacidad de flujos inactivos).  Nota: Este valor varía según la implementación del cliente HTTP: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sdk-for-java/latest/developer-guide/metrics-list.html) El valor incluye una instancia de cliente HTTP individual y excluye la simultaneidad de otros clientes HTTP en la misma JVM.  |  Entero  |  Apache, Netty, CRT  | 
|  LocalStreamWindowSize  |  Tamaño de la ventana HTTP/2 local en bytes del flujo que ejecuta esta solicitud.  |  Entero  |  Netty  | 
|  MaxConcurrency  |  Número máximo de solicitudes simultáneas que admite el cliente HTTP. En el caso de las operaciones HTTP/1, es igual al número máximo de conexiones TCP que el cliente HTTP puede agrupar. En el caso de las operaciones HTTP/2, es igual al número máximo de flujos que el cliente HTTP puede agrupar. Nota: Este valor varía según la implementación del cliente HTTP: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sdk-for-java/latest/developer-guide/metrics-list.html) El valor incluye una instancia de cliente HTTP individual y excluye la simultaneidad de otros clientes HTTP en la misma JVM.  |  Entero  |  Apache, Netty, CRT  | 
|  PendingConcurrencyAcquires  |  Número de solicitudes que esperan simultaneidad del cliente HTTP. En el caso de las operaciones HTTP/1, es igual al número de solicitudes que esperan que se establezca una conexión TCP o se devuelva del grupo de conexiones. En el caso de las operaciones HTTP/2, es igual al número de solicitudes que esperan un nuevo flujo (y posiblemente una nueva conexión HTTP/2) del grupo de conexiones. Nota: Este valor varía según la implementación del cliente HTTP: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sdk-for-java/latest/developer-guide/metrics-list.html) El valor incluye una instancia de cliente HTTP individual y excluye la simultaneidad de otros clientes HTTP en la misma JVM.  |  Entero  |  Apache, Netty, CRT  | 
|  RemoteStreamWindowSize  |  Tamaño de la ventana HTTP/2 remota en bytes del flujo que ejecuta esta solicitud.  |  Entero  |  Netty  | 

\$1[java.time.Duration](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/Duration.html).

Los términos utilizados en las tablas significan:
+ Apache: el cliente HTTP basado en Apache (`[ApacheHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html)`)
+ Netty: el cliente HTTP basado en Netty (`[NettyNioAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html)`)
+ CRT: el cliente HTTP basado en AWS CRT () `[AwsCrtAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.html)`
+ Cualquiera: la recopilación de datos métricos no depende del cliente HTTP; esto incluye el cliente HTTP URLConnection basado () `[UrlConnectionHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.html)`