AWSSupport-AnalyzeEMRLogs - AWS Systems Manager 自动化运行手册参考

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

AWSSupport-AnalyzeEMRLogs

描述

本运行手册有助于识别在 Amazon EMR 集群上运行任务时的错误。运行手册分析文件系统上已定义日志的列表,并查找预定义关键字的列表。这些日志条目用于创建 Amazon Events CloudWatch 事件,因此您可以根据事件采取任何必要的操作。或者,运行手册将日志条目发布到您选择的 Amazon Log CloudWatch s 日志组。此运行手册目前在日志文件中查找以下错误和模式:

  • container_out_of_memory — YARN 容器内存不足,正在运行的作业可能会失败。

  • yarn_nodemanager_health:CORE或者TASK节点的磁盘空间不足,无法运行任务。

  • node_state_change:CORE或者TASK节点无法访问节点。MASTER

  • step_failure:EMR步骤失败。

  • no_core_nodes_running:当前没有CORE节点在运行,集群运行状况不佳。

  • hdfs_missing_blocks:缺少HDFS区块可能会导致数据丢失。

  • hdfs_high_util:HDFS利用率很高,这可能会影响作业和集群运行状况。

  • instance_controller_restart:实例控制器进程已重启。此进程对集群运行状况至关重要。

  • instance_controller_restart_legacy:实例控制器进程已重启。此进程对集群运行状况至关重要。

  • high_load:检测到平均负载过高,这可能会影响节点运行状况报告或导致超时或减速。

  • yarn_node_blacklisted:CORE或者TASK节点已被正在运行的任务列入黑名单。YARN

  • yarn_node_lost:CORE或者TASK节点已被标记为LOST,可能存在连接问题。YARN

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

运行此自动化(控制台)

文档类型

自动化

所有者

Amazon

平台

Linux,macOS, Windows

参数

  • AutomationAssumeRole

    类型:字符串

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

  • ClusterID

    类型:字符串

    描述:(必需)要分析其节点日志的集群的 ID。

  • 操作

    类型:字符串

    有效值:运行一次 | 计划 | 移除计划

    描述:(必需)要在集群上执行的操作。

  • IntervalTime

    类型:字符串

    有效值:5 分钟 | 10 分钟 | 15 分钟

    描述:(可选)运行自动化的间隔时间。此参数仅在您为 Operation 参数指定 Schedule 时适用。

  • LogToCloudWatchLogs

    类型:字符串

    有效值:是 | 否

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

  • CloudWatchLogGroup

    类型:字符串

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

  • CreateLogInsightsDashboard

    类型:字符串

    有效值:是 | 否

    描述:(可选)如果指定yes,则创建 CloudWatch 仪表板(如果尚不存在)。此参数仅在您为 LogToCloudWatchLogs 参数指定 yes 时适用。

  • CreateMetricFilters

    类型:字符串

    有效值:是 | 否

    描述:(可选)指定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 OnceSchedule

      • 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.I nstanceIDs

CreatingScheduleCloudFormationStack.StackStatus

RemovingScheduleByDeletingScheduleCloudFormationStack.StackStatus

CheckIfLogGroupExists。输出

FindLogPatternOnEMRNode.CommandId