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.
Publier les journaux Amazon EMR dans Logs CloudWatch
Présentation de
Amazon EMR on EC2 fournit une intégration native à Amazon CloudWatch Logs, vous permettant d'envoyer des journaux de cluster directement à CloudWatch cette fonctionnalité. Cette fonctionnalité simplifie la gestion des journaux et fournit un accès centralisé à vos journaux de cluster EMR à des fins de surveillance, de dépannage et d'analyse.
Lorsque la CloudWatch journalisation est activée, vous pouvez automatiquement capturer et diffuser les journaux de vos clusters EMR vers des groupes de CloudWatch journaux. Cela inclut les journaux d'exécution des étapes, les journaux des pilotes Spark et les journaux des exécuteurs Spark, qui vous offrent une visibilité complète sur les opérations de votre cluster et le comportement des applications.
La fonctionnalité de CloudWatch journalisation est disponible à partir de la version 7.11.0 d'Amazon EMR et est configurée via le MonitoringConfiguration paramètre lors de la création de votre cluster. Une fois activé, les journaux sont automatiquement diffusés au CloudWatch fur et à mesure de leur génération, ce qui permet d'accéder aux données des journaux en temps quasi réel via la CloudWatch console ou l'API.
Conditions préalables
Avant d'activer la CloudWatch journalisation pour votre cluster EMR, assurez-vous que les conditions préalables suivantes sont remplies :
-
Version Amazon EMR : votre cluster doit utiliser Amazon EMR version 7.11.0 ou ultérieure.
-
CloudWatch Application d'agent : l' CloudWatch agent Amazon doit être installé sur votre cluster.
-
Autorisations IAM : le profil d' EC2 instance de votre cluster doit disposer des autorisations de CloudWatch journalisation requises.
-
Points de terminaison VPC (pour les sous-réseaux privés) : si votre cluster se trouve dans un sous-réseau privé, vous devez configurer les points de terminaison VPC pour les journaux. CloudWatch
Permissions
L' CloudWatch agent a besoin d'autorisations spécifiques AWS Identity and Access Management(IAM) pour créer des groupes de journaux, créer des flux de journaux et écrire des événements de journal dans des CloudWatch journaux. Ces autorisations doivent être associées au profil d' EC2 instance Amazon utilisé par votre cluster EMR.
Politique IAM requise
Ajoutez la politique suivante à votre profil d'EC2 instance pour qu'Amazon EMR accorde les autorisations nécessaires :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:PutRetentionPolicy", "logs:DescribeLogStreams", "logs:DescribeLogGroups", "logs:CreateLogStream", "logs:CreateLogGroup" ], "Resource": "*", "Sid": "AllowCWACloudWatchLogs" } ] }
Joindre la politique
Pour associer cette politique à votre profil d' EC2 instance pour EMR :
-
Accédez à la Console IAM.
-
Localisez le profil d'instance utilisé par votre cluster EMR, qui est généralement.
EMR_EC2_DefaultRole -
Créez une nouvelle politique intégrée ou associez une politique gérée par le client avec les autorisations ci-dessus.
-
Enregistrez les modifications de politique.
Pour plus d'informations sur les rôles IAM pour Amazon EMR, consultez Configurer les rôles IAM pour les autorisations Amazon EMR relatives AWS aux services et aux ressources dans le guide de gestion Amazon EMR.
Configuration de la CloudWatch journalisation
Vous pouvez activer la CloudWatch journalisation lors de la création d'un nouveau cluster EMR via la console AWS de gestion AWS CLI, ou. AWS SDKs La configuration est spécifiée par le biais du MonitoringConfiguration paramètre.
Utilisation de la console AWS de gestion
Pour créer un cluster avec CloudWatch journalisation depuis la console :
-
Accédez à la console AWS EMR.
-
Choisissez Créer un cluster.
-
Sous Nom et applications, sélectionnez une version Amazon EMR 7.11.0 ou supérieure.
-
Sous Bundle d'applications, sélectionnez les applications que vous souhaitez installer et assurez-vous qu'Amazon CloudWatch Agent est inclus dans vos sélections.
-
Sous Journaux du cluster, sélectionnez l'option Publier les journaux spécifiques au cluster sur Amazon. CloudWatch
-
(Facultatif) Configurez les paramètres suivants :
-
Nom du groupe de journaux : nom du groupe de journaux personnalisé. La valeur par défaut est
/aws/emr/{cluster_id}. -
Préfixe du flux de journal - Préfixe pour les noms des flux de journaux. La valeur par défaut est.
empty -
CloudWatch Clé KMS : code ARN de la clé KMS pour le chiffrement des journaux (facultatif).
-
Types de journaux : sélectionnez les types de journaux à capturer (par défaut : step et pilote Spark)
-
-
Complétez les paramètres de configuration du cluster restants.
-
Choisissez Créer un cluster.
Une fois le cluster créé, vous pouvez accéder au lien CloudWatch Logs depuis la page Détails du cluster EMR sous Gestion du cluster → Destination du journal sur Amazon. CloudWatch
À l'aide du AWS CLI
Vous pouvez activer la CloudWatch journalisation à l'aide AWS CLI de la create-cluster commande with. L' CloudWatch agent doit être inclus dans le --applications paramètre, et la journalisation est configurée via le --monitoring-configuration paramètre.
Exemple : configuration par défaut
EMR capturera automatiquement les journaux des étapes et les journaux des pilotes Spark uniquement et les enverra au groupe de journaux par défaut.
aws emr create-cluster \ --name "EMR cluster with CloudWatch Logs" \ --release-label emr-7.11.0 \ --applications Name=Spark Name=AmazonCloudWatchAgent \ --instance-type m7g.2xlarge \ --instance-count 3 \ --use-default-roles \ --monitoring-configuration '{ "CloudWatchLogConfiguration": { "Enabled": true } }'
Lorsque vous utilisez la configuration par défaut :
-
Nom du groupe de journaux :
/aws/emr/{cluster_id}(où{cluster_id}est automatiquement remplacé par votre ID de cluster). -
Préfixe du flux de journal : vide (aucun préfixe).
-
Types de journaux :
STEP_LOGSetSPARK_DRIVERactivés, chacun capturant à la foisSTDOUTetSTDERR. -
Chiffrement : aucune clé gérée par le client (utilise le chiffrement CloudWatch côté serveur par défaut)
Exemple : configuration personnalisée
Cet exemple illustre une configuration personnalisée avec des noms de groupes de journaux spécifiques, un chiffrement KMS et des types de journaux sélectifs.
aws emr create-cluster \ --name "EMR cluster with custom CloudWatch Logs" \ --release-label emr-7.11.0 \ --applications Name=Spark Name=AmazonCloudWatchAgent \ --instance-type m7g.2xlarge \ --instance-count 3 \ --use-default-roles \ --monitoring-configuration '{ "CloudWatchLogConfiguration": { "Enabled": true, "LogGroupName": "/my-company/emr/production", "LogStreamNamePrefix": "cluster-prod", "EncryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012", "LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"], "SPARK_DRIVER": ["STDOUT", "STDERR"], "SPARK_EXECUTOR": ["STDERR", "STDOUT"] } } }'
Cette configuration :
-
Crée des journaux dans un groupe de journaux personnalisé
/my-company/emr/production. -
Préfixe tous les noms de flux de journaux par
cluster-prod. -
Chiffre les journaux à l'aide de la clé KMS spécifiée.
-
Capture tous les types de journaux : journaux d'étapes, journaux du pilote Spark et journaux de l'exécuteur Spark.
Pour plus d'informations sur l'utilisation du AWS CLI avec Amazon EMR, consultez le manuel de référence des AWS CLI commandes EMR.
Référence de configuration
CloudWatchLogConfiguration Paramètres
L'CloudWatchLogConfigurationvobjet prend en charge les paramètres suivants :
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
Enabled |
Booléen | Oui | Réglez sur true pour activer la CloudWatch journalisation. Réglez sur false pour désactiver. |
LogGroupName |
String | Non | Le nom du groupe de CloudWatch journaux. Valeur par défaut : /aws/emr/{cluster_id} |
LogStreamNamePrefix |
String | Non | Préfixe pour les noms des flux de journaux. Par défaut : chaîne vide |
EncryptionKeyArn |
String | Non | ARN de la clé KMS pour le chiffrement des journaux. Si ce n'est pas spécifié, les journaux sont chiffrés par chiffrement CloudWatch côté serveur. |
LogTypes |
Objet | Non | Spécifie les types de journaux à capturer. Par défaut : STEP_LOGS et SPARK_DRIVER types avec STDOUT et STDERR. |
Types de journaux
Amazon EMR prend en charge trois types de journaux, chacun capturant à la fois les flux de sortie standard et les flux d'erreur standard :
| Type de journal | Description | Streams disponibles |
|---|---|---|
STEP_LOGS |
Journaux d'exécution des étapes EMR, y compris les journaux des contrôleurs d'étapes | STDOUT, STDERR |
SPARK_DRIVER |
Journaux du pilote Apache Spark à partir des applications Spark | STDOUT, STDERR |
SPARK_EXECUTOR |
L'exécuteur Apache Spark enregistre les logs à partir des nœuds de travail | STDOUT, STDERR |
Configuration des types de journaux par défaut
Lorsque vous ne spécifiez pas le LogTypes paramètre, EMR utilise la configuration par défaut suivante :
"LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"], "SPARK_DRIVER": ["STDOUT", "STDERR"] }
Configuration des types de journaux personnalisés
Vous pouvez personnaliser les types de journaux à capturer en spécifiant explicitement le LogTypes paramètre. Par exemple, pour capturer uniquement les journaux des étapes :
"LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"] }
Ou pour capturer uniquement l'erreur standard des pilotes Spark :
"LogTypes": { "SPARK_DRIVER": ["STDERR"] }
Dénomination des groupes de journaux et des flux
CloudWatch organise les journaux en groupes de journaux et en flux de journaux :
-
Groupe de journaux : ensemble de flux de journaux partageant les mêmes paramètres de conservation, de surveillance et de contrôle d'accès.
-
Nom par défaut :
/aws/emr/{cluster_id} -
Nom personnalisé : tout nom de groupe de CloudWatch journaux valide que vous spécifiez.
-
-
Log Stream : séquence d'événements de journal provenant d'une source unique :
-
Modèles de dénomination :
-
Journaux des étapes :
{prefix}/steps/{step_id}/{file_name}. -
Journaux du pilote et de l'exécuteur Spark :
{prefix}/applications/{application_id}/{container_id}/{file_name}
-
-
Exemples :
-
/steps/s-ABCDEFG123456/stdout -
cluster-prod/steps/s-ABCDEFG123456/stderr -
/applications/application_1234567890_0001/container_1234567890_0001_01_000001/stdout
-
-
Chiffrer les journaux avec AWS KMS
Vous pouvez chiffrer vos CloudWatch journaux au repos à l'aide de AWS Key Management Service (KMS). Pour activer le chiffrement :
-
Créez ou identifiez une clé KMS dans la même AWS région que votre cluster EMR.
-
Assurez-vous que la politique de clé KMS autorise le service CloudWatch Logs à utiliser la clé.
-
Ajoutez le
EncryptionKeyArnparamètre à votreCloudWatchLogConfiguration.
Pour des informations détaillées sur le chiffrement des données des CloudWatch journaux, voir Chiffrer les données des journaux dans les CloudWatch journaux à l'aide de. AWS Key Management Service
Exemple avec le chiffrement KMS
{ "CloudWatchLogConfiguration": { "Enabled": true, "EncryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } }
Afficher les connexions CloudWatch
Une fois que votre cluster est en cours d'exécution avec la CloudWatch journalisation activée, vous pouvez consulter et analyser vos journaux via la CloudWatch console ou l'API.
Accès aux journaux depuis la console EMR
Le moyen le plus rapide d'accéder aux journaux de votre cluster est directement depuis la console EMR :
-
Accédez à la console Amazon EMR.
-
Sélectionnez votre cluster dans la liste des clusters.
-
Sur la page des détails du cluster, localisez la section Gestion du cluster.
-
Cliquez sur le CloudWatch lien Destination du journal sur Amazon.
Ce lien vous amène directement à la console CloudWatch Logs filtrée en fonction du groupe de journaux de votre cluster.
Accès aux journaux depuis la CloudWatch console
Pour accéder manuellement à vos identifiants CloudWatch :
-
Ouvrez la CloudWatch console
. -
Dans le panneau de navigation, choisissez Groupes de journaux.
-
Trouvez votre groupe de journaux (par défaut :
/aws/emr/{cluster_id}ou le nom de votre groupe de journaux personnalisé) -
Choisissez le groupe de journaux pour afficher les flux de journaux disponibles.
-
Sélectionnez un flux de journal pour afficher ses événements de journal.
Pour plus d'informations sur l'utilisation des CloudWatch journaux, consultez le guide de l'utilisateur Amazon CloudWatch Logs.
Considérations
CloudWatch Comportement des agents
L' CloudWatch agent Amazon fournit à la fois des métriques et des fonctionnalités de journalisation :
-
L'activation de l' CloudWatch agent seul (sans
MonitoringConfiguration) ne publie que CloudWatch les métriques sur CloudWatch. Aucun journal n'est envoyé. -
L'activation de la CloudWatch journalisation nécessite à la fois l'application CloudWatch Agent et le
MonitoringConfigurationparamètre withCloudWatchLogConfiguration. Cela permet de combiner les métriques et la journalisation.
Activation de la CloudWatch journalisation uniquement (désactivation CloudWatch des métriques)
Si vous souhaitez activer la CloudWatch journalisation mais désactiver la fonctionnalité de collecte des métriques, vous pouvez configurer l' CloudWatch agent pour arrêter d'exporter les métriques. Ajoutez la classification suivante à la configuration de votre cluster :
[ { "Classification": "emr-metrics", "Properties": {}, "Configurations": [ { "Classification": "emr-system-metrics", "Properties": {}, "Configurations": [] } ] } ]
Pour plus d'informations sur CloudWatch les métriques, consultez Surveiller les métriques avec Amazon CloudWatch.
Limitations connues
- Points de données métriques lors du téléchargement des journaux :
-
Lorsque la CloudWatch journalisation est active, vous pouvez observer des lacunes occasionnelles dans les données des CloudWatch métriques pendant les périodes de forte activité des journaux, en particulier lors des soumissions d'étapes. Cela se produit parce que le contrôleur d'instance EMR redémarre l' CloudWatch agent pour appliquer de nouvelles configurations de journal lorsque des étapes sont soumises, interrompant temporairement la collecte des métriques. Cela n'affecte pas la livraison des journaux ni les fonctionnalités du cluster.
Exigences relatives aux sous-réseaux privés
Pour publier des journaux dans CloudWatch les journaux d'un cluster EMR dans un sous-réseau privé, créez et associez le point de terminaison Logs CloudWatch VPC au VPC de votre cluster.
Pour plus d'informations sur les points de terminaison de CloudWatch Logs, consultez la section Points de terminaison et quotas Amazon CloudWatch Logs dans le Guide de référence AWS général.
Considérations de coût
CloudWatch Les frais de journalisation sont basés sur :
-
Ingestion de données : volume de données de log ingérées dans CloudWatch
-
Stockage : quantité de données de journal stockées, en fonction de vos paramètres de conservation
-
Analyse des données : requêtes exécutées à l'aide de CloudWatch Logs Insights
Afin d’optimiser les coûts :
-
Définissez des périodes de conservation des journaux appropriées pour vos groupes de journaux.
-
Utilisez des types de journaux sélectifs pour ne capturer que les journaux dont vous avez besoin.
-
Envisagez d'utiliser la journalisation Amazon S3 pour le stockage des journaux à long terme à moindre coût.
Pour obtenir des informations sur les prix actuels, consultez Amazon CloudWatch Pricing.
Ressources supplémentaires
-
Surveillez les métriques avec Amazon CloudWatch - Informations sur la collecte CloudWatch des métriques
-
Configuration des rôles IAM pour Amazon EMR - Configuration des rôles IAM pour les clusters EMR
-
Guide de l'utilisateur d'Amazon CloudWatch Logs - Guide complet CloudWatch des fonctionnalités des journaux
-
AWS CLI Référence des commandes pour EMR - Documentation de référence de la CLI