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

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

AWSSupport-DiagnoseEMRLogsWithAthena

Description

使用 AWSSupport-DiagnoseEMRLogsWithAthena Amazon Athena 與 AWS Glue 資料目錄整合,協助診斷亞馬遜EMR日誌。Amazon Athena 可用來查詢容器、節點日EMR誌或兩者的 Amazon 日誌檔,並提供特定日期範圍或關鍵字搜尋的選用參數。

執行手冊可以自動擷取現有叢集的 Amazon EMR 日誌位置,或者您也可以指定 Amazon S3 日誌位置。為了分析日誌,手冊:

  • 在 Amazon Amazon S3 日誌位置建立資料 AWS Glue 庫並執行 EMR Amazon Athena 資料定義語言 (DDL) 查詢,以建立叢集日誌的表格和已知問題清單。

  • 執行資料操作語言 (DML) 查詢以搜尋 Amazon EMR 日誌中已知的問題模式。查詢會依 Amazon S3 檔案路徑傳回偵測到的問題清單、發生次數,以及符合的關鍵字數目。

  • 結果會上傳到您在前置詞下指定的 Amazon S3 儲存貯體saw_diagnose_EMR_known_issues

  • Runbook 會傳回 Amazon Athena 查詢結果,反白顯示發現結果、建議和參考資料,以及來自預先定義子集的 Amazon 知識中心 (KC) 文章。

  • 完成或失敗時,會刪除上傳到 Amazon S3 儲存貯體的 AWS Glue 資料庫和已知問題檔案。

它是如何工作的?

使用 Amazon Amazon Athena AWSSupport-DiagnoseEMRLogsWithAthena 執行 Amazon EMR 日誌的分析,以偵測錯誤並突出顯示發現結果、建議和相關知識中心文章。

執行手冊執行下列步驟:

  • 使用EMR叢集 ID 取得 Amazon 叢集日誌位置,或輸入 Amazon S3 位置以擷取日誌位置和大小。

  • 根據記錄位置大小提供 Athena 成本估算。

  • 在執行 Athena 查詢之前,請先要求指定IAM主體的核准,然後繼續執行後續步驟,以取得核准。

  • 將已知問題上傳到指定的 Amazon S3 儲存貯體,並建立 AWS Glue 資料庫和資料表。

  • 在 Amazon EMR 日誌資料上執行 Athena 查詢。查詢可以按日期範圍,關鍵字,兩個條件進行搜索,也可以根據提供的輸入不進行過濾器運行。

  • 分析結果以突出顯示發現結果,建議和相關的 KC 文章。

  • Amazon Athena DML 查詢結果的輸出連結。

  • 透過移除建立的資料庫、資料表和上傳的已知問題來清理環境。

文件類型

 自動化

擁有者

Amazon

平台

/

AutomationAssumeRole 參數需要下列動作才能成功使用 runbook:

  • 雅典娜:GetQueryExecution

  • 雅典娜:StartQueryExecution

  • 雅典娜:GetPreparedStatement

  • 雅典娜:CreatePreparedStatement

  • 膠水:GetDatabase

  • 膠水:CreateDatabase

  • 膠水:DeleteDatabase

  • 膠水:CreateTable

  • 膠水:GetTable

  • 膠水:DeleteTable

  • 彈性構圖:DescribeCluster

  • S3:ListBucket

  • S3:GetBucketVersioning

  • S3:ListBucketVersions

  • S3:GetBucketPublicAccessBlock

  • S3:GetBucketPolicyStatus

  • S3:GetObject

  • S3:GetBucketLocation

  • 定價:GetProducts

  • 定價:GetAttributeValues

  • 定價:DescribeServices

  • 定價:ListPriceLists

重要

若要限制只存取此自動化所需的資源,請將下列原則附加至信任SSM服務的IAM角色。將「分割區」、「區域」和「帳戶」取代為執行報表簿所在的分割區、區域和帳戶號碼的適當值。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "glue:GetDatabase", "athena:GetQueryExecution", "athena:StartQueryExecution", "athena:GetPreparedStatement", "athena:CreatePreparedStatement", "s3:ListBucket", "s3:GetBucketVersioning", "s3:ListBucketVersions", "s3:GetBucketPublicAccessBlock", "s3:GetBucketPolicyStatus", "s3:GetObject", "s3:GetBucketLocation", "pricing:GetProducts", "pricing:GetAttributeValues", "pricing:DescribeServices", "pricing:ListPriceLists" ], "Resource": "*" }, { "Sid": "RestrictPutObjects", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:{Partition}:s3:::*/*/results/*", "arn:{partition}:s3:::*/*/saw_diagnose_emr_known_issues/*" ] }, { "Sid": "RestrictDeleteAccess", "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": [ "arn:{Partition}:s3:::*/*/saw_diagnose_emr_known_issues/*" ] }, { "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:DeleteDatabase" ], "Resource": [ "arn:{Partition}:glue:{Region}:{Account}:database/saw_diagnose_emr_database_*", "arn:{Partition}:glue:{Region}:{Account}:table/saw_diagnose_emr_database_*/*", "arn:{Partition}:glue:{Region}:{Account}:userDefinedFunction/saw_diagnose_emr_database_*/*", "arn:{Partition}:glue:{Region}:{Account}:catalog" ] }, { "Effect": "Allow", "Action": [ "glue:CreateTable", "glue:GetTable", "glue:DeleteTable" ], "Resource": [ "arn:{Partition}:glue:{Region}:{Account}:table/saw_diagnose_emr_database_*/saw_diagnose_emr_known_issues", "arn:{Partition}:glue:{Region}:{Account}:table/saw_diagnose_emr_database_*/saw_diagnose_emr_logs_table", "arn:{Partition}:glue:{Region}:{Account}:table/saw_diagnose_emr_database_*/j_*", "arn:{Partition}:glue:{Region}:{Account}:database/saw_diagnose_emr_database_*", "arn:{Partition}:glue:{Region}:{Account}:catalog" ] } ] }

指示

請依照下列步驟設定自動化操作:

  1. 導航 AWSSupport-D iagnoseEMRLogs WithAthena 在 AWS Systems Manager 下文檔。

  2. 選擇 Execute automation (執行自動化)。

  3. 對於輸入參數,請輸入以下內容:

    • AutomationAssumeRole (選擇性):

      () 角色的 Amazon 資源名稱 AWS Identity and Access Management (ARNIAM),可讓 Systems Manager 自動化代表您執行動作。如果未指定角色,Systems Manager 自動化會使用啟動此 runbook 的使用者的權限。

    • ClusterID D (必要):

      Amazon EMR 群集 ID。

    • S3 LogLocation (選擇性):

      Amazon S3 Amazon EMR 日誌位置。輸入路徑樣式的 URL Amazon S3 位置,例如:s3://amzn-s3-demo-bucket/myfolder/j-1K48XXXXXXHCB/。如果 Amazon EMR 叢集終止超過30天,請提供此參數。

    • S3 BucketName (必要):

      用於上傳已知問題清單的 Amazon S3 儲存貯體名稱,以及 Amazon Athena 查詢的輸出。儲存貯體應啟用「區塊公共存取」,並且位於與 Amazon EMR 叢集相同的 AWS 區域和帳戶。

    • 核准人 (必要):

      能夠核准或拒絕動作的 AWS 已驗證主參與者清單。您可以使用下列任一格式來指定主參與者:使用者名稱、使用者ARNARN、IAM角色或IAM假定角色ARN。核准者的數量上限為 10。

    • FetchNodeLogsOnly (選擇性):

      如果設為true,則自動化會診斷 Amazon EMR 應用程式容器日誌。預設值為 false

    • FetchContainersLogsOnly(選擇性):

      如果設定為true,則自動化會診斷 Amazon EMR 容器日誌。預設值為 false

    • EndSearchDate (選擇性):

      記錄搜尋的結束日期。如果提供,自動化操作將專門搜尋截至指定日期之前產生的記錄,格式為 YYYY-MM-DD (例如:)。2024-12-30

    • DaysToCheck (選擇性):

      如果EndSearchDate提供此參數,就必須使用此參數來決定從指定的回溯搜尋記錄的天數。EndSearchDate最大值為30天。預設值為 1

    • SearchKeywords (選擇性):

      要在記錄檔中搜尋的關鍵字清單,以逗號分隔。關鍵字不能包含單引號或雙引號。

  4. 選取執行

  5. 自動化啟動。

  6. 文件會執行下列步驟:

    • getLogLocation:

      透過查詢指定的 Amazon EMR 叢集 ID 擷取 Amazon S3 日誌位置。如果自動化無法從 Amazon EMR 叢集 ID 查詢日誌位置,則執行手冊會使用S3LogLocation輸入參數。

    • branchOnValid日誌:

      驗證 Amazon EMR 日誌的位置。如果該位置有效,請在 Amazon EMR 日誌上執行查詢時,繼續估算 Amazon Athena 潛在成本。

    • estimateAthenaCosts:

      判斷 Amazon EMR 日誌的大小,並提供在日誌資料集上執行 Athena 掃描的成本估算。對於非商業區域(非AWS 分區),此步驟只提供日誌大小而不估計成本。您可以使用指定區域中的 Athena 定價文件計算成本。

    • approveAutomation:

      等待指定的IAM主參與者核准,以繼續執行自動化的後續步驟。核准通知包含 Amazon EMR 日誌上 Amazon Athena 掃描的估計成本,以及自動化佈建資源的詳細資訊。

    • uploadKnownIssuesExecuteAthenaQueries:

      將預先定義的已知問題上傳到S3BucketName參數中指定的 Amazon S3 儲存貯體。創建 AWS Glue 數據庫和表。根據輸入參數在 AWS Glue 資料庫中執行 Amazon Athena 查詢。

    • getQueryExecution狀態:

      等待 Amazon Athena 查詢執行SUCCEEDED狀態為止。Amazon Athena DML 查詢會在 Amazon EMR 叢集日誌中搜尋錯誤和例外狀況。

    • analyzeAthenaResults:

      分析 Amazon Athena 結果,以提供來自一組預先定義對應的調查結果、建議和知識中心 (KC) 文章。

    • getAnalyzeResults查詢 1:ExecutionStatus

      等待直到查詢執行SUCCEEDED處於狀態。Amazon Athena DML 查詢會分析先前DML查詢的結果。此分析查詢將返回匹配的異常與分辨率和 KC 文章

    • getAnalyzeResults查詢二:ExecutionStatus

      等待直到查詢執行SUCCEEDED處於狀態。Amazon Athena DML 查詢會分析先前DML查詢的結果。此分析查詢將傳回在每個 Amazon S3 日誌路徑中偵測到的例外/錯誤清單。

    • printAthenaQueries訊息:

      列印 Amazon Athena DML 查詢結果的連結。

    • cleanupResources:

      刪除建立的資 AWS Glue 料庫以清理資源,並刪除 Amazon EMR Logs 儲存貯體中建立的已知問題檔案。

  7. 完成後,請查看「輸出」部分以獲取執行的詳細結果:

    輸出提供三個 Athena 查詢結果連結:

    • 列出 Amazon EMR 叢集日誌中發現的所有錯誤和經常發生的例外狀況,以及對應的日誌位置 (Amazon S3 前綴)。

    • Amazon EMR 日誌中符合的唯一已知例外摘要,以及建議的解決方案和 KC 文章,以協助進行疑難排解。

    • Amazon S3 日誌路徑中出現特定錯誤和例外狀況的詳細資訊,以支援進一步診斷。

參考

Systems Manager Automation

AWS 服務文件