

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.

# Registro y supervisión
<a name="logging-monitoring"></a>

La monitorización es una parte importante del mantenimiento de la fiabilidad, la disponibilidad y el rendimiento de los trabajos y las aplicaciones del EMR sin servidor. Debe recopilar datos de monitorización de todas las partes de su solución de EMR sin servidor para que le resulte más sencillo depurar un error que se produce en distintas partes del código, en caso de que ocurra.

**Topics**
+ [Almacenamiento de registros](logging.md)
+ [Registros giratorios](rotating-logs.md)
+ [Cifrado de registros](jobs-log-encryption.md)
+ [Configure las propiedades de Apache Log4j2 para Amazon EMR sin servidor](log4j2.md)
+ [Monitorización de EMR sin servidor](metrics.md)
+ [Automatización de EMR sin servidor con Amazon EventBridge](using-eventbridge.md)

# Almacenamiento de registros
<a name="logging"></a>

Para monitorizar el progreso de su trabajo en EMR sin servidor y solucionar errores en los trabajos, elija la forma en que EMR sin servidor almacena y proporciona los registros de las aplicaciones. Cuando envíe una ejecución de trabajo, especifique almacenamiento gestionado, Amazon S3 y Amazon CloudWatch como opciones de registro.

Con CloudWatch, especifique los tipos de registro y las ubicaciones de registro que quiere usar, o acepte los tipos y ubicaciones predeterminados. Para obtener más información sobre CloudWatch los registros, consulte[Registro de EMR Serverless con Amazon CloudWatch](#jobs-log-storage-cw). Con el almacenamiento gestionado y el registro de S3, en la siguiente tabla se muestran las ubicaciones de registro y la disponibilidad de la IU que puede esperar si elige [almacenamiento administrado](#jobs-log-storage-managed-storage), [buckets de Amazon S3](#jobs-log-storage-s3-buckets) o ambos.


| Opción | Registros de eventos | Registros de contenedor | IU de las aplicaciones | 
| --- | --- | --- | --- | 
|  Almacenamiento administrado  |  Almacenado en un almacenamiento administrado  |  Almacenado en un almacenamiento administrado  |   compatible  | 
|  Tanto almacenamiento administrado como bucket de S3  |  Almacenado en ambos lugares  |  Almacenado en un bucket de S3  |   compatible  | 
|  Bucket de Amazon S3  |  Almacenado en un bucket de S3  |  Almacenado en un bucket de S3  |  No admitido1  | 

1 Le sugerimos que mantenga seleccionada la opción de **almacenamiento administrado**. De lo contrario, no podrá utilizar la aplicación integrada UIs.

## Registro para EMR sin servidor con almacenamiento administrado
<a name="jobs-log-storage-managed-storage"></a>

De forma predeterminada, EMR sin servidor almacena los registros de las aplicaciones de forma segura en el almacenamiento administrado de Amazon EMR durante un máximo de 30 días.

**nota**  
Si desactiva la opción predeterminada, Amazon EMR no podrá solucionar los problemas de sus trabajos en su nombre. Ejemplo: No puede acceder a la IU de Spark desde la consola sin servidor de EMR.

Para desactivar esta opción desde EMR Studio, desactive la casilla **Permitir AWS conservar registros durante 30 días** en la sección **Configuración adicional** de la página **Enviar** trabajo. 

Para desactivar esta opción desde AWS CLI, utilice la `managedPersistenceMonitoringConfiguration` configuración cuando envíe una ejecución de tareas.

```
{
    "monitoringConfiguration": {
        "managedPersistenceMonitoringConfiguration": {
            "enabled": false
        }
    }
}
```

Si su aplicación de EMR sin servidor se encuentra en una subred privada con puntos de conexión de VPC para Amazon S3 y adjunta una política de puntos de conexión para controlar el acceso, agregue los siguientes permisos para que EMR sin servidor almacene y proporcione los registros de la aplicación. Reemplace `Resource` por los buckets `AppInfo` de la tabla de regiones disponible en [Sample policies for private subnets that access Amazon S3](https://docs.aws.amazon.com/emr/latest/ManagementGuide/private-subnet-iampolicy.html#private-subnet-iampolicy-regions).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EMRServerlessManagedLogging",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": [
        "arn:aws:s3:::prod.us-east-1.appinfo.src",
        "arn:aws:s3:::prod.us-east-1.appinfo.src/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:PrincipalServiceName": "emr-serverless.amazonaws.com",
          "aws:SourceVpc": "vpc-12345678"
        }
      }
    }
  ]
}
```

------

Además, utilice la clave de condición `aws:SourceVpc` para asegurarse de que la solicitud pase por la VPC a la que está asociado el punto de conexión de VPC.

## Registro de EMR sin servidor con buckets de Amazon S3
<a name="jobs-log-storage-s3-buckets"></a>

Para que sus trabajos puedan enviar datos de registro a Amazon S3, debe incluir los siguientes permisos en la política de permisos del rol de tiempo de ejecución del trabajo. Reemplace `amzn-s3-demo-logging-bucket` con el nombre de su bucket de registro.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Sid": "AllowS3Putobject"
    }
  ]
}
```

------

Para configurar un bucket de Amazon S3 para almacenar los registros del AWS CLI, utilice la `s3MonitoringConfiguration` configuración al iniciar la ejecución de un trabajo. Para ello, incluya el siguiente `--configuration-overrides` en la configuración. 

```
{
    "monitoringConfiguration": {
        "s3MonitoringConfiguration": {
            "logUri": "s3://amzn-s3-demo-logging-bucket/logs/"
        }
    }
}
```

Para los trabajos por lotes que no tienen habilitados los reintentos, EMR sin servidor envía los registros a la siguiente ruta:

```
'/applications/<applicationId>/jobs/<jobId>'
```

EMR sin servidor almacena los registros del controlador Spark en la siguiente ruta

```
'/applications/<applicationId>/jobs/<jobId>/SPARK_DRIVER/'
```

EMR sin servidor almacena los registros del ejecutor Spark en la siguiente ruta

```
'/applications/<applicationId>/jobs/<jobId>/SPARK_EXECUTOR/<EXECUTOR-ID>'
```

<EXECUTOR-ID> es un número entero.

Las versiones 7.1.0 y posteriores de EMR sin servidor admiten reintentos para trabajos de streaming y trabajos por lotes. Si ejecuta un trabajo con los reintentos habilitados, EMR sin servidor agrega automáticamente un número de intento al prefijo de la ruta de registro, para poder hacer una mejor distinción y seguimiento de los registros.

```
'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'
```

## Registro de EMR Serverless con Amazon CloudWatch
<a name="jobs-log-storage-cw"></a>

Cuando envíe un trabajo a una aplicación EMR Serverless, elija Amazon CloudWatch como opción para almacenar los registros de su aplicación. Esto le permite utilizar CloudWatch funciones de análisis de CloudWatch registros, como Logs Insights y Live Tail. También puede transmitir registros desde CloudWatch otros sistemas, por ejemplo, OpenSearch para su posterior análisis.

EMR sin servidor proporciona registro en tiempo real de los registros de los controladores. Puede acceder a los registros en tiempo real con la función CloudWatch live tail o mediante los comandos CloudWatch CLI tail.

De forma predeterminada, el CloudWatch registro está deshabilitado para EMR Serverless. Para habilitarlo, utilice la configuración de [AWS CLI](#jobs-log-storage-cw-cli).

**nota**  
Amazon CloudWatch publica los registros en tiempo real, por lo que obtiene más recursos de los trabajadores. Si elige una capacidad laboral baja, el impacto en el tiempo de ejecución de su trabajo podría aumentar. Si habilita el CloudWatch registro, le sugerimos que elija una mayor capacidad de trabajo. También es posible que la publicación del registro se reduzca si la tasa de transacciones por segundo (TPS) es demasiado baja para `PutLogEvents`. La configuración de CloudWatch regulación es global para todos los servicios, incluido EMR Serverless. Para obtener más información, consulte [¿Cómo se determina la limitación en mis](https://repost.aws/knowledge-center/cloudwatch-logs-throttling) registros? CloudWatch *en AWS re:post.*

### Permisos necesarios para iniciar sesión con CloudWatch
<a name="jobs-log-storage-cw-permissions"></a>

Antes de que tus trabajos puedan enviar datos de registro a Amazon CloudWatch, incluye los siguientes permisos en la política de permisos del rol de ejecución del trabajo.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "arn:aws:logs:*:123456789012:*"
      ],
      "Sid": "AllowLOGSDescribeloggroups"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:PutLogEvents",
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:123456789012:log-group:my-log-group-name:*"
      ],
      "Sid": "AllowLOGSPutlogevents"
    }
  ]
}
```

------

### AWS CLI
<a name="jobs-log-storage-cw-cli"></a>

Para configurar Amazon CloudWatch para que almacene los registros de EMR Serverless desde AWS CLI, utilice la `cloudWatchLoggingConfiguration` configuración al iniciar la ejecución de un trabajo. Para ello, incluya las siguientes anulaciones de configuración. Opcionalmente, también puede proporcionar un nombre de grupo de registro, un nombre de prefijo de flujo de registro, tipos de registro y una clave de cifrado ARN.

Si no especifica los valores opcionales, CloudWatch publica los registros en un grupo de registros predeterminado`/aws/emr-serverless`, con el flujo de registros predeterminado. `/applications/applicationId/jobs/jobId/worker-type`

Las versiones 7.1.0 y posteriores de EMR sin servidor admiten reintentos para trabajos de streaming y trabajos por lotes. Si habilitó reintentos para un trabajo, EMR sin servidor agrega automáticamente un número de intento al prefijo de la ruta de registro, para poder hacer una mejor distinción y seguimiento de los registros. 

```
'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/worker-type'
```

A continuación, se muestra la configuración mínima necesaria para activar el CloudWatch registro de Amazon con la configuración predeterminada de EMR Serverless:

```
{
    "monitoringConfiguration": {
        "cloudWatchLoggingConfiguration": {
            "enabled": true
         }
     }
}
```

El siguiente ejemplo muestra todas las configuraciones obligatorias y opcionales que especifican cuándo se activa el CloudWatch registro de Amazon para EMR Serverless. Los valores `logTypes` admitidos también se muestran en el siguiente ejemplo.

```
{
    "monitoringConfiguration": {
        "cloudWatchLoggingConfiguration": {
            "enabled": true, // Required
            "logGroupName": "Example_logGroup", // Optional
            "logStreamNamePrefix": "Example_logStream", // Optional 
            "encryptionKeyArn": "key-arn", // Optional 
            "logTypes": { 
                "SPARK_DRIVER": ["stdout", "stderr"] //List of values
             }
         }
     }
}
```

De forma predeterminada, EMR Serverless publica solo los registros stdout y stderr del controlador. CloudWatch Si desea obtener otros registros, especifique el rol de contenedor y los tipos de registro correspondientes con el campo `logTypes`.

La siguiente lista muestra los tipos de trabajadores admitidos que puede especificar para la configuración de `logTypes`:

**Spark**  
+ `SPARK_DRIVER : ["STDERR", "STDOUT"]`
+ `SPARK_EXECUTOR : ["STDERR", "STDOUT"]`

**Hive**  
+ `HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]`
+ `TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]`

# Registros giratorios
<a name="rotating-logs"></a>

Amazon EMR sin servidor puede rotar los registros de aplicaciones y los registros de eventos de Spark. La rotación de registros ayuda a solucionar el problema de que los trabajos de larga duración generen archivos de registro de gran tamaño que pueden ocupar todo el espacio en el disco. La rotación de los registros le ayuda a ahorrar espacio de almacenamiento en disco y reduce la cantidad de errores en los trabajos, debido a que no quede más espacio en el disco. 

La rotación de registros está habilitada de forma predeterminada y solo está disponible para los trabajos de Spark.

**Registros de eventos de Spark**

**nota**  
La rotación del registro de eventos de Spark está disponible en todas las etiquetas de lanzamiento de Amazon EMR.

En lugar de generar un único archivo de registro de eventos, EMR sin servidor rota el registro de eventos en un intervalo de tiempo periódico y elimina los archivos de registro de eventos anteriores. La rotación de los registros no afecta a los registros cargados en el bucket de S3.

**Registros de aplicaciones de Spark**

**nota**  
La rotación del registros de eventos de Spark está disponible en todas las etiquetas de lanzamiento de Amazon EMR.

EMR sin servidor también rota los registros de aplicaciones de Spark para los controladores y ejecutores, como los archivos `stdout` y `stderr`. Para acceder a los archivos de registro más recientes, seleccione los enlaces de registro de Studio mediante los enlaces del servidor de historial de Spark y de la interfaz de usuario en vivo. Los archivos de registro son las versiones truncadas de los registros más recientes. Para consultar los registros rotados anteriores, especifique una ubicación de Amazon S3 cuando almacene los registros. Consulte [Logging for EMR Serverless with Amazon S3 buckets](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/logging.html#jobs-log-storage-s3-buckets) para obtener más información.

Puede encontrar los archivos de registro más recientes en la siguiente ubicación. EMR sin servidor actualiza los archivos cada 15 segundos. Estos archivos pueden oscilar entre 0 MB y 128 MB.

```
<example-S3-logUri>/applications/<application-id>/jobs/<job-id>/SPARK_DRIVER/stderr.gz
```

La siguiente ubicación contiene los archivos rotados más antiguos. Cada archivo ocupa 128 MB.

```
<example-S3-logUri>/applications/<application-id>/jobs/<job-id>/SPARK_DRIVER/archived/stderr_<index>.gz 
```

El mismo comportamiento se aplica también a los ejecutores de Spark. Este cambio solo se aplica al registro de S3. La rotación de registros no introduce ningún cambio en las transmisiones de registros subidas a Amazon CloudWatch.

Las versiones 7.1.0 y posteriores de EMR sin servidor admiten reintentos para trabajos de streaming y por lotes. Si habilitó los reintentos en su tarea, EMR sin servidor añade un prefijo a la ruta de los registros de dichos trabajos para que pueda hacerse una mejor distinción y seguimiento de los registros entre sí. Esta ruta contiene todos los registros rotados.

```
'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'.
```

# Cifrado de registros
<a name="jobs-log-encryption"></a>

## Cifrado de registros de EMR sin servidor con almacenamiento administrado
<a name="jobs-log-encryption-managed-storage"></a>

Para cifrar los registros del almacenamiento administrado con su propia clave KMS, utilice la configuración `managedPersistenceMonitoringConfiguration` al enviar una ejecución de trabajos.

```
{
    "monitoringConfiguration": {
        "managedPersistenceMonitoringConfiguration" : {
            "encryptionKeyArn": "key-arn"
        }
    }
}
```

## Cifrado de registros de EMR sin servidor con buckets de Amazon S3
<a name="jobs-log-encryption-s3-buckets"></a>

Para cifrar los registros en su bucket de Amazon S3 con su propia clave KMS, utilice la configuración `s3MonitoringConfiguration` al enviar una ejecución de trabajos.

```
{
    "monitoringConfiguration": {
        "s3MonitoringConfiguration": {
            "logUri": "s3://amzn-s3-demo-logging-bucket/logs/",
            "encryptionKeyArn": "key-arn"
        }
    }
}
```

## Cifrado de registros EMR sin servidor con Amazon CloudWatch
<a name="jobs-log-encryption-cw"></a>

Para cifrar los registros en Amazon CloudWatch con su propia clave de KMS, utilice la `cloudWatchLoggingConfiguration` configuración cuando envíe una ejecución de trabajo.

```
{
    "monitoringConfiguration": {
        "cloudWatchLoggingConfiguration": {
            "enabled": true,
            "encryptionKeyArn": "key-arn"
         }
     }
}
```

## Permisos necesarios para el cifrado de registros
<a name="jobs-log-encryption-permissions"></a>

**Topics**
+ [Permisos de usuario necesarios](#jobs-log-encryption-permissions-user)
+ [Permisos de clave de cifrado para Amazon S3 y almacenamiento administrado](#jobs-log-encryption-permissions-s3)
+ [Permisos de clave de cifrado para Amazon CloudWatch](#jobs-log-encryption-permissions-cw)

### Permisos de usuario necesarios
<a name="jobs-log-encryption-permissions-user"></a>

El usuario que envía el trabajo o ve los registros o la aplicación UIs debe tener permisos para usar la clave. Puede especificar los permisos en la política de claves de KMS o en la política de IAM para el usuario, el grupo o el rol. Si el usuario que envía el trabajo carece de los permisos clave de KMS, EMR sin servidor rechaza el envío de la ejecución del trabajo.

**Política de claves de ejemplo**

La siguiente política de claves proporciona los permisos para `kms:GenerateDataKey` y `kms:Decrypt`:

```
{
    "Effect": "Allow",
    "Principal":{
       "AWS": "arn:aws:iam::111122223333:user/user-name"
     },
     "Action": [
       "kms:GenerateDataKey",       
       "kms:Decrypt"
      ],
     "Resource": "*"
 }
```

**Política de IAM de ejemplo**

La siguiente política de IAM proporciona los permisos para `kms:GenerateDataKey` y `kms:Decrypt`:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:kms:*:123456789012:key/12345678-1234-1234-1234-123456789012"
      ],
      "Sid": "AllowKMSGeneratedatakey"
    }
  ]
}
```

------

Para iniciar la IU de Spark o Tez, conceda a sus usuarios, grupos o roles los siguientes permisos de acceso a la API `emr-serverless:GetDashboardForJobRun` de la siguiente manera:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-serverless:GetDashboardForJobRun"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEMRSERVERLESSGetdashboardforjobrun"
    }
  ]
}
```

------

### Permisos de clave de cifrado para Amazon S3 y almacenamiento administrado
<a name="jobs-log-encryption-permissions-s3"></a>

Cuando cifra los registros con su propia clave de cifrado en el almacenamiento administrado o en los buckets de S3, debe configurar los permisos de clave de KMS de la siguiente manera.

El `emr-serverless.amazonaws.com` principal debe tener los siguientes permisos en la política para la clave de KMS:

```
{
    "Effect": "Allow",
    "Principal":{
       "Service": "emr-serverless.amazonaws.com" 
     },
     "Action": [
       "kms:Decrypt",
       "kms:GenerateDataKey"
      ],
     "Resource": "*"
     "Condition": {
       "StringLike": {
         "aws:SourceArn": "arn:aws:emr-serverless:region:aws-account-id:/applications/application-id"
       }
     }
 }
```

Como práctica recomendada de seguridad, le sugerimos que agregue una clave de condición `aws:SourceArn` a la política de claves de KMS. La clave de condición global de IAM `aws:SourceArn` ayuda a garantizar que EMR sin servidor utilice la clave de KMS solo para un ARN de aplicación. 

El rol de tiempo de ejecución del trabajo debe tener los siguientes permisos en su política de IAM:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:kms:*:123456789012:key/12345678-1234-1234-1234-123456789012"
      ],
      "Sid": "AllowKMSGeneratedatakey"
    }
  ]
}
```

------

### Permisos de clave de cifrado para Amazon CloudWatch
<a name="jobs-log-encryption-permissions-cw"></a>

Para asociar un ARN de clave de KMS a su grupo de registros, utilice la siguiente política de IAM para el rol de tiempo de ejecución del trabajo.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:AssociateKmsKey"
      ],
      "Resource": [
        "arn:aws:logs:*:123456789012:log-group:my-log-group-name:*"
      ],
      "Sid": "AllowLOGSAssociatekmskey"
    }
  ]
}
```

------

Configure la política de claves de KMS para conceder permisos de KMS a Amazon CloudWatch:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "key-default-1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ArnLike": {
          "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:*:123456789012:*"
        }
      },
      "Sid": "AllowKMSDecrypt"
    }
  ]
}
```

------

# Configure las propiedades de Apache Log4j2 para Amazon EMR sin servidor
<a name="log4j2"></a>

Esta página describe cómo configurar las propiedades personalizadas de [Apache Log4j 2.x](https://logging.apache.org/log4j/2.x/) para trabajos de EMR sin servidor en `StartJobRun`. Si desea configurar las clasificaciones de Log4j a nivel de aplicación, consulte [Configuración predeterminada de aplicación para EMR sin servidor](default-configs.md).

## Configure las propiedades de Spark Log4j2 para Amazon EMR sin servidor
<a name="log4j2-spark"></a>

Con las versiones 6.8.0 y posteriores de Amazon EMR, puede personalizar las propiedades de [Apache Log4j 2.x](https://logging.apache.org/log4j/2.x/) para especificar configuraciones de registro detalladas. Esto simplifica la solución de problemas de sus trabajos de Spark en EMR sin servidor. Para configurar estas propiedades, utilice las clasificaciones `spark-driver-log4j2` y `spark-executor-log4j2`.

**Topics**
+ [Clasificaciones de Log4j2 para Spark](#log4j2-spark-class)
+ [Ejemplo de configuración de Log4j2 para Spark](#log4j2-spark-example)
+ [Log4j2 en trabajos de Spark de ejemplo](#log4j2-spark-jobs)
+ [Consideraciones de Log4j2 para Spark](#log4j2-spark-considerations)

### Clasificaciones de Log4j2 para Spark
<a name="log4j2-spark-class"></a>

Para personalizar las configuraciones de registro de Spark, utilice las siguientes clasificaciones con [https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_ConfigurationOverrides.html#emrserverless-Type-ConfigurationOverrides-applicationConfiguration](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_ConfigurationOverrides.html#emrserverless-Type-ConfigurationOverrides-applicationConfiguration). Para configurar las propiedades de Log4j 2.x, utilice la siguientes [https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_Configuration.html#emrserverless-Type-Configuration-properties](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_Configuration.html#emrserverless-Type-Configuration-properties).

**`spark-driver-log4j2`**  
Esta clasificación establece los valores en el archivo `log4j2.properties` del controlador.

**`spark-executor-log4j2`**  
Esta clasificación establece los valores en el archivo `log4j2.properties` del ejecutor.

### Ejemplo de configuración de Log4j2 para Spark
<a name="log4j2-spark-example"></a>

En el siguiente ejemplo, se muestra cómo enviar un trabajo de Spark con `applicationConfiguration` para personalizar las configuraciones de Log4j2 para el controlador y ejecutor de Spark.

Para configurar las clasificaciones de Log4j a nivel de aplicación, en lugar de al enviar el trabajo, consulte [Configuración predeterminada de aplicación para EMR sin servidor](default-configs.md).

```
aws emr-serverless start-job-run \
    --application-id application-id \
    --execution-role-arn job-role-arn \
    --job-driver '{
        "sparkSubmit": {
            "entryPoint": "/usr/lib/spark/examples/jars/spark-examples.jar",
            "entryPointArguments": ["1"],
            "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1"
        }
    }'
    --configuration-overrides '{
        "applicationConfiguration": [
             {
                "classification": "spark-driver-log4j2",
                "properties": {
                    "rootLogger.level":"error", // will only display Spark error logs
                    "logger.IdentifierForClass.name": "classpath for setting logger",
                    "logger.IdentifierForClass.level": "info"
                   
                }
            },
            {
                "classification": "spark-executor-log4j2",
                "properties": {
                    "rootLogger.level":"error", // will only display Spark error logs
                    "logger.IdentifierForClass.name": "classpath for setting logger",
                    "logger.IdentifierForClass.level": "info"
                }
            }
       ]
    }'
```

### Log4j2 en trabajos de Spark de ejemplo
<a name="log4j2-spark-jobs"></a>

Los siguientes ejemplos de código muestran cómo crear una aplicación de Spark mientras se inicializa una configuración de Log4j2 personalizada para la aplicación.

------
#### [ Python ]

**Example - Uso de Log4j2 para un trabajo de Spark con Python**  

```
import os
import sys

from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession

app_name = "PySparkApp"
if __name__ == "__main__":
    spark = SparkSession\
        .builder\
        .appName(app_name)\
        .getOrCreate()
    
    spark.sparkContext._conf.getAll()
    sc = spark.sparkContext
    log4jLogger = sc._jvm.org.apache.log4j
    LOGGER = log4jLogger.LogManager.getLogger(app_name)

    LOGGER.info("pyspark script logger info")
    LOGGER.warn("pyspark script logger warn")
    LOGGER.error("pyspark script logger error")
    
    // your code here
    
    spark.stop()
```
Para personalizar Log4j2 para el controlador cuando ejecute un trabajo de Spark, utilice la siguiente configuración:  

```
{
   "classification": "spark-driver-log4j2",
      "properties": {
          "rootLogger.level":"error", // only display Spark error logs
          "logger.PySparkApp.level": "info", 
          "logger.PySparkApp.name": "PySparkApp"
      }
}
```

------
#### [ Scala ]

**Example - Uso de Log4j2 para un trabajo de Spark con Scala**  

```
import org.apache.log4j.Logger
import org.apache.spark.sql.SparkSession

object ExampleClass {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession
    .builder
    .appName(this.getClass.getName)
    .getOrCreate()

    val logger = Logger.getLogger(this.getClass);
    logger.info("script logging info logs")
    logger.warn("script logging warn logs")
    logger.error("script logging error logs")

// your code here
    spark.stop()
  }
}
```
Para personalizar Log4j2 para el controlador cuando ejecute un trabajo de Spark, utilice la siguiente configuración:  

```
{
   "classification": "spark-driver-log4j2",
      "properties": {
          "rootLogger.level":"error", // only display Spark error logs
          "logger.ExampleClass.level": "info", 
          "logger.ExampleClass.name": "ExampleClass"
      }
}
```

------

### Consideraciones de Log4j2 para Spark
<a name="log4j2-spark-considerations"></a>

Las siguientes propiedades de Log4j2.x no se pueden configurar para los procesos de Spark:
+ `rootLogger.appenderRef.stdout.ref`
+ `appender.console.type`
+ `appender.console.name`
+ `appender.console.target`
+ `appender.console.layout.type`
+ `appender.console.layout.pattern`

[Para obtener información detallada sobre las propiedades de Log4J2.x que se configuran, consulte el archivo en. `log4j2.properties.template`](https://github.com/apache/spark/blob/v3.3.0/conf/log4j2.properties.template) GitHub

# Monitorización de EMR sin servidor
<a name="metrics"></a>

En esta sección, se describen las formas en las que puede monitorizar sus aplicaciones y trabajos de Amazon EMR sin servidor.

**Topics**
+ [Monitorización de trabajos y aplicaciones de EMR sin servidor](app-job-metrics.md)
+ [Monitorice las métricas de Spark con Amazon Managed Service para Prometheus](monitor-with-prometheus.md)
+ [Métricas de uso de EMR sin servidor](monitoring-usage.md)

# Monitorización de trabajos y aplicaciones de EMR sin servidor
<a name="app-job-metrics"></a>

Con CloudWatch las métricas de Amazon para EMR Serverless, puede recibir métricas de 1 minuto y acceder a los CloudWatch paneles de control para acceder a CloudWatch las near-real-time operaciones y el rendimiento de sus aplicaciones EMR Serverless.

EMR Serverless envía métricas a CloudWatch cada minuto. EMR Serverless emite estas métricas a nivel de aplicación, así como a nivel de puesto, tipo de trabajador y niveles. capacity-allocation-type

Para empezar, utilice la plantilla de CloudWatch panel EMR Serverless que se proporciona en el repositorio EMR [ GitHub Serverless e impleméntela.](https://github.com/aws-samples/emr-serverless-samples/tree/main/cloudformation/emr-serverless-cloudwatch-dashboard/)

**nota**  
[Las cargas de trabajo interactivas EMR sin servidor](interactive-workloads.md) solo tienen habilitada la monitorización a nivel de aplicación y tienen una nueva dimensión de tipo de trabajador `Spark_Kernel`. Para monitorizar y depurar sus cargas de trabajo interactivas, acceda a los registros y la IU de Apache Spark desde [su espacio de trabajo de EMR Studio](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-debug.html#emr-studio-debug-serverless).

## Supervisión de métricas
<a name="app-job-metrics-versions"></a>

**importante**  
Estamos reestructurando nuestra visualización de métricas para agregar `ApplicationName` y `JobName` como dimensiones. En la versión 7.10 y las versiones posteriores, las métricas antiguas ya no se actualizarán. En las versiones de EMR anteriores a la versión 7.10, las métricas antiguas seguirán disponibles.

**Dimensiones actuales**

La siguiente tabla describe las dimensiones de EMR sin servidor disponibles en el espacio de nombres `AWS/EMR Serverless`.


**Dimensiones de las métricas de EMR sin servidor**  

| Dimensión | Description (Descripción) | 
| --- | --- | 
| ApplicationId | Filtra todas las métricas de una aplicación de EMR sin servidor mediante el ID de la aplicación. | 
| ApplicationName | Filtra todas las métricas de una aplicación de EMR sin servidor mediante el nombre. Si no se proporciona el nombre o si contiene caracteres que no sean ASCII, se publica como **[Sin especificar]**. | 
| JobId | Filtra todas las métricas de una ejecución del trabajo de EMR sin servidor mediante el ID. | 
| JobName | Filtra todas las métricas de una ejecución de trabajo de EMR sin servidor mediante el nombre. Si no se proporciona el nombre o si contiene caracteres que no sean ASCII, se publica como **[Sin especificar]**. | 
| WorkerType | Filtra todas las métricas de un tipo de trabajador determinado. Por ejemplo, puede filtrar por `SPARK_DRIVER` y `SPARK_EXECUTORS` para los trabajos de Spark. | 
| CapacityAllocationType | Filtra todas las métricas de un tipo de asignación de capacidad determinado. Por ejemplo, puede filtrar para `PreInitCapacity` por la capacidad preinicializada y `OnDemandCapacity` por todo lo demás. | 

## Monitorización a nivel de aplicación
<a name="app-level-metrics"></a>

Puede supervisar el uso de la capacidad a nivel de la aplicación EMR Serverless con las métricas de Amazon. CloudWatch También puede configurar una sola pantalla para monitorear el uso de la capacidad de las aplicaciones en un CloudWatch panel de control.


**Métricas de aplicaciones de EMR sin servidor**  

| Métrica | Description (Descripción) | Unidad | Dimensión | 
| --- | --- | --- | --- | 
| MaxCPUAllowed |  El máximo de CPU permitida para la aplicación.  | vCPU | ApplicationId, ApplicationName | 
| MaxMemoryAllowed |  El máximo de memoria permitida en GB para la aplicación.  | Gigabytes (GB) | ApplicationId, ApplicationName | 
| MaxStorageAllowed |  El máximo de almacenamiento permitido en GB para la aplicación.  | Gigabytes (GB) | ApplicationId, ApplicationName | 
| CPUAllocated |  El número total de v CPUs asignado.  | vCPU | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| IdleWorkerCount |  El número total de trabajadores inactivos.  | Recuento | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| MemoryAllocated |  La memoria total en GB asignada.  | Gigabytes (GB) | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| PendingCreationWorkerCount |  El número total de trabajadores pendientes de creación.  | Recuento | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| RunningWorkerCount |  El número total de trabajadores que utiliza la aplicación.  | Recuento | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| StorageAllocated |  El almacenamiento total en disco en GB asignado.  | Gigabytes (GB) | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| TotalWorkerCount |  El número total de trabajadores disponibles.  | Recuento | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 

## Monitorización a nivel de trabajo
<a name="job-level-metrics"></a>

Amazon EMR sin servidor envía las siguientes métricas a nivel de trabajo a Amazon CloudWatch cada minuto. Puede acceder a los valores de las métricas de las ejecuciones de trabajos agregados por estado de ejecución de trabajos. La unidad de cada una de las métricas es el *recuento*.


**Métricas a nivel de trabajo de EMR sin servidor**  

| Métrica | Description (Descripción) | Dimensión | 
| --- | --- | --- | 
| SubmittedJobs | El número de trabajos en un estado de Enviado. | ApplicationId, ApplicationName | 
| PendingJobs | El número de trabajos en un estado de Pendiente. | ApplicationId, ApplicationName | 
| ScheduledJobs | El número de trabajos en un estado de Programado. | ApplicationId, ApplicationName | 
| RunningJobs | El número de trabajos en un estado de En ejecución. | ApplicationId, ApplicationName | 
| SuccessJobs | El número de trabajos en un estado de Correcto. | ApplicationId, ApplicationName | 
| FailedJobs | El número de trabajos en un estado de Error. | ApplicationId, ApplicationName | 
| CancellingJobs | El número de trabajos en un estado de Cancelado. | ApplicationId, ApplicationName | 
| CancelledJobs | El número de trabajos en un estado de Cancelado. | ApplicationId, ApplicationName | 

Puede monitorear las métricas específicas del motor para los trabajos EMR Serverless en ejecución y completados con una aplicación específica del motor. UIs Cuando se accede a la IU de un trabajo en ejecución, se muestra la IU de la aplicación en directo con actualizaciones en tiempo real. Cuando se accede a la IU de un trabajo completado, se muestra la IU persistente de la aplicación.

**Trabajos en ejecución**

Para sus trabajos de EMR sin servidor en ejecución, acceda a una interfaz en tiempo real que proporcione métricas específicas del motor. Puede utilizar la IU de Apache Spark o la IU de Hive Tez para monitorizar y depurar sus trabajos. Para acceder a ellos UIs, utilice la consola de EMR Studio o solicite un punto final de URL seguro con. AWS Command Line Interface

**Trabajos completados**

Para sus trabajos de EMR sin servidor completados, utilice el servidor de historial de Spark o la IU persistente de Hive Tez para acceder a los detalles de los trabajos, las etapas, las tareas y las métricas de las ejecuciones de trabajos de Spark o Hive. Para acceder a ellos UIs, utilice la consola de EMR Studio o solicite un punto final de URL seguro con. AWS Command Line Interface

## Monitorización a nivel de trabajador laboral
<a name="job-worker-level-metrics"></a>

Amazon EMR Serverless envía a Amazon las siguientes métricas a nivel de trabajador laboral que están disponibles en el espacio de `AWS/EMRServerless` nombres y el grupo de métricas`Job Worker Metrics`. CloudWatch EMR Serverless recopila puntos de datos de trabajadores individuales durante la ejecución de los trabajos a nivel de trabajo, tipo de trabajador y nivel. capacity-allocation-type Se puede utilizar `ApplicationId` como una dimensión para monitorizar varios trabajos que pertenecen a la misma aplicación.

**nota**  
Para ver el total de CPU y memoria utilizadas por un trabajo sin servidor de EMR al ver las métricas en la CloudWatch consola de Amazon, utilice la estadística como suma y el período como 1 minuto.


**Métricas a nivel de trabajador laboral de EMR sin servidor**  

| Métrica | Description (Descripción) | Unidad | Dimensión | 
| --- | --- | --- | --- | 
| WorkerCpuAllocated | El número total de núcleos de vCPU asignados a los trabajadores en una ejecución de trabajo. | vCPU | JobId, JobName, ApplicationId, ApplicationName, WorkerType, y CapacityAllocationType | 
| WorkerCpuUsed | El número total de núcleos de vCPU utilizados por los trabajadores en una ejecución de trabajo. | vCPU | JobId, JobName, ApplicationId, ApplicationName, WorkerType, y CapacityAllocationType | 
| WorkerMemoryAllocated | La memoria total en GB asignada a los trabajadores en una ejecución de trabajo. | Gigabytes (GB) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, y CapacityAllocationType | 
| WorkerMemoryUsed | La memoria total en GB utilizada por los trabajadores en una ejecución de trabajo. | Gigabytes (GB) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, y CapacityAllocationType | 
| WorkerEphemeralStorageAllocated | El número de bytes de almacenamiento efímero asignados a los trabajadores en una ejecución de trabajo. | Gigabytes (GB) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, y CapacityAllocationType | 
| WorkerEphemeralStorageUsed | El número de bytes de almacenamiento efímero utilizados por los trabajadores en una ejecución de trabajo. | Gigabytes (GB) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, y CapacityAllocationType | 
| WorkerStorageReadBytes | El número de bytes leídos del almacenamiento por los trabajadores en una ejecución de trabajo. | Bytes | JobId, JobName, ApplicationId, ApplicationName, WorkerType, y CapacityAllocationType | 
| WorkerStorageWriteBytes | El número de bytes escritos en almacenamiento por los trabajadores en una ejecución de trabajo. | Bytes | JobId, JobName, ApplicationId, ApplicationName, WorkerType, y CapacityAllocationType | 

En los siguientes pasos, se describe cómo acceder a los distintos tipos de métricas.

------
#### [ Console ]

**Para acceder a la IU de la aplicación con la consola**

1. Navegue hasta la aplicación EMR sin servidor en EMR Studio siguiendo las instrucciones de [Introducción a la consola](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html#gs-console). 

1. Para acceder a la aplicación específica del motor UIs y a los registros de un trabajo en ejecución: 

   1. Elija un trabajo con un estado `RUNNING`.

   1. Seleccione el trabajo en la página de **Detalles de la aplicación** o vaya a la página de **Detalles del trabajo** correspondiente a su trabajo.

   1. En el menú desplegable **Mostrar IU**, seleccione o la **IU de Spark** o la **IU de Hive Tez** para ir a la aplicación de IU correspondiente a su tipo de trabajo. 

   1. Para acceder a los registros del motor de Spark, vaya a la pestaña **Ejecutores** de la IU de Spark y seleccione el enlace **Registros** del controlador. Para acceder a los registros del motor de Hive, seleccione el enlace **Registros** del DAG correspondiente en la IU de Hive Tez.

1. Para acceder a la aplicación UIs y los registros específicos del motor de un trabajo completado: 

   1. Elija un trabajo con un estado `SUCCESS`.

   1. Seleccione el trabajo en la página **Detalles de la aplicación** de la aplicación o vaya a la página de **Detalles del trabajo** de su trabajo.

   1. En el menú desplegable **Mostrar IU**, seleccione o el **Servidor del historial de Spark** o la **IU persistente de Hive Tez** para ir a la IU de la aplicación correspondiente a su tipo de trabajo. 

   1. Para acceder a los registros del motor de Spark, vaya a la pestaña **Ejecutores** de la IU de Spark y seleccione el enlace **Registros** del controlador. Para acceder a los registros del motor de Hive, seleccione el enlace **Registros** del DAG correspondiente en la IU de Hive Tez.

------
#### [ AWS CLI ]

**Para acceder a la interfaz de usuario de la aplicación con el AWS CLI**
+ Para generar una URL que pueda usar para acceder a la IU de su aplicación, tanto para los trabajos en ejecución como para los completados, llame a la API `GetDashboardForJobRun`. 

  ```
  aws emr-serverless get-dashboard-for-job-run /
  --application-id <application-id> /
  --job-run-id <job-id>
  ```

  La URL que genere es válida durante una hora.

------

# Monitorice las métricas de Spark con Amazon Managed Service para Prometheus
<a name="monitor-with-prometheus"></a>

Con las versiones 7.1.0 y posteriores de Amazon EMR, puede integrar EMR sin servidor con Amazon Managed Service para Prometheus para recopilar métricas de Apache Spark para trabajos y aplicaciones de EMR sin servidor. Esta integración está disponible cuando envía un trabajo o crea una aplicación mediante la AWS consola, la API EMR Serverless o la. AWS CLI

## Requisitos previos
<a name="monitoring-with-prometheus-prereqs"></a>

Antes de enviar sus métricas de Spark a Amazon Managed Service para Prometheus, debe cumplir los siguientes requisitos previos.
+ [Crear un espacio de trabajo de Amazon Managed Service para Prometheus.](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html) Este espacio de trabajo sirve como punto de conexión de ingestión. Anote la URL que se muestra para el **punto de conexión: URL de escritura remota**. Deberá especificar la URL al crear la aplicación EMR sin servidor.
+ Para conceder acceso a sus trabajos a Amazon Managed Service para Prometheus con fines de monitorización, añada la siguiente política a su rol de ejecución de trabajos.

  ```
  {
      "Sid": "AccessToPrometheus",
      "Effect": "Allow",
      "Action": ["aps:RemoteWrite"],
      "Resource": "arn:aws:aps:<AWS_REGION>:<AWS_ACCOUNT_ID>:workspace/<WORKSPACE_ID>"
  }
  ```

## Configuración
<a name="monitoring-with-prometheus-setup"></a>

**Para usar la AWS consola para crear una aplicación que esté integrada con Amazon Managed Service for Prometheus**

1. Consulte [Introducción a Amazon EMR sin servidor](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html                             ) para crear una aplicación.

1. Mientras crea una aplicación, elija **Usar ajustes personalizados** y, a continuación, configure la aplicación especificando la información en los campos que desee configurar.

1. En **Registros y métricas de aplicaciones**, seleccione **Entregar las métricas del motor a Amazon Managed Service para Prometheus** y, a continuación, especifique su URL de escritura remota.

1. Especifique cualquier otro ajuste de configuración que desee y, a continuación, seleccione **Crear e iniciar la aplicación**.

**Utilice la API AWS CLI sin servidor o EMR**

También puede utilizar la API EMR Serverless AWS CLI o la API EMR Serverless para integrar su aplicación EMR Serverless con Amazon Managed Service for Prometheus cuando ejecute los comandos o los comandos. `create-application` `start-job-run`

------
#### [ create-application ]

```
aws emr-serverless create-application \
--release-label emr-7.1.0 \
--type "SPARK" \
--monitoring-configuration '{ 
    "prometheusMonitoringConfiguration": {
        "remoteWriteUrl": "https://aps-workspaces.<AWS_REGION>.amazonaws.com/workspaces/<WORKSPACE_ID>/api/v1/remote_write"
    }
}'
```

------
#### [ start-job-run ]

```
aws emr-serverless start-job-run \
--application-id <APPPLICATION_ID> \
--execution-role-arn <JOB_EXECUTION_ROLE> \
--job-driver '{
    "sparkSubmit": {
        "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py",
        "entryPointArguments": ["10000"],
        "sparkSubmitParameters": "--conf spark.dynamicAllocation.maxExecutors=10"
    }
}' \
--configuration-overrides '{
     "monitoringConfiguration": {
        "prometheusMonitoringConfiguration": {
            "remoteWriteUrl": "https://aps-workspaces.<AWS_REGION>.amazonaws.com/workspaces/<WORKSPACE_ID>/api/v1/remote_write"
        }
    }
}'
```

------

Incluir `prometheusMonitoringConfiguration` en su comando indica que EMR sin servidor debe ejecutar el trabajo de Spark con un agente que recopile las métricas de Spark y las escriba en su punto de conexión `remoteWriteUrl` para Amazon Managed Service para Prometheus. A continuación, puede utilizar las métricas de Spark en Amazon Managed Service para Prometheus para la visualización, las alertas y el análisis.

## Propiedades de configuración avanzada
<a name="monitoring-with-prometheus-config-options"></a>

EMR sin servidor utiliza un componente de Spark denominado `PrometheusServlet` para recopilar las métricas de Spark y traduce los datos de rendimiento en datos compatibles con Amazon Managed Service para Prometheus. De forma predeterminada, EMR sin servidor establece los valores predeterminados en Spark y analiza las métricas de los controladores y ejecutores cuando envía un trabajo mediante `PrometheusMonitoringConfiguration`. 

En la siguiente tabla, se describen todas las propiedades que puede configurar cuando envíe un trabajo de Spark que envíe métricas a Amazon Managed Service para Prometheus.


| Propiedad de Spark | Predeterminado | Description (Descripción) | 
| --- | --- | --- | 
| spark.metrics.conf.\$1.sink.prometheusServlet.class | org.apache.spark.metrics.sink. PrometheusServlet | La clase que Spark utiliza para enviar métricas a Amazon Managed Service para Prometheus. Para anular el comportamiento predeterminado, especifique su propia clase personalizada. | 
| spark.metrics.conf.\$1.source.jvm.class | org.apache.spark.metrics.source. JvmSource | La clase que Spark utiliza para recopilar y enviar métricas cruciales desde la máquina virtual Java subyacente. Para dejar de recopilar métricas de JVM, deshabilite esta propiedad configurándola en una cadena vacía, como `""`. Para anular el comportamiento predeterminado, especifique su propia clase personalizada.  | 
| spark.metrics.conf.driver.sink.prometheusServlet.path | /metrics/prometheus | La URL diferente que Amazon Managed Service para Prometheus utiliza para recopilar las métricas del controlador. Para anular el comportamiento predeterminado, especifique su propia ruta. Para dejar de recopilar métricas del controlador, deshabilite esta propiedad configurándola en una cadena vacía, como `""`. | 
| spark.metrics.conf.executor.sink.prometheusServlet.path | /metrics/executor/prometheus | La URL diferente que Amazon Managed Service para Prometheus utiliza para recopilar las métricas del ejecutor. Para anular el comportamiento predeterminado, especifique su propia ruta. Para dejar de recopilar métricas del ejecutor, deshabilite esta propiedad configurándola en una cadena vacía, como `""`. | 

Para obtener más información sobre las métricas de Spark, consulte las [métricas de Apache Spark](https://spark.apache.org/docs/3.5.0/monitoring.html#metrics).

## Consideraciones y limitaciones
<a name="monitoring-with-prometheus-limitations"></a>

Cuando utilice Amazon Managed Service para Prometheus para recopilar métricas de EMR sin servidor, tenga en cuenta las siguientes consideraciones y limitaciones.
+ El soporte técnico para usar Amazon Managed Service para Prometheus con EMR sin servidor solo está disponible en aquellas [Regiones de AWS donde Amazon Managed Service para Prometheus esté disponible de forma general](https://docs.aws.amazon.com/general/latest/gr/prometheus-service.html).
+ Ejecutar el agente para recopilar las métricas de Spark en Amazon Managed Service para Prometheus requiere más recursos por parte de los trabajadores. Si elige un tamaño de trabajador más pequeño, como un trabajador de vCPU, el tiempo de ejecución de su trabajo podría aumentar.
+ La compatibilidad con Amazon Managed Service para Prometheus con EMR sin servidor solo está disponible para las versiones 7.1.0 y posteriores de Amazon EMR.
+ Amazon Managed Service para Prometheus debe implementarse en la misma cuenta en la que ejecuta EMR sin servidor para poder recopilar métricas.

# Métricas de uso de EMR sin servidor
<a name="monitoring-usage"></a>

Puedes usar las métricas CloudWatch de uso de Amazon para proporcionar visibilidad de los recursos que usa tu cuenta. Usa estas métricas para visualizar el uso de tus servicios en CloudWatch gráficos y paneles.

Las métricas de uso de EMR sin servidor se corresponden con las Service Quotas. Puede configurar alarmas que le avisen cuando su uso se acerque a una Service Quota. Para obtener más información, consulta [Service Quotas y CloudWatch alarmas de Amazon](https://docs.aws.amazon.com/servicequotas/latest/userguide/configure-cloudwatch.html) en la *Guía del usuario de Service Quotas*.

Para obtener más información acerca de las Service Quotas de EMR sin servidor, consulte [Cuotas y puntos de conexión para EMR Serverless](endpoints-quotas.md).

## Métricas de uso de Service Quotas para EMR sin servidor
<a name="usage-metrics"></a>

EMR sin servidor publica las siguientes métricas de uso de Service Quotas en el espacio de nombres `AWS/Usage`.


****  

| Métrica | Description (Descripción) | 
| --- | --- | 
| `ResourceCount`  | El número total de los recursos especificados que se ejecutan en su cuenta. Los recursos se definen por las [dimensiones](#usage-metrics-dimensions) que se asocian con la métrica. | 

## Dimensiones para las métricas de uso de Service Quotas de EMR sin servidor
<a name="usage-metrics-dimensions"></a>

Puede utilizar las siguientes dimensiones para ajustar las métricas de uso que publica EMR sin servidor.


****  

| Dimensión | Valor | Description (Descripción) | 
| --- | --- | --- | 
|  `Service`  |  EMR sin servidor  | El nombre del recurso Servicio de AWS que contiene el recurso. | 
|  `Type`  |  Recurso  | El tipo de entidad que EMR sin servidor comunica. | 
|  `Resource`  |  vCPU  | El tipo de recurso que EMR sin servidor sigue. | 
|  `Class`  |  Ninguno  | La clase de recurso que EMR sin servidor sigue. | 

# Automatización de EMR sin servidor con Amazon EventBridge
<a name="using-eventbridge"></a>

Puede utilizarla Amazon EventBridge para automatizar Servicios de AWS y responder automáticamente a los eventos del sistema, como los problemas de disponibilidad de las aplicaciones o los cambios en los recursos. EventBridge ofrece un flujo casi en tiempo real de los eventos del sistema que describen los cambios en sus AWS recursos. Puede crear reglas sencillas para indicar qué eventos le resultan de interés, así como qué acciones automatizadas se van a realizar cuando un evento cumple una de las reglas. Con EventBridge, puede hacer lo siguiente automáticamente:
+ Invocar una función AWS Lambda 
+ Transmitir un evento a Amazon Kinesis Data Streams
+ Activa una máquina de AWS Step Functions estados
+ Notificación sobre un tema de Amazon SNS o una cola de Amazon SQS

Por ejemplo, si lo usa EventBridge con EMR Serverless, puede activar una AWS Lambda función cuando un trabajo de ETL se realiza correctamente o notificar a un tema de Amazon SNS cuando un trabajo de ETL falla.

EMR sin servidor emite cuatro tipos de eventos:
+ Eventos de cambio de estado de una aplicación: eventos que emiten cada cambio de estado de una aplicación. Para obtener más información acerca lo que indica la aplicación, consulte [Estados de la aplicación](applications.md#application-states).
+ Eventos de cambio de estado de ejecución de un trabajo: eventos que emiten todos los cambios de estado de una ejecución de trabajo. Para obtener más información sobre esto, consulte [Estados de ejecuciones de trabajos](job-states.md).
+ Eventos de reintento de ejecución de trabajos: eventos que emiten cada reintento de ejecución de un trabajo desde Amazon EMR sin servidor, versión 7.1.0 y posteriores.
+ Eventos de actualización de uso de recursos de trabajo: eventos que emiten actualizaciones de uso de recursos para un trabajo que se ejecutan en intervalos cercanos a 30 minutos.

## Ejemplos de eventos EMR Serverless EventBridge
<a name="using-eventbridge-examples"></a>

Los eventos notificados por EMR sin servidor tienen un valor `aws.emr-serverless` asignado a la `source`, como en los ejemplos siguientes.

**Evento de cambio de estado de la aplicación**

El siguiente evento de ejemplo muestra una aplicación en el estado `CREATING`.

```
{
    "version": "0",
    "id": "9fd3cf79-1ff1-b633-4dd9-34508dc1e660",
    "detail-type": "EMR Serverless Application State Change",
    "source": "aws.emr-serverless",
    "account": "123456789012",
    "time": "2022-05-31T21:16:31Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "applicationId": "00f1cbsc6anuij25",
        "applicationName": "3965ad00-8fba-4932-a6c8-ded32786fd42",
        "arn": "arn:aws:emr-serverless:us-east-1:111122223333:/applications/00f1cbsc6anuij25",
        "releaseLabel": "emr-6.6.0",
        "state": "CREATING",
        "type": "HIVE",
        "createdAt": "2022-05-31T21:16:31.547953Z",
        "updatedAt": "2022-05-31T21:16:31.547970Z",
        "autoStopConfig": {
            "enabled": true,
            "idleTimeout": 15
        },
        "autoStartConfig": {
            "enabled": true
        }
    }
}
```

**Evento de cambio de estado de ejecución de trabajo**

El siguiente evento de ejemplo muestra una ejecución de trabajo que se mueve del estado `SCHEDULED` al estado `RUNNING`.

```
{
    "version": "0",
    "id": "00df3ec6-5da1-36e6-ab71-20f0de68f8a0",
    "detail-type": "EMR Serverless Job Run State Change",
    "source": "aws.emr-serverless",
    "account": "123456789012",
    "time": "2022-05-31T21:07:42Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "jobRunId": "00f1cbn5g4bb0c01",
        "applicationId": "00f1982r1uukb925",
        "arn": "arn:aws:emr-serverless:us-east-1:123456789012:/applications/00f1982r1uukb925/jobruns/00f1cbn5g4bb0c01",
        "releaseLabel": "emr-6.6.0",
        "state": "RUNNING",
        "previousState": "SCHEDULED",
        "createdBy": "arn:aws:sts::123456789012:assumed-role/TestRole-402dcef3ad14993c15d28263f64381e4cda34775/6622b6233b6d42f59c25dd2637346242",
        "updatedAt": "2022-05-31T21:07:42.299487Z",
        "createdAt": "2022-05-31T21:07:25.325900Z"
    }
}
```

**Evento de reintento de ejecución de trabajo**

A continuación, se muestra un ejemplo de un evento de reintento de ejecución de trabajo.

```
{
    "version": "0",
    "id": "00df3ec6-5da1-36e6-ab71-20f0de68f8a0",
    "detail-type": "EMR Serverless Job Run Retry",
    "source": "aws.emr-serverless",
    "account": "123456789012",
    "time": "2022-05-31T21:07:42Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "jobRunId": "00f1cbn5g4bb0c01",
        "applicationId": "00f1982r1uukb925",
        "arn": "arn:aws:emr-serverless:us-east-1:123456789012:/applications/00f1982r1uukb925/jobruns/00f1cbn5g4bb0c01",
        "releaseLabel": "emr-6.6.0",
        "createdBy": "arn:aws:sts::123456789012:assumed-role/TestRole-402dcef3ad14993c15d28263f64381e4cda34775/6622b6233b6d42f59c25dd2637346242",
        "updatedAt": "2022-05-31T21:07:42.299487Z",
        "createdAt": "2022-05-31T21:07:25.325900Z",
        //Attempt Details
        "previousAttempt": 1,
        "previousAttemptState": "FAILED",
        "previousAttemptCreatedAt": "2022-05-31T21:07:25.325900Z",
        "previousAttemptEndedAt": "2022-05-31T21:07:30.325900Z",
        "newAttempt": 2,
        "newAttemptCreatedAt": "2022-05-31T21:07:30.325900Z"
    }
}
```

**Actualización sobre la utilización de los recursos del trabajo**

El siguiente evento de ejemplo muestra la actualización final de utilización de recursos de un trabajo que pasó a un estado terminal después de ejecutarse.

```
{
    "version": "0",
    "id": "00df3ec6-5da1-36e6-ab71-20f0de68f8a0",
    "detail-type": "EMR Serverless Job Resource Utilization Update",
    "source": "aws.emr-serverless",
    "account": "123456789012",
    "time": "2022-05-31T21:07:42Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:emr-serverless:us-east-1:123456789012:/applications/00f1982r1uukb925/jobruns/00f1cbn5g4bb0c01"
    ],
    "detail": {
        "applicationId": "00f1982r1uukb925",
        "jobRunId": "00f1cbn5g4bb0c01",
        "attempt": 1,
        "mode": "BATCH",
        "createdAt": "2022-05-31T21:07:25.325900Z",
        "startedAt": "2022-05-31T21:07:26.123Z",
        "calculatedFrom": "2022-05-31T21:07:42.299487Z",
        "calculatedTo": "2022-05-31T21:07:30.325900Z",
        "resourceUtilizationFinal": true,
        "resourceUtilizationForInterval": {
            "vCPUHour": 0.023,
            "memoryGBHour": 0.114,
            "storageGBHour": 0.228
        },
        "billedResourceUtilizationForInterval": {
            "vCPUHour": 0.067,
            "memoryGBHour": 0.333,
            "storageGBHour": 0
        },
        "totalResourceUtilization": {
            "vCPUHour": 0.023,
            "memoryGBHour": 0.114,
            "storageGBHour": 0.228
        },
        "totalBilledResourceUtilization": {
            "vCPUHour": 0.067,
            "memoryGBHour": 0.333,
            "storageGBHour": 0
        }
    }
}
```

El campo **startedAt** solo estará presente en el caso de que el trabajo haya pasado a un estado de ejecución.