

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.

# Configuración de una aplicación cuando se trabaja con EMR sin servidor
<a name="application-capacity"></a>

Configure las aplicaciones que utiliza con EMR sin servidor. Por ejemplo, establezca la capacidad máxima a la que puede escalar verticalmente una aplicación, configurar la capacidad preinicializada a fin de que los controladores y los trabajadores estén preparados para responder y especificar un conjunto común de configuraciones de tiempo de ejecución y monitorización a nivel de aplicación. En las siguientes páginas se describe cómo configurar las aplicaciones cuando se utiliza EMR sin servidor.

**Topics**
+ [Descripción del comportamiento de las aplicaciones en EMR sin servidor](app-behavior.md)
+ [Capacidad preinicializada para trabajar con una aplicación en EMR sin servidor](pre-init-capacity.md)
+ [Configuración predeterminada de aplicación para EMR sin servidor](default-configs.md)

# Descripción del comportamiento de las aplicaciones en EMR sin servidor
<a name="app-behavior"></a>

En esta sección se describe el comportamiento de envío de trabajos, la configuración de la capacidad para el escalado y los ajustes de configuración del trabajador para EMR sin servidor.

## Comportamiento predeterminado de la aplicación
<a name="auto-start-stop"></a>

**Inicio automático**: una aplicación está configurada de forma predeterminada para que se inicie automáticamente al enviar el trabajo. Puede desactivar esta característica.

**Parada automática**: una aplicación está configurada de forma predeterminada para que se detenga automáticamente cuando esté inactiva durante 15 minutos. Cuando una aplicación cambia al estado `STOPPED`, libera cualquier capacidad preinicializada configurada. Puede modificar la cantidad de tiempo de inactividad antes de que una aplicación se detenga automáticamente o puede desactivar esta característica.

## Capacidad máxima
<a name="max-capacity"></a>

Puede configurar la capacidad máxima hasta la que puede escalarse verticalmente una aplicación. Puede especificar la capacidad máxima en términos de CPU, memoria (GB) y disco (GB). 

**nota**  
Se recomienda configurar la capacidad máxima para que sea proporcional a los tamaños de los trabajadores admitidos multiplicando el número de trabajadores por sus tamaños. Por ejemplo, si desea limitar la aplicación a 50 trabajadores con 2 vCPUs, 16 GB de memoria y 20 GB de disco, establezca la capacidad máxima en 100 vCPUs, 800 GB de memoria y 1000 GB de disco. 

## Configuraciones de trabajadores admitidas
<a name="worker-configs"></a>

La siguiente tabla muestra las configuraciones y los tamaños de trabajadores admitidos que se pueden especificar para EMR sin servidor. Configure diferentes tamaños para los controladores y los ejecutores en función de las necesidades de su carga de trabajo.


**Configuraciones y tamaños de trabajadores**  

| CPU | Memoria | Almacenamiento efímero predeterminado | 
| --- | --- | --- | 
|  1 vCPU  |  Mínimo 2 GB, máximo 8 GB, en incrementos de 1 GB  |  20 GB-200 GB  | 
|  2 vCPU  |  Mínimo 4 GB, máximo 16 GB, en incrementos de 1 GB  |  20 GB-200 GB  | 
|  4 vCPU  |  Mínimo 8 GB, máximo 30 GB, en incrementos de 1 GB  |  20 GB-200 GB  | 
|  8 vCPU  |  Mínimo 16 GB, máximo 60 GB, en incrementos de 4 GB  |  20 GB-200 GB  | 
|  16 vCPU  |  Mínimo 32 GB, máximo 120 GB, en incrementos de 8 GB  |  20 GB-200 GB  | 

**CPU**: cada trabajador puede tener 1, 2, 4, 8 o 16 vCPUs.

**Memoria**: cada trabajador tiene memoria, especificada en GB, dentro de los límites indicados en la tabla anterior. Los trabajos de Spark tienen una sobrecarga de memoria, lo que significa que la memoria que utilizan es superior a los tamaños de contenedor especificados. Esta sobrecarga se especifica con las propiedades `spark.driver.memoryOverhead` y `spark.executor.memoryOverhead`. La sobrecarga tiene un valor predeterminado del 10 % de la memoria del contenedor, con un mínimo de 384 MB. Debe tener en cuenta esta sobrecarga al elegir el tamaño de los trabajadores. 

Por ejemplo, si eliges 4 v CPUs para tu instancia de trabajo y una capacidad de almacenamiento preinicializada de 30 GB, establece un valor de aproximadamente 27 GB como memoria ejecutora para tu trabajo de Spark. Esto maximiza el uso de la capacidad preinicializada. La memoria utilizable es de 27 GB, más un 10 % de 27 GB (2,7 GB), para un total de 29,7 GB.

**Disco**: puede configurar a cada trabajador con discos de almacenamiento temporal con un tamaño mínimo de 20 GB y uno máximo de 200 GB. Solo paga por el almacenamiento adicional de más de 20 GB que configure por trabajador.

# Capacidad preinicializada para trabajar con una aplicación en EMR sin servidor
<a name="pre-init-capacity"></a>

EMR sin servidor ofrece una característica opcional que mantiene al controlador y a los trabajadores preinicializados y listos para responder en cuestión de segundos. Esto crea de manera efectiva un grupo de calentamiento de trabajadores para una aplicación. Esta característica se denomina capacidad *preinicializada*. Para configurar esta característica, establezca el parámetro `initialCapacity` de una aplicación en función del número de trabajadores que desee preinicializar. Con la capacidad de trabajadores preinicializada, los trabajos comienzan inmediatamente. Esto resulta ideal cuando se desean implementar aplicaciones iterativas y trabajos urgentes.

La capacidad preinicializada permite que un grupo de calentamiento de trabajadores esté listo para iniciar los trabajos y las sesiones en cuestión de segundos. Deberá pagar por los trabajadores aprovisionados y preinicializados incluso cuando la aplicación esté inactiva, por lo que le sugerimos habilitarla para casos de uso que se beneficien del rápido tiempo de inicio, así como dimensionarla para un uso óptimo de los recursos. Las aplicaciones EMR sin servidor se apagan automáticamente cuando están inactivas. Sugerimos mantener esta característica activada cuando se utilicen trabajadores preinicializados para evitar cargos inesperados.

Al enviar un trabajo, si hay trabajadores de `initialCapacity` disponibles, el trabajo utiliza esos recursos para iniciar su ejecución. Si esos trabajadores ya están siendo utilizados por otros trabajos, o si el trabajo necesita más recursos de los disponibles de `initialCapacity`, la aplicación solicita y obtiene trabajadores adicionales, hasta el límite máximo de recursos establecido para la aplicación. Cuando un trabajo termina de ejecutarse, libera a los trabajadores que utilizó y el número de recursos disponibles para la aplicación vuelve a la `initialCapacity`. Una aplicación mantiene la `initialCapacity` de recursos incluso después de que los trabajos terminen de ejecutarse. La aplicación libera los recursos sobrantes más allá de la `initialCapacity` cuando los trabajos ya no los necesitan para ejecutarse.

La capacidad preinicializada está disponible y lista para usarse cuando se inicie la aplicación. La capacidad preinicializada queda inactiva cuando la aplicación se detiene. Una aplicación pasa a ese estado `STARTED` solo si la capacidad preinicializada solicitada se ha creado y está lista para usarse. Durante todo el tiempo que la aplicación esté en el estado `STARTED`, EMR sin servidor mantiene la capacidad preinicializada disponible para ser utilizada o en uso por trabajos o cargas de trabajo interactivas. La característica restaura la capacidad de los contenedores liberados o con errores. Esto mantiene el número de trabajadores que especifica el parámetro `InitialCapacity`. El estado de una aplicación sin capacidad preinicializada puede cambiar inmediatamente de `CREATED` a `STARTED`.

 Puede configurar la aplicación para que libere capacidad preinicializada si no se utiliza durante un período de tiempo determinado, con un valor predeterminado de 15 minutos. Una aplicación detenida se inicia automáticamente cuando envía un nuevo trabajo. Puede establecer estas configuraciones de inicio y detención automáticas cuando cree la aplicación o cambiarlas cuando la aplicación esté en un estado `CREATED` o `STOPPED`.

Puede cambiar los recuentos de la `InitialCapacity` y especificar configuraciones de computación, como CPU, memoria y disco, para cada trabajador. Como no puede realizar modificaciones parciales, debe especificar todas las configuraciones de computación al cambiar los valores. Solo puede cambiar las configuraciones cuando la aplicación esté en el estado `CREATED` o `STOPPED`.

**nota**  
Para optimizar el uso de los recursos de su aplicación, le sugerimos alinear los tamaños de los contenedores con los tamaños de los trabajadores con capacidad preinicializados. Por ejemplo, si configuras el tamaño de tu ejecutor de Spark en 2 CPUs y tu memoria en 8 GB, pero el tamaño de tu trabajador con capacidad preinicializado es de 4 CPUs con 16 GB de memoria, los ejecutores de Spark solo utilizan la mitad de los recursos de los trabajadores cuando se les asigna este trabajo.

## Personalización de la capacidad preinicializada de Spark y Hive.
<a name="customizing-capacity"></a>

Puede personalizar aún más la capacidad preinicializada para las cargas de trabajo que se ejecutan en marcos de macrodatos específicos. Por ejemplo, cuando una carga de trabajo se ejecute en Apache Spark, especifique cuántos trabajadores comienzan como controladores y cuántos comienzan como ejecutores. Del mismo modo, cuando use Apache Hive, especifique cuántos trabajadores comienzan como controladores de Hive y cuántos deben ejecutar las tareas de Tez.

**Configuración de una aplicación que ejecute Apache Hive con capacidad preinicializada**

La siguiente solicitud de API crea una aplicación que ejecuta Apache Hive basada en la versión emr-6.6.0 de Amazon EMR. La aplicación comienza con 5 controladores Hive preinicializados, cada uno con 2 vCPU y 4 GB de memoria, y 50 trabajadores de tareas Tez preinicializados, cada uno con 4 vCPU y 8 GB de memoria. Cuando las consultas de Hive se ejecutan en esta aplicación, primero utilizan los trabajadores preinicializados y comienzan a ejecutarse inmediatamente. Si todos los trabajadores preinicializados están ocupados y se envían más trabajos de Hive, la aplicación puede escalarse hasta un total de 400 vCPU y 1024 GB de memoria. Si lo desea, puede omitir la capacidad del trabajador del `DRIVER` o de la `TEZ_TASK`.

```
aws emr-serverless create-application \
  --type "HIVE" \
  --name my-application-name \
  --release-label emr-6.6.0 \
  --initial-capacity '{
    "DRIVER": {
        "workerCount": 5,
        "workerConfiguration": {
            "cpu": "2vCPU",
            "memory": "4GB"
        }
    },
    "TEZ_TASK": {
        "workerCount": 50,
        "workerConfiguration": {
            "cpu": "4vCPU",
            "memory": "8GB"
        }
    }
  }' \
  --maximum-capacity '{
    "cpu": "400vCPU",
    "memory": "1024GB"
  }'
```

**Configuración de una aplicación que ejecute Apache Spark con capacidad preinicializada **

La siguiente solicitud de API crea una aplicación que ejecuta Apache Spark 3.2.0 basada en la versión emr-6.6.0 de Amazon EMR. La aplicación comienza con 5 controladores de Spark preinicializados, cada uno con 2 vCPU y 4 GB de memoria, y 50 trabajadores preinicializados, cada uno con 4 vCPU y 8 GB de memoria. Cuando los trabajos de Spark se ejecutan en esta aplicación, primero utilizan los trabajadores preinicializados y comienzan a ejecutarse inmediatamente. Si todos los trabajadores preinicializados están ocupados y se envían más trabajos de Spark, la aplicación puede escalarse hasta un total de 400 vCPU y 1024 GB de memoria. Si lo desea, puede omitir la capacidad del trabajador del `DRIVER` o del `EXECUTOR`.

**nota**  
Spark añade una sobrecarga de memoria configurable, con un valor predeterminado del 10 %, a la memoria solicitada para el controlador y los ejecutores. Para que los trabajos utilicen trabajadores preinicializados, la configuración de memoria de capacidad inicial debe ser mayor que la memoria que solicitan el trabajo y la sobrecarga.

```
aws emr-serverless create-application \
  --type "SPARK" \
  --name my-application-name \
  --release-label emr-6.6.0 \
  --initial-capacity '{
    "DRIVER": {
        "workerCount": 5,
        "workerConfiguration": {
            "cpu": "2vCPU",
            "memory": "4GB"
        }
    },
    "EXECUTOR": {
        "workerCount": 50,
        "workerConfiguration": {
            "cpu": "4vCPU",
            "memory": "8GB"
        }
    }
  }' \
  --maximum-capacity '{
    "cpu": "400vCPU",
    "memory": "1024GB"
  }'
```

# Configuración predeterminada de aplicación para EMR sin servidor
<a name="default-configs"></a>

Puede especificar un conjunto común de configuraciones de tiempo de ejecución y monitorización a nivel de aplicación para todos los trabajos que envía en la misma aplicación. Esto reduce la sobrecarga adicional asociada a la necesidad de enviar las mismas configuraciones para cada trabajo.

Puede modificar las configuraciones en los siguientes momentos:
+ [Declare las configuraciones a nivel de aplicación en el envío del trabajo.](#default-configs-declare)
+ [Anule las configuraciones predeterminadas durante la ejecución del trabajo.](#default-configs-override)

En las siguientes secciones se proporcionan más detalles y un ejemplo como contexto adicional.

## Declaración de las configuraciones a nivel de aplicación
<a name="default-configs-declare"></a>

Puede especificar las propiedades de configuración del registro y del tiempo de ejecución a nivel de aplicación para los trabajos que envíe en la aplicación.

**`monitoringConfiguration`**  
Para especificar las configuraciones de registro de los trabajos que envíe con la aplicación, utilice el campo [https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_MonitoringConfiguration.html](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_MonitoringConfiguration.html). Para obtener más información sobre el registro de EMR sin servidor, consulte [Almacenamiento de registros](logging.md).

**`runtimeConfiguration`**  
Para especificar propiedades de configuración en tiempo de ejecución como `spark-defaults`, proporcione un objeto de configuración en el campo `runtimeConfiguration`. Esto afecta a las configuraciones predeterminadas de todos los trabajos que envíe con la aplicación. Para obtener más información, consulte [Parámetro de anulación de la configuración de Hive](jobs-hive.md#hive-defaults-configurationOverrides) y [Parámetro de anulación de configuración de Spark](jobs-spark.md#spark-defaults-configurationOverrides).  
Las clasificaciones de configuración disponibles varían en función de la versión específica de EMR sin servidor. Por ejemplo, las clasificaciones para el Log4j personalizado `spark-driver-log4j2` y `spark-executor-log4j2` solo están disponibles en las versiones 6.8.0 y posteriores. Para obtener una lista de propiedades específicas de la aplicación, consulte [Propiedades de trabajo de Spark](jobs-spark.md#spark-defaults) y [Propiedades de los trabajos de Hive](jobs-hive.md#hive-defaults).  
También puede configurar las [propiedades de Apache Log4j2](log4j2.md), [AWS Secrets Manager para la protección de datos](secrets-manager.md), así como el [tiempo de ejecución de Java 17](using-java-runtime.md) al nivel de la aplicación.  
Para transmitir los secretos del Secrets Manager a nivel de aplicación, asocie la siguiente política a los usuarios y roles que necesiten crear o actualizar aplicaciones EMR sin servidor con secretos.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "SecretsManagerPolicy",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:DescribeSecret"
      ],
      "Resource": [
        "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret-name-123abc"
      ]
    },
    {
      "Sid": "KMSDecryptPolicy",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012"
      ]
    }
  ]
}
```
Para obtener más información sobre la creación de políticas personalizadas para los secretos, consulte los [ejemplos de políticas de permisos para AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html) en la *Guía del usuario de AWS Secrets Manager *.

**nota**  
La `runtimeConfiguration` que especifique a nivel de aplicación se asigna a la `applicationConfiguration` en la API de [https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html).

### Declaración de ejemplo
<a name="default-configs-declare-example"></a>

En el siguiente ejemplo, se muestra cómo declarar configuraciones predeterminadas con `create-application`.

```
aws emr-serverless create-application \
    --release-label release-version  \
    --type SPARK \
    --name my-application-name \
    --runtime-configuration '[
        {
            "classification": "spark-defaults",
            "properties": {
                "spark.driver.cores": "4",
                "spark.executor.cores": "2",
                "spark.driver.memory": "8G",
                "spark.executor.memory": "8G",
                "spark.executor.instances": "2",
                "spark.hadoop.javax.jdo.option.ConnectionDriverName":"org.mariadb.jdbc.Driver",
                "spark.hadoop.javax.jdo.option.ConnectionURL":"jdbc:mysql://db-host:db-port/db-name",
                "spark.hadoop.javax.jdo.option.ConnectionUserName":"connection-user-name",
                "spark.hadoop.javax.jdo.option.ConnectionPassword": "EMR.secret@SecretID"
            }
        },
        {
            "classification": "spark-driver-log4j2",
            "properties": {
                "rootLogger.level":"error", 
                "logger.IdentifierForClass.name": "classpathForSettingLogger",
                "logger.IdentifierForClass.level": "info"
            }
        }
    ]' \
    --monitoring-configuration '{
        "s3MonitoringConfiguration": {
            "logUri": "s3://amzn-s3-demo-logging-bucket/logs/app-level"
        },
        "managedPersistenceMonitoringConfiguration": {
            "enabled": false
        }
    }'
```

## Anulación de configuraciones durante la ejecución de un trabajo
<a name="default-configs-override"></a>

Puede especificar las anulaciones de configuración para la configuración de la aplicación y la configuración de supervisión con la API de [https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html). Luego, EMR sin servidor combina las configuraciones que especifique en el nivel de aplicación y en el nivel de trabajo para determinar las configuraciones para la ejecución del trabajo. 

El nivel de detalle cuando se produce la fusión es el siguiente:
+ **[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)**: tipo de clasificación, por ejemplo `spark-defaults`.
+ **[https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_ConfigurationOverrides.html#emrserverless-Type-ConfigurationOverrides-monitoringConfiguration](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_ConfigurationOverrides.html#emrserverless-Type-ConfigurationOverrides-monitoringConfiguration)**: tipo de configuración, por ejemplo `s3MonitoringConfiguration`.

**nota**  
La prioridad de las configuraciones que proporcione a [https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html) sustituirá a las configuraciones que usted proporcione a nivel de aplicación.

Para obtener más información sobre las clasificaciones de prioridades, consulte [Parámetro de anulación de la configuración de Hive](jobs-hive.md#hive-defaults-configurationOverrides) y [Parámetro de anulación de configuración de Spark](jobs-spark.md#spark-defaults-configurationOverrides).

Al iniciar un trabajo, si no especifica una configuración concreta, esta se heredará de la aplicación. Si declara las configuraciones a nivel de trabajo, puede realizar las siguientes operaciones:
+ **Anular una configuración existente**: proporcione el mismo parámetro de configuración en la solicitud `StartJobRun` con sus valores de anulación. 
+ **Añadir una configuración adicional**: añada el nuevo parámetro de configuración en la solicitud `StartJobRun` con los valores que desee especificar.
+ **Eliminar una configuración existente**: para eliminar una *configuración en tiempo de ejecución* de una aplicación, proporcione la clave de la configuración que desee eliminar y pase una declaración vacía `{}` para la configuración. No recomendamos eliminar ninguna clasificación que contenga parámetros necesarios para la ejecución de un trabajo. Por ejemplo, si intenta eliminar las [propiedades necesarias para un trabajo de Hive](https://docs.aws.amazon.com/), el trabajo dará error.

  Para eliminar una *configuración de supervisión* de aplicaciones, utilice el método adecuado para el tipo de configuración correspondiente:
  + **`cloudWatchLoggingConfiguration`**: para eliminar `cloudWatchLogging`, pase el indicador de habilitación como `false`. 
  + **`managedPersistenceMonitoringConfiguration`**: para eliminar la configuración de persistencia administrada y volver al estado activado predeterminado, introduzca una declaración vacía `{}` para la configuración. 
  + **`s3MonitoringConfiguration`**: para eliminar `s3MonitoringConfiguration`, pase una declaración vacía `{}` para la configuración.

### Anulación de ejemplo
<a name="default-configs-override-example"></a>

El siguiente ejemplo muestra diferentes operaciones que puede realizar durante el envío de un trabajo en `start-job-run`.

```
aws emr-serverless start-job-run \
    --application-id your-application-id \
    --execution-role-arn your-job-role-arn \
    --job-driver '{
        "sparkSubmit": {
            "entryPoint": "s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py", 
            "entryPointArguments": ["s3://amzn-s3-demo-destination-bucket1/wordcount_output"]
        }
    }' \
    --configuration-overrides '{
        "applicationConfiguration": [ 
            {
                // Override existing configuration for spark-defaults in the application
                "classification": "spark-defaults", 
                "properties": {
                    "spark.driver.cores": "2",
                    "spark.executor.cores": "1",
                    "spark.driver.memory": "4G",
                    "spark.executor.memory": "4G"
                }
            },
            {
                // Add configuration for spark-executor-log4j2
                "classification": "spark-executor-log4j2",
                "properties": {
                    "rootLogger.level": "error", 
                    "logger.IdentifierForClass.name": "classpathForSettingLogger",
                    "logger.IdentifierForClass.level": "info"
                }
            },
            {
                // Remove existing configuration for spark-driver-log4j2 from the application
                "classification": "spark-driver-log4j2",
                "properties": {}
            }
        ],
        "monitoringConfiguration": {
            "managedPersistenceMonitoringConfiguration": {
                // Override existing configuration for managed persistence
                "enabled": true
            },
            "s3MonitoringConfiguration": {
                // Remove configuration of S3 monitoring
            },
            "cloudWatchLoggingConfiguration": {
                // Add configuration for CloudWatch logging
                "enabled": true
            }
        }
    }'
```

En el momento de la ejecución del trabajo, se aplicarán las siguientes clasificaciones y configuraciones en función de la clasificación de anulación de prioridades descrita en [Parámetro de anulación de la configuración de Hive](jobs-hive.md#hive-defaults-configurationOverrides) y [Parámetro de anulación de configuración de Spark](jobs-spark.md#spark-defaults-configurationOverrides).
+ La clasificación `spark-defaults` se actualizará con las propiedades especificadas a nivel de trabajo. Solo se consideran para esta clasificación las propiedades incluidas en `StartJobRun`.
+ La clasificación `spark-executor-log4j2` se añadirá a la lista de clasificaciones existente.
+ La clasificación `spark-driver-log4j2` se eliminará.
+ Las configuraciones para `managedPersistenceMonitoringConfiguration` se actualizarán con las configuraciones a nivel de trabajo.
+ Las configuraciones para `s3MonitoringConfiguration` se eliminarán.
+ Las configuraciones para `cloudWatchLoggingConfiguration` se añadirán a las configuraciones de monitorización existentes.