View a markdown version of this page

AWSSupport-AnalyzeEMRLogs - AWS Systems Manager Référence du dossier d’exploitation Automation

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.

AWSSupport-AnalyzeEMRLogs

Description

Ce runbook permet d'identifier les erreurs lors de l'exécution d'une tâche sur un cluster Amazon EMR. Le runbook analyse une liste de journaux définis sur le système de fichiers et recherche une liste de mots-clés prédéfinis. Ces entrées de journal sont utilisées pour créer des CloudWatch événements Amazon Events afin que vous puissiez prendre les mesures nécessaires en fonction de ces événements. Le runbook publie éventuellement des entrées de journal dans le groupe de CloudWatch journaux Amazon Logs de votre choix. Ce runbook recherche actuellement les erreurs et modèles suivants dans les fichiers journaux :

  • container_out_of_memory — Le conteneur YARN n'a plus de mémoire, l'exécution de la tâche peut échouer.

  • yarn_nodemanager_health : le nœud CORE ou TASK manque d'espace disque et ne pourra pas exécuter de tâches.

  • node_state_change : le nœud CORE ou TASK est inaccessible par le nœud MASTER.

  • step_failure : une étape EMR a échoué.

  • no_core_nodes_running : aucun nœud CORE n'est en cours d'exécution, le cluster n'est pas en bon état.

  • hdfs_missing_blocks : il manque des blocs HDFS, ce qui pourrait entraîner une perte de données.

  • hdfs_high_util : le taux d'utilisation de HDFS est élevé, ce qui peut affecter les tâches et la santé du cluster.

  • instance_controller_restart : le processus a redémarré. Instance-Controller Ce processus est essentiel à la santé du cluster.

  • instance_controller_restart_legacy : le processus a redémarré. Instance-Controller Ce processus est essentiel à la santé du cluster.

  • high_load : une moyenne de charge élevée a été détectée. Elle peut affecter les rapports sur l'état des nœuds ou entraîner des délais d'attente ou des ralentissements.

  • yarn_node_blacklisted : le nœud CORE ou TASK a été mis sur liste noire par YARN pour l'exécution de tâches.

  • yarn_node_lost : le nœud CORE ou TASK a été marqué comme PERDU par YARN, problèmes de connectivité possibles.

Les instances associées à celles ClusterID que vous spécifiez doivent être gérées par AWS Systems Manager. Vous pouvez exécuter cette automatisation une seule fois, programmer l'automatisation pour qu'elle s'exécute à un intervalle de temps spécifique ou supprimer une planification créée précédemment par une automatisation. Ce runbook est compatible avec les versions 5.20 à 6.30 d'Amazon EMR.

Exécutez cette automatisation (console)

Type de document

 Automatisation

Propriétaire

Amazon

Plateformes

LinuxmacOS, Windows

Paramètres

  • AutomationAssumeRole

    Type : Chaîne

    Description : (Facultatif) Le nom de ressource Amazon (ARN) du rôle Gestion des identités et des accès AWS (IAM) qui permet à Systems Manager Automation d'effectuer les actions en votre nom. Si aucun rôle n'est spécifié, Systems Manager Automation utilise les autorisations de l'utilisateur qui démarre ce runbook.

  • ClusterID

    Type : Chaîne

    Description : (Obligatoire) L'ID du cluster dont vous souhaitez analyser les journaux de nœuds.

  • Opération

    Type : Chaîne

    Valeurs valides : Exécuter une fois | Planifier | Supprimer le calendrier

    Description : (Obligatoire) L'opération à effectuer sur le cluster.

  • IntervalTime

    Type : Chaîne

    Valeurs valides : 5 minutes | 10 minutes | 15 minutes

    Description : (Facultatif) Durée entre l'exécution de l'automatisation. Ce paramètre n'est applicable que si vous Schedule le Operation spécifiez.

  • LogToCloudWatchLogs

    Type : Chaîne

    Valeurs valides : oui | non

    Description : (Facultatif) Si vous spécifiez yes la valeur de ce paramètre, l'automatisation crée un groupe de CloudWatch journaux avec le nom spécifié dans le CloudWatchLogGroup paramètre pour stocker toutes les entrées de journal correspondantes.

  • CloudWatchLogGroup

    Type : Chaîne

    Description : (Facultatif) Nom du groupe de CloudWatch journaux dans lequel vous souhaitez stocker toutes les entrées de journal correspondantes. Ce paramètre n'est applicable que si vous yes le LogToCloudWatchLogs spécifiez.

  • CreateLogInsightsDashboard

    Type : Chaîne

    Valeurs valides : oui | non

    Description : (Facultatif) Si vous le spécifiezyes, le CloudWatch tableau de bord est créé s'il n'existe pas déjà. Ce paramètre n'est applicable que si vous yes le LogToCloudWatchLogs spécifiez.

  • CreateMetricFilters

    Type : Chaîne

    Valeurs valides : oui | non

    Description : (Facultatif) Indiquez yes si vous souhaitez créer des filtres de mesures pour le groupe de CloudWatch journaux Logs. Ce paramètre n'est applicable que si vous yes le LogToCloudWatchLogs spécifiez.

Autorisations IAM requises

Le AutomationAssumeRole paramètre nécessite les actions suivantes pour utiliser correctement le runbook.

  • ssm:StartAutomationExecution

  • ssm:GetDocument

  • ssm:ListDocuments

  • ssm:DescribeAutomationExecutions

  • ssm:DescribeAutomationStepExecutions

  • ssm:GetAutomationExecution

  • ssm:DescribeInstanceInformation

  • ssm:ListCommandInvocations

  • ssm:ListCommands

  • ssm:SendCommand

  • iam:CreateRole

  • iam:DeleteRole

  • iam:GetRolePolicy

  • iam:PutRolePolicy

  • iam:DeleteRolePolicy

  • iam:passrole

  • cloudformation:DescribeStacks

  • cloudformation:DeleteStack

  • cloudformation:CreateStack

  • events:DeleteRule

  • events:RemoveTargets

  • events:PutTargets

  • events:PutRule

  • events:DescribeRule

  • logs:DescribeLogGroups

  • logs:CreateLogGroup

  • logs:PutMetricFilter

  • cloudwatch:PutDashboard

  • elasticmapreduce:ListInstances

  • elasticmapreduce:DescribeCluster

Étapes de document

  • aws:executeAwsApi- Recueille des informations sur le cluster Amazon EMR spécifié dans le ClusterID paramètre.

  • aws:branch- Branches basées sur les entrées.

    • Si l'opération fournie est Run Once ou Schedule :

      • aws:assertAwsResourceProperty- Vérifie que le cluster est disponible.

      • aws:executeAwsApi- Rassemble les identifiants de toutes les instances exécutées dans le cluster.

      • aws:assertAwsResourceProperty- Vérifie que l'agent SSM est en cours d'exécution sur toutes les instances du cluster.

      • aws:branch- Branches selon que vous avez spécifié d'exécuter l'automatisation une seule fois ou selon un calendrier.

        • Si l'opération proposée est la suivante Run Once :

          • aws:branch- Branches basées sur la valeur spécifiée dans le LogToCloudWatchLogs paramètre.

            • Si LogToCloudWatchLogs la valeur est yes :

              • aws:executeScript- Vérifie si un groupe de CloudWatch journaux Logs portant le nom spécifié dans le paramètre existe CloudWatchLogGroup déjà. Dans le cas contraire, le groupe est créé avec le nom spécifié.

              • aws:branch- Branches basées sur la valeur spécifiée dans le CreateMetricFilters paramètre.

                • Si CreateMetricFilters la valeur est yes :

                  • aws:executeAwsApi- 12 étapes sont exécutées pour chaque filtre métrique

                  • aws:branch- Branches basées sur la valeur spécifiée dans le CreateLogInsightsDashboard paramètre.

                    • Si CreateLogInsightsDashboard la valeur est yes :

                      • aws:executeAwsApi- Crée un CloudWatch tableau de bord portant le même nom que celui spécifié dans le CloudWatchLogGroup paramètre, s'il n'existe pas déjà.

                    • Si CreateLogInsightsDashboard la valeur est no :

                      • aws:runCommand- Exécute un script shell pour rechercher des modèles de journal sur chaque instance du cluster.

                • Si CreateMetricFilters la valeur est no :

                  • aws:branch- Branches basées sur la valeur spécifiée dans le CreateLogInsightsDashboard paramètre.

                    • Si CreateLogInsightsDashboard la valeur est yes :

                      • aws:executeAwsApi- Crée un CloudWatch tableau de bord portant le même nom que celui spécifié dans le CloudWatchLogGroup paramètre, s'il n'existe pas déjà.

                    • Si CreateLogInsightsDashboard la valeur est no :

                      • aws:runCommand- Exécute un script shell pour rechercher des modèles de journal sur chaque instance du cluster.

            • Si LogToCloudWatchLogs la valeur est no :

              • aws:executeAwsApi- Exécute un script shell pour rechercher des modèles de journal sur chaque instance du cluster.

        • Si l'opération proposée est la suivante Schedule :

          • aws:createStack- Crée un EventBridge événement Amazon qui cible ce runbook.

    • Si l'opération proposée est la suivante Remove Schedule :

      • aws:executeAwsApi- Vérifie qu'un calendrier existe pour le cluster.

      • aws:deleteStack- Supprime le calendrier.

Sorties

GetClusterInformation.ClusterName

GetClusterInformation.ClusterState

ListingClusterInstances.InstanceIDs

CreatingScheduleCloudFormationStack.StackStatus

RemovingScheduleByDeletingScheduleCloudFormationStack.StackStatus

CheckIfLogGroupExists.output

FindLogPatternOnEMRNode.CommandId