Comment puis-je transférer les journaux des applications Amazon EMR vers CloudWatch ?
Je souhaite transférer les journaux des applications Amazon EMR vers Amazon CloudWatch pour les versions 5.30.0 et ultérieures d'Amazon EMR.
Brève description
Utilisez l'agent CloudWatch pour collecter des métriques et des journaux à partir des instances Amazon Elastic Compute Cloud (Amazon EC2). Puis, configurez les instances de cluster Amazon EMR pour publier les journaux d’application sur CloudWatch.
Résolution
Prérequis :
Créer un fichier de configuration de l'agent CloudWatch.
Créer le fichier de configuration
Pour transférer des journaux d'application spécifiques depuis vos instances Amazon EMR, utilisez l'un des exemples suivants pour créer un fichier de configuration.
Transférer les journaux pour l'application YARN sur tous les nœuds
L'exemple de fichier de configuration suivant transfère les journaux de conteneurs de chaque instance Amazon EMR :
{ "agent": { "metrics_collection_interval": 300, "run_as_user": "yarn" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/hadoop-yarn/containers/application_*/container*/*", "log_group_name": "/emr/applications/", "log_stream_name": "{instance_id}-{ip_address}", "publish_multi_logs" : true } ] } } } }
Remarque : Remplacez /var/log/hadoop-yarn/containers/application_*/container*/* par l'emplacement de votre chemin de fichier.
Transférer les journaux pour l’application YARN et Hive Server 2 sur le nœud principal
L'exemple de fichier de configuration suivant transfère les journaux du gestionnaire de ressources Yarn et les journaux du serveur Hive depuis le nœud principal EMR :
{ "agent": { "metrics_collection_interval": 300, "run_as_user": "hadoop" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/mnt/var/log/hadoop-yarn/hadoop-yarn-resourcemanager-*", "log_group_name": "/emr/master/logs", "log_stream_name": "{instance_id}-{ip_address}-resourcemanager.log" }, { "file_path": "/mnt/var/log/hive/hive-server2.log", "log_group_name": "/emr/master/logs", "log_stream_name": "{instance_id}-{ip_address}-hive-server2.log" } ] } } } }
Remarque : Remplacez /mnt/var/log/hadoop-yarn/hadoop-yarn-resourcemanager-* par l'emplacement de votre chemin de fichier.
Charger le fichier de configuration vers le compartiment S3
Chargez le fichier de configuration dans un compartiment Amazon Simple Storage Service (Amazon S3).
Remarque : Le cluster Amazon EMR doit disposer des autorisations AWS Identity and Access Management (IAM) pour accéder au compartiment S3.
Lancer Amazon EMR
Dans le cadre de l'action d'amorçage Amazon EMR, exécutez le script suivant pour configurer l'agent CloudWatch et lancer le processus de l'agent CloudWatch :
# == Install CloudWatch Agent == echo "=================== BootstrapActions: Install CloudWatch Agent ===================" sudo yum install amazon-cloudwatch-agent -y sudo amazon-linux-extras install collectd -y # Copy config file on the instance sudo aws s3 cp s3://<your-s3-path>/config.json /opt/aws/amazon-cloudwatch-agent/bin/config.json # Start the agent with the created config file sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json # Status CW Agent echo "Status CW Agent" sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
Remarque : Remplacez s3://<your-s3-path>/config.json avec le chemin de votre environnement.
(Facultatif) Soumettre une application Spark
Pour générer des exemples de journaux d'application, exécutez la commande suivante depuis le nœud leader du cluster Amazon EMR pour démarrer une application Spark :
spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
Utiliser la console CloudWatch pour surveiller CloudWatch Logs
- Ouvrez la console CloudWatch.
- Dans le volet de navigation, sous Journaux, sélectionnez Groupes de journaux.
- Sélectionnez le groupe de journaux que vous souhaitez afficher en fonction du fichier de configuration.
- Si vous utilisez l'exemple de fichier config.json de l'exemple précédent, effectuez l'une des tâches suivantes :
Pour afficher les journaux d’application, sélectionnez /emr/applications.
Pour afficher les journaux de leader, sélectionnez /emr/master/logs.
Remarque : Les journaux des événements CloudWatch sont automatiquement supprimés uniquement lorsque vous configurez une politique de rétention pour le groupe de journaux. Vous pouvez également configurer vos paramètres de rétention pour optimiser vos coûts. Pour plus d'informations, consultez la section Changer la conservation des données de journalisation dans CloudWatch Logs.
(Facultatif) Utiliser Systems Manager pour installer l'agent CloudWatch sur Amazon EMR
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Utilisez AWS Systems Manager pour stocker le contenu du fichier de l'agent. Puis, reportez-vous au fichier Systems Manager lorsque vous démarrez l'agent CloudWatch.
-
Utilisez la console Systems Manager ou l'AWS CLI pour créer un paramètre Systems Manager. Puis, stockez le contenu du fichier de l'agent. L'exemple suivant utilise l'interface de ligne de commande AWS pour créer le paramètre :
aws ssm put-parameter \ --name "AmazonCloudWatch-Config.json" \ --value "{ "agent": { "metrics_collection_interval": 300, "run_as_user": "yarn" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/hadoop-yarn/containers/application_*/container*/*", "log_group_name": "/emr/applications/", "log_stream_name": "{instance_id}", "publish_multi_logs" : true } ] } } } }" \ --type String
Remarque : Remplacez /var/log/hadoop-yarn/containers/application_*/container*/* par l'emplacement de votre chemin de fichier. Dans l'exemple précédent, le fichier de configuration transfère les journaux de conteneurs de chaque instance Amazon EMR. Pour plus d'informations sur les paramètres de System Manager, consultez la section Création de paramètres de Systems Manager.
-
Mettre à jour le script d'action d’amorçage pour faire référence au paramètre :
# Start the agent with the created config file sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c ssm:AmazonCloudWatch-Config.json
Informations connexes
Exécuter une action d’amorçage de manière conditionnelle
Afficher les fichiers journaux sur le nœud principal
Exécution de l'agent CloudWatch en tant qu'utilisateur différent
Contenus pertinents
- demandé il y a un moislg...
- demandé il y a 12 jourslg...
- Réponse acceptéedemandé il y a 2 moislg...
- demandé il y a 6 moislg...
- demandé il y a 8 moislg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 7 mois
- AWS OFFICIELA mis à jour il y a 2 ans