本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 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.I nstanceIDs
CreatingScheduleCloudFormationStack.StackStatus
RemovingScheduleByDeletingScheduleCloudFormationStack.StackStatus
CheckIfLogGroupExists。输出
FindLogPatternOnEMRNode.CommandId