Publier les journaux Amazon EMR dans Logs CloudWatch - Amazon EMR

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 :

  1. Accédez à la Console IAM.

  2. Localisez le profil d'instance utilisé par votre cluster EMR, qui est généralement. EMR_EC2_DefaultRole

  3. Créez une nouvelle politique intégrée ou associez une politique gérée par le client avec les autorisations ci-dessus.

  4. 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 :

  1. Accédez à la console AWS EMR.

  2. Choisissez Créer un cluster.

  3. Sous Nom et applications, sélectionnez une version Amazon EMR 7.11.0 ou supérieure.

  4. 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.

  5. Sous Journaux du cluster, sélectionnez l'option Publier les journaux spécifiques au cluster sur Amazon. CloudWatch

  6. (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)

  7. Complétez les paramètres de configuration du cluster restants.

  8. 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 clusterDestination 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_LOGS et SPARK_DRIVER activés, chacun capturant à la fois STDOUT etSTDERR.

  • 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 parcluster-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 :

CloudWatchLogConfiguration Paramètres
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 :

Types de journaux pris en charge
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 :

  1. Créez ou identifiez une clé KMS dans la même AWS région que votre cluster EMR.

  2. Assurez-vous que la politique de clé KMS autorise le service CloudWatch Logs à utiliser la clé.

  3. Ajoutez le EncryptionKeyArn paramè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 :

  1. Accédez à la console Amazon EMR.

  2. Sélectionnez votre cluster dans la liste des clusters.

  3. Sur la page des détails du cluster, localisez la section Gestion du cluster.

  4. 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 :

  1. Ouvrez la CloudWatch console.

  2. Dans le panneau de navigation, choisissez Groupes de journaux.

  3. Trouvez votre groupe de journaux (par défaut : /aws/emr/{cluster_id} ou le nom de votre groupe de journaux personnalisé)

  4. Choisissez le groupe de journaux pour afficher les flux de journaux disponibles.

  5. 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 (sansMonitoringConfiguration) 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 MonitoringConfiguration paramè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