AWSSupport-AnalyzeEMRLogs - AWS Systems Manager 自動化手冊參考

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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 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. 我 nstanceIDs

CreatingScheduleCloudFormationStack.StackStatus

RemovingScheduleByDeletingScheduleCloudFormationStack.StackStatus

CheckIfLogGroupExists. 輸出。

FindLogPatternOnEMRNode.CommandId