本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWSSupport-AnalyzeEMRLogs
描述
此运行手册可帮助识别在 Amazon EMR 集群上运行任务时出现的错误。运行手册分析文件系统上已定义日志的列表,并查找预定义关键字的列表。这些日志条目用于创建 Amazon Events CloudWatch 事件,因此您可以根据事件采取任何必要的操作。或者,运行手册将日志条目发布到您选择的 Amazon Log CloudWatch s 日志组。此运行手册目前在日志文件中查找以下错误和模式:
-
container_out_of_memory – YARN 容器内存不足,运行作业可能会失败。 -
yarn_nodemanager_health:CORE 或 TASK 节点在磁盘中的运行空间不足,将无法运行任务。 -
node_state_change:MASTER 节点无法访问核心或 TASK 节点。 -
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 节点已被 YARN 标记为丢失,这可能是连接问题。
与指定的关联的 ClusterID 实例必须由 AWS Systems Manager管理。您可以运行此自动化一次,将此自动化安排为按特定的时间间隔运行,或者删除以前由某个自动化创建的时间安排。此运行手册支持 Amazon EMR 发行版 5.20 至 6.30。
文档类型
自动化
所有者
Amazon
平台
Linux、macOS、Windows
参数
-
AutomationAssumeRole
类型:字符串
描述:(可选)允许 Systems Manager Automation 代表您执行操作 AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称(ARN)。如果未指定角色,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 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