View a markdown version of this page

AWSSupport-AnalyzeEMRLogs - AWS Systems Manager Runbook-Referenz für Automation

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWSSupport-AnalyzeEMRLogs

Beschreibung

Dieses Runbook hilft bei der Identifizierung von Fehlern bei der Ausführung eines Jobs auf einem Amazon EMR-Cluster. Das Runbook analysiert eine Liste definierter Protokolle im Dateisystem und sucht nach einer Liste vordefinierter Schlüsselwörter. Diese Protokolleinträge werden verwendet, um Amazon CloudWatch Events-Ereignisse zu erstellen, sodass Sie auf der Grundlage der Ereignisse alle erforderlichen Maßnahmen ergreifen können. Optional veröffentlicht das Runbook Protokolleinträge in der Amazon CloudWatch Logs-Protokollgruppe Ihrer Wahl. Dieses Runbook sucht derzeit in den Protokolldateien nach den folgenden Fehlern und Mustern:

  • container_out_of_memory — Der YARN-Container hat nicht mehr genügend Speicher, die Ausführung des Jobs schlägt möglicherweise fehl.

  • yarn_nodemanager_health: Dem CORE- oder TASK-Knoten geht der Speicherplatz aus und er kann keine Aufgaben ausführen.

  • node_state_change: Der CORE- oder TASK-Knoten ist für den MASTER-Knoten nicht erreichbar.

  • step_failure: Ein EMR-Schritt ist fehlgeschlagen.

  • no_core_nodes_running: Derzeit laufen keine CORE-Knoten, der Cluster ist fehlerhaft.

  • hdfs_missing_blocks: Es fehlen HDFS-Blöcke, die zu Datenverlust führen können.

  • hdfs_high_util: Die HDFS-Auslastung ist hoch, was sich auf Jobs und die Clusterintegrität auswirken kann.

  • instance_controller_restart: Prozess wurde neu gestartet. Instance-Controller Dieser Prozess ist für die Clusterintegrität unerlässlich.

  • instance_controller_restart_legacy: Prozess wurde neu gestartet. Instance-Controller Dieser Prozess ist für die Clusterintegrität unerlässlich.

  • high_load: Es wurde ein hoher Lastdurchschnitt erkannt, der sich auf die Node-Statusberichte auswirken oder zu Timeouts oder Verlangsamungen führen kann.

  • yarn_node_blacklisted: Der CORE- oder TASK-Knoten wurde von YARN für die Ausführung von Aufgaben auf die schwarze Liste gesetzt.

  • yarn_node_lost: Der CORE- oder TASK-Knoten wurde von YARN als LOST markiert, mögliche Verbindungsprobleme.

InstanzenClusterID, die dem von Ihnen angegebenen zugeordnet sind, müssen von verwaltet werden AWS Systems Manager. Sie können diese Automatisierung einmal ausführen, die Automatisierung so planen, dass sie in einem bestimmten Zeitintervall ausgeführt wird, oder einen Zeitplan entfernen, der zuvor von einer Automatisierung erstellt wurde. Dieses Runbook unterstützt die Amazon EMR-Release-Versionen 5.20 bis 6.30.

Führen Sie diese Automatisierung aus (Konsole)

Art des Dokuments

Automatisierung

Eigentümer

Amazon

Plattformen

LinuxmacOS, Windows

Parameter

  • AutomationAssumeRole

    Typ: Zeichenfolge

    Beschreibung: (Optional) Der Amazon-Ressourcenname (ARN) der AWS Identity and Access Management (IAM) -Rolle, die es Systems Manager Automation ermöglicht, die Aktionen in Ihrem Namen auszuführen. Wenn keine Rolle angegeben ist, verwendet Systems Manager Automation die Berechtigungen des Benutzers, der dieses Runbook startet.

  • ClusterID

    Typ: Zeichenfolge

    Beschreibung: (Erforderlich) Die ID des Clusters, dessen Knotenprotokolle Sie analysieren möchten.

  • Operation

    Typ: Zeichenfolge

    Gültige Werte: Einmal ausführen | Zeitplan | Zeitplan entfernen

    Beschreibung: (Erforderlich) Der Vorgang, der auf dem Cluster ausgeführt werden soll.

  • IntervalTime

    Typ: Zeichenfolge

    Gültige Werte: 5 Minuten | 10 Minuten | 15 Minuten

    Beschreibung: (Optional) Die Zeitdauer zwischen der Ausführung der Automatisierung. Dieser Parameter ist nur gültig, wenn Sie ihn Schedule für den Operation Parameter angeben.

  • LogToCloudWatchLogs

    Typ: Zeichenfolge

    Gültige Werte: ja | nein

    Beschreibung: (Optional) Wenn Sie den Wert dieses Parameters angebenyes, erstellt die Automatisierung eine CloudWatch Logs-Protokollgruppe mit dem im CloudWatchLogGroup Parameter angegebenen Namen, um alle übereinstimmenden Logeinträge zu speichern.

  • CloudWatchLogGroup

    Typ: Zeichenfolge

    Beschreibung: (Optional) Der Name der CloudWatch Logs-Protokollgruppe, in der Sie alle übereinstimmenden Logeinträge speichern möchten. Dieser Parameter ist nur gültig, wenn Sie ihn yes für den LogToCloudWatchLogs Parameter angeben.

  • CreateLogInsightsDashboard

    Typ: Zeichenfolge

    Gültige Werte: ja | nein

    Beschreibung: (Optional) Wenn Sie angebenyes, wird das CloudWatch Dashboard erstellt, sofern es noch nicht existiert. Dieser Parameter ist nur gültig, wenn Sie ihn yes für den LogToCloudWatchLogs Parameter angeben.

  • CreateMetricFilters

    Typ: Zeichenfolge

    Gültige Werte: ja | nein

    Beschreibung: (Optional) Geben Sie an, yes ob Sie Metrikfilter für die CloudWatch Log-Loggruppe erstellen möchten. Dieser Parameter ist nur gültig, wenn Sie ihn yes für den LogToCloudWatchLogs Parameter angeben.

Erforderliche IAM-Berechtigungen

Der AutomationAssumeRole Parameter erfordert die folgenden Aktionen, um das Runbook erfolgreich zu verwenden.

  • 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

Dokumentschritte

  • aws:executeAwsApi— Sammelt Informationen über den im Parameter angegebenen Amazon EMR-Cluster. ClusterID

  • aws:branch— Verzweigungen auf der Grundlage von Eingaben.

    • Wenn die bereitgestellte Operation Run Once oder istSchedule:

      • aws:assertAwsResourceProperty— Überprüft, ob der Cluster verfügbar ist.

      • aws:executeAwsApi— Sammelt die IDs aller Instanzen, die im Cluster ausgeführt werden.

      • aws:assertAwsResourceProperty- Überprüft, ob der SSM Agent auf allen Instanzen im Cluster ausgeführt wird.

      • aws:branch— Verzweigungen je nachdem, ob Sie angegeben haben, dass die Automatisierung einmal oder nach einem Zeitplan ausgeführt werden soll.

        • Wenn die bereitgestellte Operation wie folgt lautetRun Once:

          • aws:branch- Verzweigungen, die auf dem im LogToCloudWatchLogs Parameter angegebenen Wert basieren.

            • Wenn der LogToCloudWatchLogs Wert lautetyes:

              • aws:executeScript- Prüft, ob eine CloudWatch Logs-Log-Gruppe mit dem im Parameter angegebenen Namen CloudWatchLogGroup bereits existiert. Wenn nicht, wird die Gruppe mit dem angegebenen Namen erstellt.

              • aws:branch- Verzweigungen basieren auf dem im CreateMetricFilters Parameter angegebenen Wert.

                • Wenn der CreateMetricFilters Wert lautetyes:

                  • aws:executeAwsApi- Für jeden Metrikfilter werden 12 Schritte ausgeführt

                  • aws:branch- Verzweigungen basieren auf dem im CreateLogInsightsDashboard Parameter angegebenen Wert.

                    • Wenn der CreateLogInsightsDashboard Wert lautetyes:

                      • aws:executeAwsApi- Erstellt ein CloudWatch Dashboard mit demselben Namen, der im CloudWatchLogGroup Parameter angegeben ist, falls es noch nicht existiert.

                    • Wenn der CreateLogInsightsDashboard Wert lautetno:

                      • aws:runCommand— Führt ein Shell-Skript aus, um Protokollmuster auf jeder Instanz im Cluster zu finden.

                • Wenn der CreateMetricFilters Wert lautetno:

                  • aws:branch- Verzweigungen basieren auf dem im CreateLogInsightsDashboard Parameter angegebenen Wert.

                    • Wenn der CreateLogInsightsDashboard Wert lautetyes:

                      • aws:executeAwsApi- Erstellt ein CloudWatch Dashboard mit demselben Namen, der im CloudWatchLogGroup Parameter angegeben ist, falls es noch nicht existiert.

                    • Wenn der CreateLogInsightsDashboard Wert lautetno:

                      • aws:runCommand— Führt ein Shell-Skript aus, um Protokollmuster auf jeder Instanz im Cluster zu finden.

            • Wenn der LogToCloudWatchLogs Wert lautetno:

              • aws:executeAwsApi— Führt ein Shell-Skript aus, um Protokollmuster auf jeder Instanz im Cluster zu finden.

        • Wenn die bereitgestellte Operation wie folgt lautetSchedule:

          • aws:createStack— Erzeugt ein EventBridge Amazon-Ereignis, das auf dieses Runbook abzielt.

    • Wenn die bereitgestellte Operation wie folgt lautetRemove Schedule:

      • aws:executeAwsApi— Überprüft, ob ein Zeitplan für den Cluster existiert.

      • aws:deleteStack- Löscht den Zeitplan.

Ausgaben

GetClusterInformation.ClusterName

GetClusterInformation.ClusterState

ListingClusterInstances.InstanceIDs

CreatingScheduleCloudFormationStack.StackStatus

RemovingScheduleByDeletingScheduleCloudFormationStack.StackStatus

CheckIfLogGroupExists.output

FindLogPatternOnEMRNode.CommandId