

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Journalisation et surveillance
<a name="logging-monitoring"></a>

La surveillance joue un rôle important dans le maintien de la fiabilité, de la disponibilité et des performances des applications et des tâches EMR sans serveur. Vous devez collecter des données de surveillance provenant de tous les composants de vos solutions EMR Serverless afin de pouvoir corriger plus facilement les défaillances multipoints si elles se produisent.

**Topics**
+ [

# Stockage des journaux
](logging.md)
+ [

# Bûches rotatives
](rotating-logs.md)
+ [

# Chiffrement des journaux
](jobs-log-encryption.md)
+ [

# Configuration des propriétés Apache Log4j2 pour Amazon EMR Serverless
](log4j2.md)
+ [

# Surveillance de l'EMR sans serveur
](metrics.md)
+ [

# Automatiser l'EMR sans serveur avec Amazon EventBridge
](using-eventbridge.md)

# Stockage des journaux
<a name="logging"></a>

Pour suivre l'avancement de vos tâches sur EMR Serverless et résoudre les problèmes d'échec, choisissez la manière dont EMR Serverless stocke et diffuse les journaux des applications. Lorsque vous soumettez une exécution de tâche, spécifiez le stockage géré, Amazon S3 et Amazon CloudWatch comme options de journalisation.

Avec CloudWatch, spécifiez les types de journaux et les emplacements des journaux que vous souhaitez utiliser, ou acceptez les types et emplacements par défaut. Pour plus d'informations sur CloudWatch les journaux, reportez-vous à[Journalisation pour EMR sans serveur avec Amazon CloudWatch](#jobs-log-storage-cw). En ce qui concerne le stockage géré et la journalisation S3, le tableau suivant répertorie les emplacements des journaux et la disponibilité de l'interface utilisateur auxquels vous pouvez vous attendre si vous choisissez le [stockage géré](#jobs-log-storage-managed-storage), les [compartiments Amazon S3](#jobs-log-storage-s3-buckets) ou les deux.


| Option | Journaux d'événements | Journaux de conteneurs | Interface utilisateur de l'application | 
| --- | --- | --- | --- | 
|  Stockage géré  |  Stocké dans un espace de stockage géré  |  Stocké dans un espace de stockage géré  |  Pris en charge  | 
|  Stockage géré et compartiment S3  |  Stocké aux deux endroits  |  Stocké dans un compartiment S3  |  Pris en charge  | 
|  Compartiment Amazon S3  |  Stocké dans un compartiment S3  |  Stocké dans un compartiment S3  |  Non pris en charge 1  | 

1 Nous vous conseillons de conserver l'option **Stockage géré** sélectionnée. Dans le cas contraire, vous ne pouvez pas utiliser l'application intégrée UIs.

## Journalisation pour EMR sans serveur avec stockage géré
<a name="jobs-log-storage-managed-storage"></a>

Par défaut, EMR Serverless stocke les journaux des applications en toute sécurité dans le stockage géré par Amazon EMR pendant une durée maximale de 30 jours.

**Note**  
Si vous désactivez l'option par défaut, Amazon EMR ne pourra pas résoudre les problèmes liés à vos tâches en votre nom. Exemple : vous ne pouvez pas accéder à Spark-UI depuis la console EMR Serverless.

Pour désactiver cette option dans EMR Studio, décochez la case **Autoriser AWS à conserver les journaux pendant 30 jours** dans la section **Paramètres supplémentaires** de la page **Soumettre** la tâche. 

Pour désactiver cette option depuis le AWS CLI, utilisez la `managedPersistenceMonitoringConfiguration` configuration lorsque vous soumettez une exécution de tâche.

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

Si votre application EMR Serverless se trouve dans un sous-réseau privé avec des points de terminaison VPC pour Amazon S3 et que vous attachez une politique de point de terminaison pour contrôler l'accès, ajoutez les autorisations suivantes pour qu'EMR Serverless stocke et diffuse les journaux des applications. `Resource`Remplacez-les par les `AppInfo` compartiments du tableau des régions disponibles dans [Exemples de politiques pour les sous-réseaux privés qui accèdent à 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"
        }
      }
    }
  ]
}
```

------

En outre, utilisez la clé de `aws:SourceVpc` condition pour vous assurer que la demande transite par le VPC auquel le point de terminaison du VPC est attaché.

## Journalisation pour EMR sans serveur avec des compartiments Amazon S3
<a name="jobs-log-storage-s3-buckets"></a>

Avant que vos tâches puissent envoyer des données de journal à Amazon S3, incluez les autorisations suivantes dans la politique d'autorisation pour le rôle d'exécution des tâches. `amzn-s3-demo-logging-bucket`Remplacez-le par le nom de votre bucket de journalisation.

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

****  

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

------

Pour configurer un compartiment Amazon S3 afin de stocker les journaux provenant du AWS CLI, utilisez la `s3MonitoringConfiguration` configuration lorsque vous lancez une tâche. Pour ce faire, fournissez les éléments suivants `--configuration-overrides` dans la configuration. 

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

Pour les tâches par lots pour lesquelles aucune nouvelle tentative n'est activée, EMR Serverless envoie les journaux au chemin suivant :

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

Les journaux du pilote Spark sont stockés dans le chemin suivant par EMR Serverless

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

Les journaux de l'exécuteur Spark sont stockés dans le chemin suivant par EMR Serverless

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

Le <EXECUTOR-ID>est un entier.

Les versions 7.1.0 et supérieures d'EMR Serverless prennent en charge les nouvelles tentatives pour les tâches de streaming et les tâches par lots. Si vous exécutez une tâche avec les nouvelles tentatives activées, EMR Serverless ajoute automatiquement un numéro de tentative au préfixe du chemin du journal, afin que vous puissiez mieux distinguer et suivre les journaux.

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

## Journalisation pour EMR sans serveur avec Amazon CloudWatch
<a name="jobs-log-storage-cw"></a>

Lorsque vous soumettez une tâche à une application EMR Serverless, choisissez Amazon CloudWatch comme option pour stocker les journaux de votre candidature. Cela vous permet d'utiliser les fonctionnalités d'analyse des CloudWatch CloudWatch journaux telles que Logs Insights et Live Tail. Vous pouvez également diffuser des journaux depuis d'autres systèmes, par exemple CloudWatch à des OpenSearch fins d'analyse plus approfondie.

EMR Serverless fournit une journalisation en temps réel pour les journaux des conducteurs. Vous pouvez accéder aux journaux en temps réel grâce à la fonctionnalité CloudWatch Live Tail ou via les commandes de queue de la CloudWatch CLI.

Par défaut, la CloudWatch journalisation est désactivée pour EMR Serverless. Pour l'activer, utilisez la configuration dans[AWS CLI](#jobs-log-storage-cw-cli).

**Note**  
Amazon CloudWatch publie des journaux en temps réel, ce qui lui permet de mobiliser davantage de ressources de la part de ses employés. Si vous optez pour une faible capacité de travail, l'impact sur la durée d'exécution de votre travail peut augmenter. Si vous activez la CloudWatch journalisation, nous vous suggérons de choisir une capacité de travail supérieure. Il est également possible que la publication du journal soit ralentie si le taux de transactions par seconde (TPS) est trop faible pour. `PutLogEvents` La configuration CloudWatch de régulation est globale pour tous les services, y compris EMR Serverless. Pour plus d'informations, reportez-vous à [la section Comment déterminer la régulation dans mes CloudWatch journaux](https://repost.aws/knowledge-center/cloudwatch-logs-throttling) ? sur *AWS re:post*.

### Autorisations requises pour se connecter avec CloudWatch
<a name="jobs-log-storage-cw-permissions"></a>

Avant que vos tâches puissent envoyer des données de journal à Amazon CloudWatch, incluez les autorisations suivantes dans la politique d'autorisation pour le rôle d'exécution des tâches.

------
#### [ 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>

Pour configurer Amazon CloudWatch afin qu'il stocke les journaux pour EMR Serverless à partir du AWS CLI, utilisez la `cloudWatchLoggingConfiguration` configuration lorsque vous lancez une tâche. Pour ce faire, fournissez les remplacements de configuration suivants. Vous pouvez également fournir un nom de groupe de journaux, un nom de préfixe de flux de journaux, des types de journaux et un ARN de clé de chiffrement.

Si vous ne spécifiez pas de valeurs facultatives, CloudWatch publie les journaux dans un groupe de journaux par défaut`/aws/emr-serverless`, avec le flux de journaux par défaut`/applications/applicationId/jobs/jobId/worker-type`.

Les versions 7.1.0 et supérieures d'EMR Serverless prennent en charge les nouvelles tentatives pour les tâches de streaming et les tâches par lots. Si vous avez activé les nouvelles tentatives pour une tâche, EMR Serverless ajoute automatiquement un numéro de tentative au préfixe du chemin du journal, afin que vous puissiez mieux distinguer et suivre les journaux. 

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

Voici la configuration minimale requise pour activer la CloudWatch journalisation Amazon avec les paramètres par défaut pour EMR Serverless :

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

L'exemple suivant montre toutes les configurations obligatoires et facultatives qui spécifient le moment où vous activez la CloudWatch journalisation Amazon pour EMR Serverless. Les `logTypes` valeurs prises en charge sont également répertoriées dans l'exemple suivant.

```
{
    "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
             }
         }
     }
}
```

Par défaut, EMR Serverless publie uniquement le pilote stdout et stderr vers lequel stderr se connecte. CloudWatch Si vous souhaitez d'autres journaux, spécifiez un rôle de conteneur et les types de journaux correspondants `logTypes` dans le champ.

La liste suivante indique les types de travailleurs pris en charge qui sont spécifiés pour la `logTypes` configuration :

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

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

# Bûches rotatives
<a name="rotating-logs"></a>

Amazon EMR Serverless peut alterner les journaux d'applications et les journaux d'événements Spark. La rotation des journaux permet de résoudre le problème des tâches de longue durée qui génèrent des fichiers journaux volumineux qui peuvent occuper tout l'espace disque. La rotation des journaux vous permet d'économiser de l'espace de stockage sur disque et de réduire le nombre d'échecs de tâches, car il ne vous reste plus d'espace sur votre disque. 

La rotation des journaux est activée par défaut et n'est disponible que pour les tâches Spark.

**Journaux d'événements Spark**

**Note**  
La rotation du journal d'événements Spark est disponible sur toutes les étiquettes de version d'Amazon EMR.

Au lieu de générer un seul fichier journal des événements, EMR Serverless fait pivoter le journal des événements à intervalles réguliers et supprime les anciens fichiers journaux d'événements. La rotation des journaux n'affecte pas les journaux chargés dans le compartiment S3.

**Journaux des applications Spark**

**Note**  
La rotation des journaux des applications Spark est disponible sur toutes les étiquettes de version d'Amazon EMR.

EMR Serverless fait également pivoter les journaux de l'application Spark pour les pilotes et les exécuteurs, tels que les fichiers et. `stdout` `stderr` Vous pouvez accéder aux derniers fichiers journaux en choisissant les liens des journaux dans Studio à l'aide des liens Spark History Server et Live UI. Les fichiers journaux sont les versions tronquées des derniers journaux. Pour faire référence aux anciens journaux soumis à une rotation, spécifiez un emplacement Amazon S3 lors du stockage des journaux. Reportez-vous à la section [Journalisation pour EMR sans serveur avec des compartiments Amazon S3](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/logging.html#jobs-log-storage-s3-buckets) pour plus d'informations.

Vous trouverez les derniers fichiers journaux à l'emplacement suivant. EMR Serverless actualise les fichiers toutes les 15 secondes. Ces fichiers peuvent aller de 0 Mo à 128 Mo.

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

L'emplacement suivant contient les anciens fichiers ayant fait l'objet d'une rotation. La taille de chaque fichier est de 128 Mo.

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

Le même comportement s'applique également aux exécuteurs Spark. Cette modification s'applique uniquement à la journalisation S3. La rotation des journaux n'apporte aucune modification aux flux de journaux chargés sur Amazon CloudWatch.

Les versions 7.1.0 et supérieures d'EMR Serverless prennent en charge les nouvelles tentatives pour le streaming et les tâches par lots. Si vous avez activé les nouvelles tentatives pour votre tâche, EMR Serverless ajoute un préfixe au chemin du journal pour ces tâches afin que vous puissiez mieux suivre et distinguer les journaux les uns des autres. Ce chemin contient tous les journaux ayant fait l'objet d'une rotation.

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

# Chiffrement des journaux
<a name="jobs-log-encryption"></a>

## Chiffrement des journaux EMR sans serveur avec stockage géré
<a name="jobs-log-encryption-managed-storage"></a>

Pour chiffrer les journaux du stockage géré à l'aide de votre propre clé KMS, utilisez la `managedPersistenceMonitoringConfiguration` configuration lorsque vous soumettez une exécution de tâche.

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

## Chiffrement des journaux EMR sans serveur avec des compartiments Amazon S3
<a name="jobs-log-encryption-s3-buckets"></a>

Pour chiffrer les journaux de votre compartiment Amazon S3 avec votre propre clé KMS, utilisez la `s3MonitoringConfiguration` configuration lorsque vous soumettez une exécution de tâche.

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

## Chiffrer les journaux EMR sans serveur avec Amazon CloudWatch
<a name="jobs-log-encryption-cw"></a>

Pour chiffrer les journaux dans Amazon CloudWatch avec votre propre clé KMS, utilisez la `cloudWatchLoggingConfiguration` configuration lorsque vous soumettez une exécution de tâche.

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

## Autorisations requises pour le chiffrement des journaux
<a name="jobs-log-encryption-permissions"></a>

**Topics**
+ [

### Autorisations utilisateur requises
](#jobs-log-encryption-permissions-user)
+ [

### Autorisations relatives aux clés de chiffrement pour Amazon S3 et le stockage géré
](#jobs-log-encryption-permissions-s3)
+ [

### Autorisations relatives aux clés de chiffrement pour Amazon CloudWatch
](#jobs-log-encryption-permissions-cw)

### Autorisations utilisateur requises
<a name="jobs-log-encryption-permissions-user"></a>

L'utilisateur qui soumet le travail ou consulte les journaux ou l'application UIs doit être autorisé à utiliser la clé. Vous pouvez spécifier les autorisations dans la politique clé KMS ou dans la stratégie IAM pour l'utilisateur, le groupe ou le rôle. Si l'utilisateur qui soumet la tâche ne dispose pas des autorisations clés KMS, EMR Serverless rejette la soumission de l'exécution de la tâche.

**Exemple de politique clé**

La politique clé suivante fournit les autorisations nécessaires pour `kms:GenerateDataKey` et `kms:Decrypt` :

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

**Exemple de politique IAM**

La politique IAM suivante fournit les autorisations nécessaires pour `kms:GenerateDataKey` et `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"
    }
  ]
}
```

------

Pour lancer l'interface utilisateur Spark ou Tez, autorisez vos utilisateurs, groupes ou rôles à accéder à l'`emr-serverless:GetDashboardForJobRun`API comme suit :

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

****  

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

------

### Autorisations relatives aux clés de chiffrement pour Amazon S3 et le stockage géré
<a name="jobs-log-encryption-permissions-s3"></a>

Lorsque vous chiffrez des journaux avec votre propre clé de chiffrement dans le stockage géré ou dans vos compartiments S3, configurez les autorisations relatives aux clés KMS comme suit.

Le `emr-serverless.amazonaws.com` principal doit disposer des autorisations suivantes dans la politique relative à la clé 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"
       }
     }
 }
```

Pour des raisons de sécurité, nous vous suggérons d'ajouter une clé de `aws:SourceArn` condition à la politique de clé KMS. La clé de condition globale IAM `aws:SourceArn` permet de garantir qu'EMR Serverless utilise la clé KMS uniquement pour l'ARN d'une application. 

Le rôle d'exécution des tâches doit disposer des autorisations suivantes dans sa politique 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"
    }
  ]
}
```

------

### Autorisations relatives aux clés de chiffrement pour Amazon CloudWatch
<a name="jobs-log-encryption-permissions-cw"></a>

Pour associer l'ARN de la clé KMS à votre groupe de journaux, utilisez la politique IAM suivante pour le rôle d'exécution des tâches.

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

****  

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

------

Configurez la politique relative aux clés KMS pour accorder des autorisations KMS à 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"
    }
  ]
}
```

------

# Configuration des propriétés Apache Log4j2 pour Amazon EMR Serverless
<a name="log4j2"></a>

Cette page décrit comment configurer les propriétés personnalisées d'[Apache Log4j 2.x pour les tâches](https://logging.apache.org/log4j/2.x/) EMR sans serveur sur. `StartJobRun` Si vous souhaitez configurer les classifications Log4j au niveau de l'application, reportez-vous à. [Configuration d'application par défaut pour EMR Serverless](default-configs.md)

## Configuration des propriétés de Spark Log4j2 pour Amazon EMR Serverless
<a name="log4j2-spark"></a>

Avec les versions 6.8.0 et supérieures d'Amazon EMR, vous pouvez personnaliser les propriétés d'[Apache Log4j 2.x](https://logging.apache.org/log4j/2.x/) pour spécifier des configurations de journal précises. Cela simplifie le dépannage de vos tâches Spark sur EMR Serverless. Pour configurer ces propriétés, utilisez les `spark-executor-log4j2` classifications `spark-driver-log4j2` et.

**Topics**
+ [

### Classifications Log4j2 pour Spark
](#log4j2-spark-class)
+ [

### Exemple de configuration Log4j2 pour Spark
](#log4j2-spark-example)
+ [

### Log4j2 dans les exemples de tâches Spark
](#log4j2-spark-jobs)
+ [

### Considérations relatives à Log4j2 pour Spark
](#log4j2-spark-considerations)

### Classifications Log4j2 pour Spark
<a name="log4j2-spark-class"></a>

Pour personnaliser les configurations du journal Spark, utilisez les classifications suivantes avec [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). Pour configurer les propriétés de Log4j 2.x, utilisez ce qui suit. [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`**  
Cette classification définit les valeurs du `log4j2.properties` fichier pour le pilote.

**`spark-executor-log4j2`**  
Cette classification définit les valeurs du `log4j2.properties` fichier pour l'exécuteur.

### Exemple de configuration Log4j2 pour Spark
<a name="log4j2-spark-example"></a>

L'exemple suivant montre comment soumettre une tâche Spark pour personnaliser les `applicationConfiguration` configurations Log4j2 pour le pilote et l'exécuteur Spark.

Pour configurer les classifications Log4j au niveau de l'application plutôt que lorsque vous soumettez le travail, reportez-vous à. [Configuration d'application par défaut pour EMR Serverless](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 dans les exemples de tâches Spark
<a name="log4j2-spark-jobs"></a>

Les exemples de code suivants montrent comment créer une application Spark pendant que vous initialisez une configuration Log4j2 personnalisée pour l'application.

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

**Example - Utiliser Log4j2 pour une tâche Spark avec 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()
```
Pour personnaliser Log4j2 pour le pilote lorsque vous exécutez une tâche Spark, utilisez la configuration suivante :  

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

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

**Example - Utilisation de Log4j2 pour une tâche Spark avec 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()
  }
}
```
Pour personnaliser Log4j2 pour le pilote lorsque vous exécutez une tâche Spark, utilisez la configuration suivante :  

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

------

### Considérations relatives à Log4j2 pour Spark
<a name="log4j2-spark-considerations"></a>

Les propriétés Log4j2.x suivantes ne sont pas configurables pour les processus Spark :
+ `rootLogger.appenderRef.stdout.ref`
+ `appender.console.type`
+ `appender.console.name`
+ `appender.console.target`
+ `appender.console.layout.type`
+ `appender.console.layout.pattern`

[Pour des informations détaillées sur les propriétés de Log4j2.x configurables, reportez-vous au fichier sur. `log4j2.properties.template`](https://github.com/apache/spark/blob/v3.3.0/conf/log4j2.properties.template) GitHub

# Surveillance de l'EMR sans serveur
<a name="metrics"></a>

Cette section décrit les méthodes de surveillance de vos applications et tâches Amazon EMR Serverless.

**Topics**
+ [

# Surveillance des applications et des tâches EMR sans serveur
](app-job-metrics.md)
+ [

# Surveillez les métriques de Spark avec Amazon Managed Service pour Prometheus
](monitor-with-prometheus.md)
+ [

# Mesures d'utilisation EMR sans serveur
](monitoring-usage.md)

# Surveillance des applications et des tâches EMR sans serveur
<a name="app-job-metrics"></a>

Avec Amazon CloudWatch Metrics for EMR Serverless, vous pouvez recevoir des CloudWatch métriques en une minute et accéder à des CloudWatch tableaux de bord pour accéder aux near-real-time opérations et aux performances de vos applications EMR Serverless.

EMR Serverless envoie des métriques à chaque minute. CloudWatch EMR Serverless émet ces métriques au niveau de l'application ainsi qu'au niveau de la tâche, du type de travailleur et au niveau de l'application. capacity-allocation-type

Pour commencer, utilisez le modèle de tableau de CloudWatch bord EMR Serverless fourni dans le référentiel [EMR GitHub Serverless](https://github.com/aws-samples/emr-serverless-samples/tree/main/cloudformation/emr-serverless-cloudwatch-dashboard/) et déployez-le.

**Note**  
Les [charges de travail interactives EMR sans serveur](interactive-workloads.md) sont uniquement activées pour la surveillance au niveau de l'application et ont une nouvelle dimension de type de travailleur. `Spark_Kernel` Pour surveiller et déboguer vos charges de travail interactives, accédez aux journaux et à l'interface utilisateur d'Apache Spark depuis votre [espace de travail EMR Studio.](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-debug.html#emr-studio-debug-serverless)

## Surveillance des métriques
<a name="app-job-metrics-versions"></a>

**Important**  
Nous restructurons notre affichage des métriques pour ajouter `ApplicationName` et `JobName` en tant que dimensions. Pour les versions 7.10 et ultérieures, les anciennes métriques ne seront plus mises à jour. Pour les versions EMR inférieures à 7.10, les anciennes métriques sont toujours disponibles.

**Dimensions actuelles**

Le tableau ci-dessous décrit les dimensions EMR Serverless disponibles dans l'espace de noms. `AWS/EMR Serverless`


**Dimensions des métriques EMR sans serveur**  

| Dimension | Description | 
| --- | --- | 
| ApplicationId | Filtre toutes les métriques d'une application EMR sans serveur à l'aide de l'ID de l'application. | 
| ApplicationName | Filtre toutes les métriques d'une application EMR sans serveur utilisant le nom. Si le nom n'est pas fourni ou contient des caractères non ASCII, il est publié sous le nom **[**Non spécifié]. | 
| JobId | Filtre toutes les métriques d'un EMR Serverless, l'ID d'exécution de la tâche. | 
| JobName | Filtres pour toutes les métriques d'une tâche EMR sans serveur exécutée en utilisant le nom. Si le nom n'est pas fourni ou contient des caractères non ASCII, il est publié sous le nom **[**Non spécifié]. | 
| WorkerType | Filtres pour tous les indicateurs d'un type de travailleur donné. Par exemple, vous pouvez filtrer pour `SPARK_DRIVER` et `SPARK_EXECUTORS` pour les tâches Spark. | 
| CapacityAllocationType | Filtres pour tous les indicateurs d'un type d'allocation de capacité donné. Par exemple, vous pouvez filtrer `PreInitCapacity` pour la capacité pré-initialisée et `OnDemandCapacity` pour tout le reste. | 

## Surveillance au niveau de l'application
<a name="app-level-metrics"></a>

Vous pouvez surveiller l'utilisation de la capacité au niveau de l'application EMR Serverless à l'aide des métriques Amazon. CloudWatch Vous pouvez également configurer un écran unique pour surveiller l'utilisation de la capacité des applications dans un CloudWatch tableau de bord.


**Mesures relatives aux applications EMR sans serveur**  

| Métrique | Description | Unit | Dimension | 
| --- | --- | --- | --- | 
| MaxCPUAllowed |  Processeur maximal autorisé pour l'application.  | vCPU | ApplicationId, ApplicationName | 
| MaxMemoryAllowed |  Mémoire maximale autorisée pour l'application, exprimée en Go.  | Gigaoctets (Go) | ApplicationId, ApplicationName | 
| MaxStorageAllowed |  Stockage maximal en Go autorisé pour l'application.  | Gigaoctets (Go) | ApplicationId, ApplicationName | 
| CPUAllocated |  Le nombre total de v CPUs alloués.  | vCPU | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| IdleWorkerCount |  Nombre total de travailleurs inactifs.  | Nombre | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| MemoryAllocated |  Mémoire totale allouée en Go.  | Gigaoctets (Go) | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| PendingCreationWorkerCount |  Nombre total de travailleurs en attente de création.  | Nombre | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| RunningWorkerCount |  Nombre total de travailleurs utilisés par l'application.  | Nombre | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| StorageAllocated |  Stockage sur disque total en Go alloué.  | Gigaoctets (Go) | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| TotalWorkerCount |  Le nombre total de travailleurs disponibles.  | Nombre | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 

## Surveillance au niveau des tâches
<a name="job-level-metrics"></a>

Amazon EMR Serverless envoie les métriques suivantes au niveau des tâches toutes les minutes. Amazon CloudWatch Vous pouvez accéder aux valeurs métriques pour les exécutions de tâches agrégées par état d'exécution des tâches. L'unité de chacune des métriques est le *nombre*.


**Mesures EMR Serverless au niveau des tâches**  

| Métrique | Description | Dimension | 
| --- | --- | --- | 
| SubmittedJobs | Le nombre de tâches dans un état Soumis. | ApplicationId, ApplicationName | 
| PendingJobs | Le nombre de tâches en attente. | ApplicationId, ApplicationName | 
| ScheduledJobs | Le nombre de tâches dans un état planifié. | ApplicationId, ApplicationName | 
| RunningJobs | Nombre de tâches en cours d'exécution. | ApplicationId, ApplicationName | 
| SuccessJobs | Le nombre d'emplois dont l'état est « Success ». | ApplicationId, ApplicationName | 
| FailedJobs | Le nombre de tâches en état d'échec. | ApplicationId, ApplicationName | 
| CancellingJobs | Le nombre d'emplois dans un État annulable. | ApplicationId, ApplicationName | 
| CancelledJobs | Nombre de tâches annulées. | ApplicationId, ApplicationName | 

Vous pouvez surveiller les métriques spécifiques au moteur pour les tâches EMR sans serveur exécutées et terminées avec une application spécifique au moteur. UIs Lorsque vous accédez à l'interface utilisateur pour une tâche en cours d'exécution, l'interface utilisateur de l'application en direct s'affiche avec des mises à jour en temps réel. Lorsque vous accédez à l'interface utilisateur pour une tâche terminée, l'interface utilisateur permanente de l'application s'affiche.

**Exécution de tâches**

Pour vos tâches EMR sans serveur en cours d'exécution, accédez à une interface en temps réel qui fournit des métriques spécifiques au moteur. Vous pouvez utiliser l'interface utilisateur Apache Spark ou l'interface utilisateur Hive Tez pour surveiller et déboguer vos tâches. Pour y accéder UIs, utilisez la console EMR Studio ou demandez un point de terminaison URL sécurisé avec le. AWS Command Line Interface

**Tâches terminées**

Pour les tâches EMR sans serveur terminées, utilisez le serveur d'historique Spark ou l'interface utilisateur de Persistent Hive Tez pour accéder aux détails des tâches, aux étapes, aux tâches et aux indicateurs relatifs à l'exécution des tâches Spark ou Hive. Pour y accéder UIs, utilisez la console EMR Studio ou demandez un point de terminaison URL sécurisé avec le. AWS Command Line Interface

## Surveillance au niveau du Job Worker
<a name="job-worker-level-metrics"></a>

Amazon EMR Serverless envoie à Amazon les métriques suivantes au niveau du travailleur, disponibles dans l'espace de `AWS/EMRServerless` noms et le `Job Worker Metrics` groupe de métriques. CloudWatch EMR Serverless collecte des points de données auprès de travailleurs individuels lors de l'exécution des tâches au niveau de la tâche, du type de travailleur et du niveau. capacity-allocation-type Vous pouvez l'utiliser `ApplicationId` comme dimension pour surveiller plusieurs tâches appartenant à la même application.

**Note**  
Pour afficher le total du processeur et de la mémoire utilisés par une tâche EMR sans serveur lorsque vous consultez les métriques dans la CloudWatch console Amazon, utilisez la statistique sous forme de somme et la période comme 1 minute.


**Mesures EMR Serverless au niveau des travailleurs**  

| Métrique | Description | Unit | Dimension | 
| --- | --- | --- | --- | 
| WorkerCpuAllocated | Nombre total de cœurs de vCPU alloués aux travailleurs dans le cadre d'une exécution de tâche. | vCPU | JobId, JobName, ApplicationId, ApplicationName, WorkerType, et CapacityAllocationType | 
| WorkerCpuUsed | Nombre total de cœurs de vCPU utilisés par les travailleurs dans le cadre d'une exécution de tâche. | vCPU | JobId, JobName, ApplicationId, ApplicationName, WorkerType, et CapacityAllocationType | 
| WorkerMemoryAllocated | Mémoire totale en Go allouée aux travailleurs dans le cadre d'une exécution de tâche. | Gigaoctets (Go) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, et CapacityAllocationType | 
| WorkerMemoryUsed | Mémoire totale en Go utilisée par les travailleurs lors de l'exécution d'une tâche. | Gigaoctets (Go) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, et CapacityAllocationType | 
| WorkerEphemeralStorageAllocated | Nombre d'octets de stockage éphémère alloués aux travailleurs dans le cadre d'une exécution de tâche. | Gigaoctets (Go) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, et CapacityAllocationType | 
| WorkerEphemeralStorageUsed | Nombre d'octets de stockage éphémère utilisés par les travailleurs dans le cadre d'une exécution de tâche. | Gigaoctets (Go) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, et CapacityAllocationType | 
| WorkerStorageReadBytes | Nombre d'octets lus depuis le stockage par les travailleurs lors d'une exécution de tâche. | Octets | JobId, JobName, ApplicationId, ApplicationName, WorkerType, et CapacityAllocationType | 
| WorkerStorageWriteBytes | Nombre d'octets écrits dans le stockage par les travailleurs lors d'une exécution de tâche. | Octets | JobId, JobName, ApplicationId, ApplicationName, WorkerType, et CapacityAllocationType | 

Les étapes ci-dessous décrivent comment accéder aux différents types de métriques.

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

**Pour accéder à l'interface utilisateur de votre application via la console**

1. Accédez à votre application EMR Serverless dans le studio EMR en suivant les instructions de la section [Mise](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html#gs-console) en route depuis la console. 

1. Pour accéder à une application UIs et à des journaux spécifiques au moteur pour une tâche en cours d'exécution : 

   1. Choisissez un poste doté d'un `RUNNING` statut.

   1. Sélectionnez le poste sur la page **Détails de la candidature** ou accédez à la page des **détails du poste** correspondant à votre poste.

   1. Dans le menu déroulant **Display UI**, choisissez **Spark UI ou **Hive Tez UI**** pour accéder à l'interface utilisateur de l'application correspondant à votre type de tâche. 

   1. Pour accéder aux journaux du moteur Spark, accédez à l'onglet **Executors** de l'interface utilisateur Spark, puis cliquez sur le lien **Logs** pour le pilote. Pour accéder aux journaux du moteur Hive, cliquez sur le lien **Logs** du DAG approprié dans l'interface utilisateur Hive Tez.

1. Pour accéder à une application UIs et à des journaux spécifiques au moteur pour une tâche terminée, procédez comme suit : 

   1. Choisissez un poste doté d'un `SUCCESS` statut.

   1. Sélectionnez le poste sur la page des **détails de candidature** de votre candidature ou accédez à la page des **détails du poste**.

   1. Dans le menu déroulant de l'**interface utilisateur d'affichage**, choisissez **Spark History Server** ou **Persistent Hive Tez UI pour** accéder à l'interface utilisateur de l'application correspondant à votre type de tâche. 

   1. Pour accéder aux journaux du moteur Spark, accédez à l'onglet **Executors** de l'interface utilisateur Spark, puis cliquez sur le lien **Logs** pour le pilote. Pour accéder aux journaux du moteur Hive, cliquez sur le lien **Logs** du DAG approprié dans l'interface utilisateur Hive Tez.

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

**Pour accéder à l'interface utilisateur de votre application à l'aide du AWS CLI**
+ Pour générer une URL permettant d'accéder à l'interface utilisateur de votre application pour les tâches en cours et terminées, appelez l'`GetDashboardForJobRun`API. 

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

  L'URL que vous générez est valide pendant une heure.

------

# Surveillez les métriques de Spark avec Amazon Managed Service pour Prometheus
<a name="monitor-with-prometheus"></a>

Avec les versions 7.1.0 et supérieures d'Amazon EMR, vous pouvez intégrer EMR Serverless à Amazon Managed Service for Prometheus afin de collecter des métriques Apache Spark pour les tâches et applications EMR Serverless. Cette intégration est disponible lorsque vous soumettez une tâche ou créez une application à l'aide de la AWS console, de l'API EMR Serverless ou du. AWS CLI

## Conditions préalables
<a name="monitoring-with-prometheus-prereqs"></a>

Avant de pouvoir transmettre vos métriques Spark à Amazon Managed Service for Prometheus, vous devez remplir les conditions préalables suivantes.
+ [Créez un espace de travail Amazon Managed Service pour Prometheus.](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html) Cet espace de travail sert de point de terminaison pour l'ingestion. Prenez note de l'URL affichée pour **Endpoint - URL d'écriture à distance**. Vous devrez spécifier l'URL lorsque vous créerez votre application EMR Serverless.
+ Pour autoriser l'accès à vos tâches à Amazon Managed Service for Prometheus à des fins de surveillance, ajoutez la politique suivante à votre rôle d'exécution des tâches.

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

## Configuration
<a name="monitoring-with-prometheus-setup"></a>

**Pour utiliser la AWS console afin de créer une application intégrée à Amazon Managed Service for Prometheus**

1. Consultez [Getting started with Amazon EMR Serverless](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html                             ) pour créer une application.

1. Lorsque vous créez une application, choisissez **Utiliser les paramètres personnalisés**, puis configurez votre application en spécifiant les informations dans les champs que vous souhaitez configurer.

1. Sous **Journaux et métriques des applications**, choisissez **Deliver les métriques du moteur à Amazon Managed Service for Prometheus**, puis spécifiez votre URL d'écriture à distance.

1. Spécifiez les autres paramètres de configuration souhaités, puis choisissez **Create and start application**.

**Utilisez l'API AWS CLI ou EMR Serverless**

Vous pouvez également utiliser l'API AWS CLI EMR Serverless pour intégrer votre application EMR Serverless à Amazon Managed Service for Prometheus lorsque vous exécutez les commandes ou. `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"
        }
    }
}'
```

------

L'inclusion `prometheusMonitoringConfiguration` dans votre commande indique qu'EMR Serverless doit exécuter la tâche Spark avec un agent qui collecte les métriques Spark et les écrit sur votre point de terminaison `remoteWriteUrl` pour Amazon Managed Service for Prometheus. Vous pouvez ensuite utiliser les métriques Spark dans Amazon Managed Service for Prometheus pour la visualisation, les alertes et les analyses.

## Propriétés de configuration avancées
<a name="monitoring-with-prometheus-config-options"></a>

EMR Serverless utilise un composant de Spark nommé `PrometheusServlet` pour collecter les métriques Spark et traduire les données de performance en données compatibles avec Amazon Managed Service for Prometheus. Par défaut, EMR Serverless définit les valeurs par défaut dans Spark et analyse les métriques du pilote et de l'exécuteur lorsque vous soumettez une tâche à l'aide de. `PrometheusMonitoringConfiguration` 

Le tableau suivant décrit toutes les propriétés configurées lors de la soumission d'une tâche Spark qui envoie des métriques à Amazon Managed Service for Prometheus.


| Propriété Spark | Valeur par défaut | Description | 
| --- | --- | --- | 
| spark.metrics.conf.\$1.sink.prometheusServlet.class | org.apache.spark.metrics.sink. PrometheusServlet | Classe utilisée par Spark pour envoyer des métriques à Amazon Managed Service for Prometheus. Pour modifier le comportement par défaut, spécifiez votre propre classe personnalisée. | 
| spark.metrics.conf.\$1.source.jvm.class | org.apache.spark.metrics.source. JvmSource | La classe utilisée par Spark pour collecter et envoyer des métriques cruciales à partir de la machine virtuelle Java sous-jacente. Pour arrêter de collecter des métriques JVM, désactivez cette propriété en lui attribuant une chaîne vide, telle que`""`. Pour modifier le comportement par défaut, spécifiez votre propre classe personnalisée.  | 
| spark.metrics.conf.driver.sink.prometheusServlet.path | /métriques/prométhée | URL distincte utilisée par Amazon Managed Service for Prometheus pour collecter les statistiques du pilote. Pour modifier le comportement par défaut, spécifiez votre propre chemin. Pour arrêter de collecter les métriques relatives aux conducteurs, désactivez cette propriété en lui attribuant une chaîne vide, telle que`""`. | 
| spark.metrics.conf.executor.sink.prometheusServlet.path | /metrics/executor/prometheus | URL distincte utilisée par Amazon Managed Service for Prometheus pour collecter des métriques auprès de l'exécuteur. Pour modifier le comportement par défaut, spécifiez votre propre chemin. Pour arrêter de collecter les métriques de l'exécuteur, désactivez cette propriété en lui attribuant une chaîne vide, telle que`""`. | 

Pour plus d'informations sur les métriques Spark, reportez-vous aux [métriques Apache Spark](https://spark.apache.org/docs/3.5.0/monitoring.html#metrics).

## Considérations et restrictions
<a name="monitoring-with-prometheus-limitations"></a>

Lorsque vous utilisez Amazon Managed Service for Prometheus pour collecter des métriques à partir d'EMR Serverless, tenez compte des considérations et limites suivantes.
+ Support pour l'utilisation d'Amazon Managed Service for Prometheus avec EMR Serverless uniquement dans les pays où [Amazon Managed Service for Régions AWS Prometheus](https://docs.aws.amazon.com/general/latest/gr/prometheus-service.html) est généralement disponible.
+ L'exécution de l'agent pour collecter les métriques Spark sur Amazon Managed Service for Prometheus nécessite davantage de ressources de la part des employés. Si vous choisissez une taille de travail plus petite, telle qu'un travailleur vCPU, la durée d'exécution de votre tâche peut augmenter.
+ Support pour l'utilisation d'Amazon Managed Service for Prometheus avec EMR Serverless uniquement pour les versions 7.1.0 et supérieures d'Amazon EMR.
+ Amazon Managed Service for Prometheus doit être déployé sur le même compte sur lequel vous exécutez EMR Serverless pour collecter des métriques.

# Mesures d'utilisation EMR sans serveur
<a name="monitoring-usage"></a>

Vous pouvez utiliser les statistiques CloudWatch d'utilisation d'Amazon pour avoir une visibilité sur les ressources utilisées par votre compte. Utilisez ces indicateurs pour visualiser l'utilisation de vos services sur CloudWatch des graphiques et des tableaux de bord.

Les métriques d'utilisation EMR Serverless correspondent aux Service Quotas. Vous pouvez configurer des alarmes qui vous alertent lorsque votre utilisation approche d’un quota de service. Pour plus d'informations, reportez-vous aux rubriques [Service Quotas et Amazon CloudWatch alarmes](https://docs.aws.amazon.com/servicequotas/latest/userguide/configure-cloudwatch.html) du *Guide de l'utilisateur de Service Quotas*.

Pour plus d'informations sur les quotas de service EMR sans serveur, reportez-vous à. [Points de terminaison et quotas pour EMR Serverless](endpoints-quotas.md)

## Mesures d'utilisation des quotas de service pour EMR Serverless
<a name="usage-metrics"></a>

EMR Serverless publie les mesures d'utilisation des quotas de service suivantes dans l'espace de noms. `AWS/Usage`


****  

| Métrique | Description | 
| --- | --- | 
| `ResourceCount`  | Le nombre total de ressources spécifiées en cours d'exécution sur votre compte. La ressource est définie par les [dimensions](#usage-metrics-dimensions) associées à la métrique. | 

## Dimensions des métriques d'utilisation des quotas de service EMR Serverless
<a name="usage-metrics-dimensions"></a>

Vous pouvez utiliser les dimensions suivantes pour affiner les métriques d'utilisation publiées par EMR Serverless.


****  

| Dimension | Value | Description | 
| --- | --- | --- | 
|  `Service`  |  EMR sans serveur  | Le nom de la ressource Service AWS qui contient la ressource. | 
|  `Type`  |  Ressource  | Type d'entité signalée par EMR Serverless. | 
|  `Resource`  |  vCPU  | Type de ressource suivie par EMR Serverless. | 
|  `Class`  |  Aucune  | Classe de ressource suivie par EMR Serverless. | 

# Automatiser l'EMR sans serveur avec Amazon EventBridge
<a name="using-eventbridge"></a>

Vous pouvez l'utiliser Amazon EventBridge pour automatiser Services AWS et répondre automatiquement aux événements du système, tels que les problèmes de disponibilité des applications ou les modifications des ressources. EventBridge fournit un flux d'événements système en temps quasi réel décrivant les modifications apportées à vos AWS ressources. Vous pouvez écrire des règles simples pour indiquer quels événements vous intéressent et les actions automatisées à effectuer quand un événement correspond à une règle. Avec EventBridge, vous pouvez automatiquement :
+ Invoquer une AWS Lambda fonction
+ Transmettre un événement à Amazon Kinesis Data Streams
+ Activer une machine à AWS Step Functions états
+ Notifier une rubrique Amazon SNS ou une file d'attente Amazon SQS

Par exemple, lorsque vous utilisez EventBridge EMR Serverless, vous pouvez activer une AWS Lambda fonction en cas de réussite d'une tâche ETL ou informer une rubrique Amazon SNS en cas d'échec d'une tâche ETL.

EMR Serverless émet quatre types d'événements :
+ Événements de modification de l'état d'une application : événements qui déclenchent chaque changement d'état d'une application. Pour plus d'informations sur les états des applications, reportez-vous à[États de l'application](applications.md#application-states).
+ Événements de changement d'état d'exécution d'une tâche : événements qui émettent chaque changement d'état d'une exécution de tâche. Pour plus d'informations sur, reportez-vous à[États d'exécution de la tâche](job-states.md).
+ Événements de nouvelle tentative d'exécution de tâches : événements qui émettent chaque nouvelle tentative d'exécution d'une tâche à partir des versions 7.1.0 et supérieures d'Amazon EMR Serverless.
+ Événements de mise à jour de l'utilisation des ressources d'une tâche : événements qui émettent des mises à jour sur l'utilisation des ressources pour une tâche exécutée à des intervalles de près de 30 minutes.

## Exemples d'événements EMR sans serveur EventBridge
<a name="using-eventbridge-examples"></a>

Les événements signalés par EMR Serverless ont la valeur `aws.emr-serverless` attribuée à`source`, comme dans les exemples suivants.

**Événement de changement d'état de l'application**

L'exemple d'événement suivant montre une application dans son `CREATING` état.

```
{
    "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
        }
    }
}
```

**Événement de changement d'état de Job Run**

L'exemple d'événement suivant montre une exécution de travail qui passe de l'`SCHEDULED`état à l'`RUNNING`état.

```
{
    "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"
    }
}
```

**Événement Job Run Retry**

Voici un exemple d'événement de nouvelle tentative d'exécution d'une tâche.

```
{
    "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"
    }
}
```

**Mise à jour sur l'utilisation des ressources de travail**

L'exemple d'événement suivant montre la dernière mise à jour de l'utilisation des ressources pour une tâche passée à l'état terminal après son exécution.

```
{
    "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
        }
    }
}
```

Le champ **StarteDat** ne sera présent que si la tâche est passée à l'état en cours d'exécution.