

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# `AWSSupport-AnalyzeEMRLogs`
<a name="automation-awssupport-analyzeemrlogs"></a>

 **描述** 

此运行手册可帮助识别在 Amazon EMR 集群上运行任务时出现的错误。运行手册分析文件系统上已定义日志的列表，并查找预定义关键字的列表。这些日志条目用于创建 Amazon Events CloudWatch 事件，因此您可以根据事件采取任何必要的操作。或者，运行手册将日志条目发布到您选择的 Amazon Log CloudWatch s 日志组。此运行手册目前在日志文件中查找以下错误和模式：
+  container\$1out\$1of\$1memory – YARN 容器内存不足，运行作业可能会失败。
+  yarn\$1nodemanager\$1health：CORE 或 TASK 节点在磁盘中的运行空间不足，将无法运行任务。
+  node\$1state\$1change：MASTER 节点无法访问核心或 TASK 节点。
+  step\$1failure：EMR 步骤已失败。
+  no\$1core\$1nodes\$1running：当前没有 CORE 节点在运行，集群运行状况不佳。
+  hdfs\$1missing\$1blocks：缺少 HDFS 块可能会导致数据丢失。
+  hdfs\$1high\$1util：HDFS 利用率较高，这可能会影响作业和集群运行状况。
+  instance\$1controller\$1restart：实例控制器进程已重启。此进程对集群运行状况至关重要。
+  instance\$1controller\$1restart\$1legacy：实例控制器进程已重启。此进程对集群运行状况至关重要。
+  high\$1load：检测到平均负载过高，这可能会影响节点运行状况报告或导致超时或减速。
+  yarn\$1node\$1blacklisted：CORE 或 TASK 节点已被 YARN 列入黑名单，无法运行任务。
+  yarn\$1node\$1lost：CORE 或 TASK 节点已被 YARN 标记为丢失，这可能是连接问题。

 与指定的关联的 `ClusterID` 实例必须由 AWS Systems Manager管理。您可以运行此自动化一次，将此自动化安排为按特定的时间间隔运行，或者删除以前由某个自动化创建的时间安排。此运行手册支持 Amazon EMR 发行版 5.20 至 6.30。

 [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-AnalyzeEMRLogs) 

**文档类型**

自动化

**所有者**

Amazon

**平台**

Linux、macOS、Windows

**参数**
+ AutomationAssumeRole

  类型：字符串

  描述：（可选）允许 Systems Manager Automation 代表您执行操作 AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称（ARN）。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
+ ClusterID

  类型：字符串

  描述：（必需）要分析其节点日志的集群的 ID。
+ 操作

  类型：字符串

  有效值：运行一次 \$1 计划 \$1 移除计划 

  描述：（必需）要在集群上执行的操作。
+ IntervalTime

  类型：字符串

  有效值：5 分钟 \$1 10 分钟 \$1 15 分钟

   描述：（可选）运行自动化的间隔时间。此参数仅在您为 `Operation` 参数指定 `Schedule` 时适用。
+ LogToCloudWatchLogs

  类型：字符串

  有效值：是 \$1 否

   描述：（可选）如果您指定此参数`yes`的值，则自动化会使用`CloudWatchLogGroup`参数中指定的名称创建一个 CloudWatch 日志日志组，以存储任何匹配的日志条目。
+ CloudWatchLogGroup

  类型：字符串

   描述：（可选）您要在其中存储任何匹配的 CloudWatch 日志条目的日志组的名称。此参数仅在您为 `LogToCloudWatchLogs` 参数指定 `yes` 时适用。
+ CreateLogInsightsDashboard

  类型：字符串

  有效值：是 \$1 否

   描述：（可选）如果指定`yes`，则创建 CloudWatch 仪表板（如果尚不存在）。此参数仅在您为 `LogToCloudWatchLogs` 参数指定 `yes` 时适用。
+ CreateMetricFilters

  类型：字符串

  有效值：是 \$1 否

   描述：（可选）指定`yes`是否要为 CloudWatch 日志组创建指标筛选器。此参数仅在您为 `LogToCloudWatchLogs` 参数指定 `yes` 时适用。

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。
+  `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` 

 **文档步骤** 
+  `aws:executeAwsApi` - 收集在 `ClusterID` 参数中指定的 Amazon EMR 集群的相关信息。
+  `aws:branch` - 根据输入进行分支。
  +  如果提供的操作是 `Run Once` 或 `Schedule`：
    +  `aws:assertAwsResourceProperty` - 验证集群是否可用。
    +  `aws:executeAwsApi`-收集集群中运行的所有实例。 IDs 
    +  `aws:assertAwsResourceProperty` - 验证 SSM 代理是否在集群中的所有实例上运行。
    +  `aws:branch` - 根据您指定运行自动化一次还是按计划运行进行分支。
      +  如果提供的操作是 `Run Once`：
        +  `aws:branch` - 根据在 `LogToCloudWatchLogs` 参数中指定的值进行分支。
          +  如果 `LogToCloudWatchLogs` 值为 `yes`：
            +  `aws:executeScript`-检查参数中指定名称的 CloudWatch 日志组是否`CloudWatchLogGroup`已经存在。如果不存在，则使用指定的名称创建组。
            +  `aws:branch` - 根据在 `CreateMetricFilters` 参数中指定的值进行分支。
              +  如果 `CreateMetricFilters` 值为 `yes`：
                +  `aws:executeAwsApi` - 为每个指标筛选器运行 12 个步骤 
                +  `aws:branch` - 根据在 `CreateLogInsightsDashboard` 参数中指定的值进行分支。
                  +  如果 `CreateLogInsightsDashboard` 值为 `yes`：
                    +  `aws:executeAwsApi`-使用`CloudWatchLogGroup`参数中指定的相同名称创建 CloudWatch仪表板（如果尚不存在）。
                  +  如果 `CreateLogInsightsDashboard` 值为 `no`：
                    +  `aws:runCommand` - 运行 Shell 脚本以查找集群中每个实例的日志模式。
              +  如果 `CreateMetricFilters` 值为 `no`：
                +  `aws:branch` - 根据在 `CreateLogInsightsDashboard` 参数中指定的值进行分支。
                  +  如果 `CreateLogInsightsDashboard` 值为 `yes`：
                    +  `aws:executeAwsApi`-使用`CloudWatchLogGroup`参数中指定的相同名称创建 CloudWatch仪表板（如果尚不存在）。
                  +  如果 `CreateLogInsightsDashboard` 值为 `no`：
                    +  `aws:runCommand` - 运行 Shell 脚本以查找集群中每个实例的日志模式。
          +  如果 `LogToCloudWatchLogs` 值为 `no`：
            +  `aws:executeAwsApi` - 运行 Shell 脚本以查找集群中每个实例的日志模式。
      +  如果提供的操作是 `Schedule`：
        +  `aws:createStack`-创建针对此运行手册的 Amazon EventBridge 事件。
  +  如果提供的操作是 `Remove Schedule`：
    +  `aws:executeAwsApi` - 验证集群是否存在时间表。
    +  `aws:deleteStack` - 删除时间表。

 **输出** 

GetClusterInformation.ClusterName

GetClusterInformation.ClusterState

ListingClusterInstances. 实例 IDs

CreatingScheduleCloudFormationStack.StackStatus

RemovingScheduleByDeletingScheduleCloudFormationStack.StackStatus

CheckIfLogGroupExists。输出

FindLogPatternOnEMRNode.CommandId