本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWSSupport-AnalyzeEMRLogs
Description
此 Runbook 有助於識別在 Amazon EMR 叢集上執行任務時的錯誤。runbook 會分析檔案系統上已定義的記錄清單,並尋找預先定義的關鍵字清單。這些日誌項目用於建立 Amazon E CloudWatch vents 事件,因此您可以根據事件採取任何必要的動作。或者,執行手冊會將日誌項目發佈到您選擇的 Amazon CloudWatch 日誌日誌群組。此 runbook 目前會在記錄檔中尋找下列錯誤和模式:
-
內存YARN容器-容器內存不足,運行作業可能會失敗。
-
yarn_nodemanager 健康:CORE或TASK節點的磁碟空間不足,將無法執行工作。
-
節點無法存取:CORE或TASK節點無法存取。MASTER
-
步驟失敗:EMR步驟失敗。
-
no_core_nodes_run: 目前沒有節點在執行中,CORE叢集狀況不佳。
-
缺失的區塊:有可能導致資料遺失的HDFS區塊。
-
hdfs_high_util:HDFS使用率很高,可能會影響工作和叢集健康狀況。
-
重新啟動:執行個體控制器處理程序已重新啟動。此程序對於叢集健全狀況至關重要。
-
執行個體控制器處理程序已重新啟動。此程序對於叢集健全狀況至關重要。
-
high_load:偵測到高負載平均值,可能會影響節點健全狀況報告,或導致逾時或變慢。
-
yarn_node_列入黑名單:CORE或TASK節點已透過執行的工作列入黑名單。YARN
-
yarn_node_lost:CORE或TASK節點已標記為LOST可能的連線問題。YARN
與您指定之相關聯ClusterID
的執行個體必須由管理 AWS Systems Manager。您可以執行此自動化操作一次、將自動化排程在特定時間間隔執行,或移除先前由自動化操作建立的排程。這本手冊支持 Amazon EMR 發布版本 5.20 到 6.30。
文件類型
自動化
擁有者
Amazon
平台
Linux,macOS, Windows
參數
-
AutomationAssumeRole
類型:字串
描述:(選用) 允許 Systems Manager 自動化代表您執行動作的 AWS Identity and Access Management (IAM) 角色的 Amazon 資源名稱 ()。ARN如果未指定角色,Systems Manager 自動化會使用啟動此 runbook 的使用者的權限。
-
ClusterID (ClusterID)
類型:字串
描述:(必要) 您要分析其節點記錄之叢集的 ID。
-
作業
類型:字串
有效值:「運行一次」|「計划」|「刪除計划
描述:(必要) 要在叢集上執行的作業。
-
IntervalTime
類型:字串
有效值:5 分鐘 | 10 分鐘 | 15 分鐘
說明:(選擇性) 執行自動化操作之間的持續時間。僅當您為參數指定
Schedule
時,此Operation
參數才適用。 -
LogToCloudWatchLogs
類型:字串
有效值:是 | 否
描述:(選擇性) 如果您指定
yes
此參數的值,自動化作業會以參數中指定的名稱建立「 CloudWatch 記錄」記錄群組,以儲存任何符合的記錄項目。CloudWatchLogGroup
-
CloudWatchLogGroup
類型:字串
說明:(選擇性) 您要儲存任何符合 CloudWatch 記錄項目的記錄檔日誌群組名稱。僅當您為參數指定
yes
時,此LogToCloudWatchLogs
參數才適用。 -
CreateLogInsightsDashboard
類型:字串
有效值:是 | 否
描述:(選擇性) 如果您指定
yes
,如果 CloudWatch 儀表板尚未存在,則會建立儀表板。僅當您為參數指定yes
時,此LogToCloudWatchLogs
參數才適用。 -
CreateMetricFilters
類型:字串
有效值:是 | 否
說明:(選擇性) 指定是
yes
否要為「 CloudWatch 記錄」日誌群組建立測量結果篩選器。僅當您為參數指定yes
時,此LogToCloudWatchLogs
參數才適用。
必要的IAM權限
此AutomationAssumeRole
參數需要下列動作才能成功使用 runbook。
-
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. 我 nstanceIDs
CreatingScheduleCloudFormationStack.StackStatus
RemovingScheduleByDeletingScheduleCloudFormationStack.StackStatus
CheckIfLogGroupExists. 輸出。
FindLogPatternOnEMRNode.CommandId