

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# `AWSSupport-DiagnoseEMRLogsWithAthena`
<a name="awssupport-diagnose-emr-logs-with-athena"></a>

**描述** 

该`AWSSupport-DiagnoseEMRLogsWithAthena`运行手册使用与数据目录集成的亚马逊 Athena 帮助诊断亚马逊 EMR 日志。 AWS Glue Amazon Athena 用于查询 Amazon EMR 日志文件，以获取容器日志和/或节点日志以及特定日期范围或基于关键字的搜索的可选参数。

运行手册可以自动检索现有集群的 Amazon EMR 日志位置，或者您可以指定 Amazon S3 日志位置。为了分析日志，运行手册：
+ 创建 AWS Glue 数据库并在 Amazon EMR Amazon S3 日志位置执行 Amazon Athena 数据定义语言 (DDL) 查询，为集群日志和已知问题列表创建表。
+ 执行数据操纵语言 (DML) 查询，在 Amazon EMR 日志中搜索已知问题模式。这些查询会按照 Amazon S3 文件路径返回检测到的问题列表、出现次数以及匹配的关键词数量。
+ 结果将上传到您在前缀下指定的 Amazon S3 存储桶`saw_diagnose_EMR_known_issues`。
+ 运行手册返回 Amazon Athena 的查询结果，重点介绍来自预定义子集的调查结果、建议以及对亚马逊知识中心 (KC) 文章的引用。
+  完成或失败后，上传到 Amazon S3 存储桶的 AWS Glue 数据库和已知问题文件将被删除。

 **如何工作？** 

 使用 Amazon Athena 对 Amazon EMR 日志`AWSSupport-DiagnoseEMRLogsWithAthena`进行分析，以检测错误并重点介绍调查结果、建议和相关知识中心文章。

运行手册执行以下步骤：
+ 使用集群 ID 获取 Amazon EMR 集群日志位置或输入 Amazon S3 位置以检索日志位置和大小。
+ 根据日志位置大小提供 Athena 成本估算。
+ 在运行 Athena 查询并继续执行后续步骤之前，请向指定的 IAM 委托人申请批准，即可获得批准。
+ 将已知问题上传到指定的 Amazon S3 存储桶，创建 AWS Glue 数据库和表。
+ 对亚马逊 EMR 日志数据执行 Athena 查询。查询可以按日期范围、关键字和两个条件进行搜索，也可以根据提供的输入在不带筛选条件的情况下运行。
+ 分析结果，重点介绍调查结果、建议和相关的 KC 文章。
+ 亚马逊 Athena DML 的输出链接查询结果。
+ 通过移除已创建的数据库、表和已上传的已知问题来清理环境。

**文档类型**

自动化

**所有者**

Amazon

**平台**

/

该 AutomationAssumeRole 参数需要以下操作才能成功使用运行手册：
+ 雅典娜：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 角色。将 “分区”、“区域” 和 “帐户” 替换为执行运行手册的分区、区域和账号的相应值。

------
#### [ JSON ]

****  

```
{
    "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:aws:s3:::*/*/results/*",
                "arn:aws:s3:::*/*/saw_diagnose_emr_known_issues/*"
            ]
        },
        {
            "Sid": "RestrictDeleteAccess",
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:DeleteObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::*/*/saw_diagnose_emr_known_issues/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetDatabase",
                "glue:CreateDatabase",
                "glue:DeleteDatabase"
            ],
            "Resource": [
                "arn:aws:glue:us-east-1:111122223333:database/saw_diagnose_emr_database_*",
                "arn:aws:glue:us-east-1:111122223333:table/saw_diagnose_emr_database_*/*",
                "arn:aws:glue:us-east-1:111122223333:userDefinedFunction/saw_diagnose_emr_database_*/*",
                "arn:aws:glue:us-east-1:111122223333:catalog"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateTable",
                "glue:GetTable",
                "glue:DeleteTable"
            ],
            "Resource": [
                "arn:aws:glue:us-east-1:111122223333:table/saw_diagnose_emr_database_*/saw_diagnose_emr_known_issues",
                "arn:aws:glue:us-east-1:111122223333:table/saw_diagnose_emr_database_*/saw_diagnose_emr_logs_table",
                "arn:aws:glue:us-east-1:111122223333:table/saw_diagnose_emr_database_*/j_*",
                "arn:aws:glue:us-east-1:111122223333:database/saw_diagnose_emr_database_*",
                "arn:aws:glue:us-east-1:111122223333:catalog"
            ]
        }
    ]
}
```

------

 **说明** 

按照这些步骤对自动化进行配置：

1. [AWSSupport-DiagnoseEMRLogsWithAthena](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-DiagnoseEMRLogsWithAthena/description)在 “文档” AWS Systems Manager 下方导航。

1. 选择 Execute automation（执行自动化）。

1. 要输入参数，请输入以下内容：
   + **AutomationAssumeRole （可选）：**

     允许 Systems Manager Automation 代表您执行操作的 AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
   + **集群 ID（必填）：**

     亚马逊 EMR 集群 ID。
   + **S3LogLocation （可选）：**

     亚马逊 S3 亚马逊 EMR 日志位置。输入路径样式的 URL Amazon S3 位置，例如：。`s3://amzn-s3-demo-bucket/myfolder/j-1K48XXXXXXHCB/`如果 Amazon EMR 集群已终止超过`30`天数，请提供此参数。
   + **S3BucketName （必填）：**

      用于上传已知问题列表的 Amazon S3 存储桶名称，以及 Amazon Athena 查询的输出。该存储桶应[启用封锁公共访问功能](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)，并且与 Amazon EMR 集群位于同一 AWS 区域和账户。
   + **批准者（必填）：**

     能够批准或拒绝操作的 AWS 经过身份验证的委托人列表。您可以使用以下任一格式指定委托人：用户名、用户 ARN、IAM 角色 ARN 或 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 （可选）：**

      要在日志中搜索的关键字列表，以逗号分隔。关键字不能包含单引号或双引号。  
![\[Input parameters form for AWS Systems Manager Automation with various fields and options.\]](http://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-diagnose-emr-logs-with-athena_input_parameters.png)

1. 选择**执行**。

1. 自动化启动。

1. 文档将执行以下步骤：
   + **getLogLocation:**

     通过查询指定的 Amazon EMR 集群 ID 来检索 Amazon S3 日志位置。如果自动化无法从 Amazon EMR 集群 ID 中查询日志位置，则运行手册将使用输入参数。`S3LogLocation`
   + **branchOnValid日志：**

     验证 Amazon EMR 日志的位置。如果位置有效，则继续估算对亚马逊 EMR 日志执行查询时的 Amazon Athena 潜在成本。
   + **estimateAthenaCosts:**

     确定 Amazon EMR 日志的大小，并提供对日志数据集执行 Athena 扫描的成本估算。对于非商业区域（非AWS 分区），此步骤仅提供日志大小，而无需估算成本。可以使用指定区域的 Athena 定价文档来计算成本。
   + **批准自动化：**

     等待指定的 IAM 委托人批准后继续执行自动化的后续步骤。批准通知包含 Amazon EMR 日志上的 Amazon Athena 扫描的估计费用，以及有关自动配置的资源的详细信息。
   + **uploadKnownIssuesExecuteAthenaQueries:**

     将预定义的已知问题上传到`S3BucketName`参数中指定的 Amazon S3 存储桶。创建 AWS Glue 数据库和表。根据输入参数在数据库 AWS Glue 中执行 Amazon Athena 查询。
   + **getQueryExecution状态：**

     一直等待，直到 Amazon Athena 查询执行处于状态。`SUCCEEDED`Amazon Athena DML 查询在亚马逊 EMR 集群日志中搜索错误和异常。
   + **analyzeAthenaResults:**

     分析 Amazon Athena 结果，提供来自一组预定义映射的调查结果、建议和知识中心 (KC) 文章。
   + **getAnalyzeResults查询 1：ExecutionStatus**

     等待，直到查询执行处于`SUCCEEDED`状态。Amazon Athena DML 查询分析了之前的 DML 查询的结果。此分析查询将返回匹配的异常以及解决方案和 KC 文章
   + **getAnalyzeResultsQuery2：ExecutionStatus**

     等待，直到查询执行处于`SUCCEEDED`状态。Amazon Athena DML 查询分析了之前的 DML 查询的结果。此分析查询将返回在每个 Amazon S3 日志路径中 exceptions/errors 检测到的列表。
   + **printAthenaQueries消息:**

     打印亚马逊 Athena DML 查询结果的链接。
   + **CleanupResources：**

     通过删除已创建的 AWS Glue 数据库来清理资源，并删除在 Amazon EMR 日志存储桶中创建的已知问题文件。

1. 完成后，请查看 “输出” 部分，了解执行的详细结果：

   **输出提供了 Athena 查询结果的三个链接：**
   + 列出在 Amazon EMR 集群日志中发现的所有错误和经常发生的异常以及相应的日志位置（Amazon S3 前缀）。
   + Amazon EMR 日志中匹配的唯一已知异常摘要，以及建议的解决方案和 KC 文章，以帮助进行故障排除。
   + 有关特定错误和异常在 Amazon S3 日志路径中出现位置的详细信息，以支持进一步诊断。  
![\[Output section showing query links for exception summaries and analysis in AWS logs.\]](http://docs.aws.amazon.com/zh_cn/systems-manager-automation-runbooks/latest/userguide/images/awssupport-diagnose-emr-logs-with-athena_outputs.png)

 **参考** 

Systems Manager Automation
+ [运行此自动化（控制台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-DiagnoseEMRLogsWithAthena/description)
+ [运行自动化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [设置自动化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支持自动化工作流登录页面](https://aws.amazon.com/premiumsupport/technology/saw/)

AWS 服务文档
+ 有关更多信息，请参阅 [Amazon EMR 集群故障排除](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-troubleshoot.html)