本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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" ] } ] }
指示
請依照下列步驟設定自動化操作:
-
導航 AWSSupport-D iagnoseEMRLogs WithAthena
在 AWS Systems Manager 下文檔。 -
選擇 Execute automation (執行自動化)。
-
對於輸入參數,請輸入以下內容:
-
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 (選擇性):
要在記錄檔中搜尋的關鍵字清單,以逗號分隔。關鍵字不能包含單引號或雙引號。
-
-
選取執行。
-
自動化啟動。
-
文件會執行下列步驟:
-
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 儲存貯體中建立的已知問題檔案。
-
-
完成後,請查看「輸出」部分以獲取執行的詳細結果:
輸出提供三個 Athena 查詢結果連結:
-
列出 Amazon EMR 叢集日誌中發現的所有錯誤和經常發生的例外狀況,以及對應的日誌位置 (Amazon S3 前綴)。
-
Amazon EMR 日誌中符合的唯一已知例外摘要,以及建議的解決方案和 KC 文章,以協助進行疑難排解。
-
Amazon S3 日誌路徑中出現特定錯誤和例外狀況的詳細資訊,以支援進一步診斷。
-
參考
Systems Manager Automation
AWS 服務文件
-
如需詳細資訊,請參閱疑難排解 Amazon EMR 叢集