

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

**説明** 

`AWSSupport-DiagnoseEMRLogsWithAthena` ランブックは、 AWS Glue Data Catalog との統合で Amazon Athena を使用して Amazon EMR ログを診断するのに役立ちます。Amazon Athena は、コンテナ、ノードログ、またはその両方について Amazon EMR ログファイルをクエリするために使用されます。特定の日付範囲またはキーワードベースの検索のオプションパラメータを使用します。

ランブックは、既存のクラスターの Amazon EMR ログの場所を自動的に取得することも、Amazon S3 ログの場所を指定することもできます。ログを分析するために、ランブックは次の操作を行います。
+  AWS Glue データベースを作成し、Amazon EMR Amazon S3 ログの場所に対して Amazon Athena データ定義言語 (DDL) クエリを実行して、クラスターログのテーブルと既知の問題のリストを作成します。 Amazon S3 
+ データ操作言語 (DML) クエリを実行して、Amazon EMR ログ内の既知の問題パターンを検索します。クエリは、検出された問題のリスト、その発生数、および Amazon S3 ファイルパスで一致したキーワードの数を返します。
+ 結果は、プレフィックス で指定した Amazon S3 バケットにアップロードされます`saw_diagnose_EMR_known_issues`。
+ ランブックは Amazon Athena クエリ結果を返します。結果、推奨事項、および事前定義されたサブセットから取得した Amazon Knowledge Center (KC) 記事への参照が強調表示されます。
+  完了または失敗すると、 AWS Glue データベースと Amazon S3 バケットにアップロードされた既知の問題ファイルは削除されます。

 **動作の仕組み** 

 は、Amazon Athena を使用して Amazon EMR ログの分析`AWSSupport-DiagnoseEMRLogsWithAthena`を実行し、エラーを検出し、検出結果、推奨事項、関連するナレッジセンターの記事を強調します。

ランブックは次のステップを実行します。
+ クラスター ID を使用して Amazon EMR クラスターログの場所を取得するか、Amazon S3 の場所を入力してログの場所とサイズを取得します。
+ ログの場所サイズに基づいて Athena のコスト見積もりを提供します。
+ Athena クエリを実行し、次のステップに進む前に、指定された IAM プリンシパルの承認をリクエストして、続行するための承認を取得します。
+ 指定された Amazon S3 バケットに既知の問題をアップロードし、 AWS Glue データベースとテーブルを作成します。
+ Amazon EMR ログデータに対して Athena クエリを実行します。クエリは、日付範囲、キーワード、両方の基準で検索することも、提供された入力に基づいてフィルターなしで実行することもできます。
+ 結果を分析して、結果、推奨事項、関連する KC 記事を強調表示します。
+ Amazon Athena DML クエリ結果の出力リンク。
+ 作成したデータベース、テーブル、アップロードされた既知の問題を削除して、環境をクリーンアップします。

**ドキュメントタイプ**

オートメーション

**[所有者]**

Amazon

**[Platforms]** (プラットフォーム)

/

AutomationAssumeRole パラメータでは、ランブックを正常に使用するために次のアクションが必要です。
+ athena:GetQueryExecution
+ athena:StartQueryExecution
+ athena:GetPreparedStatement
+ athena:CreatePreparedStatement
+ glue:GetDatabase
+ glue:CreateDatabase
+ glue:DeleteDatabase
+ glue:CreateTable
+ glue:GetTable
+ glue:DeleteTable 
+ elasticmapreduce: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. 「 ドキュメント AWS Systems Manager 」の[AWSSupport-DiagnoseEMRLogsWithAthena](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-DiagnoseEMRLogsWithAthena/description)」に移動します。

1. [Execute automation] (オートメーションを実行) を選択します。

1. 次の入力パラメータを入力します。
   + **AutomationAssumeRole（オプション):**

     Systems Manager Automation がユーザーに代わってアクションを実行できるようにする AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (ARN)。ロールを指定しない場合、Systems Manager Automation はこのランブックを開始するユーザーのアクセス許可を使用します。
   + **ClusterID (必須):**

     Amazon EMR クラスター ID。
   + **S3LogLocation (オプション):**

     Amazon S3 Amazon 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 (オプション):**

      ログで検索するキーワードのリスト。カンマで区切られています。キーワードに一重引用符または二重引用符を含めることはできません。  
![入力パラメータフォームには、自動化ロール、S3 の場所、承認者、および クラスター 設定のフィールドがあります。](http://docs.aws.amazon.com/ja_jp/systems-manager-automation-runbooks/latest/userguide/images/awssupport-diagnose-emr-logs-with-athena_input_parameters.png)

1. **[実行]** を選択します。

1. 自動化が開始されます。

1. ドキュメントは以下のステップを実行します。
   + **getLogLocation:**

     指定された Amazon S3 ログの場所を取得します。オートメーションが Amazon EMR クラスター ID からログの場所をクエリできない場合、ランブックは`S3LogLocation`入力パラメータを使用します。
   + **branchOnValidLog:**

     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 クエリを実行します。
   + **getQueryExecutionStatus:**

     Amazon Athena クエリの実行が `SUCCEEDED`状態になるまで待ちます。Amazon Athena DML クエリは、Amazon EMR クラスターログのエラーと例外を検索します。
   + **analyzeAthenaResults:**

     Amazon Athena の結果を分析し、事前定義されたマッピングセットから取得した検出結果、推奨事項、ナレッジセンター (KC) の記事を提供します。
   + **getAnalyzeResultsQuery1ExecutionStatus:**

     クエリの実行が `SUCCEEDED`状態になるまで待ちます。Amazon Athena DML クエリは、前の DML クエリの結果を分析します。この分析クエリは、解決と KC 記事で一致した例外を返します
   + **getAnalyzeResultsQuery2ExecutionStatus:**

     クエリの実行が `SUCCEEDED`状態になるまで待ちます。Amazon Athena DML クエリは、前の DML クエリの結果を分析します。この分析クエリは、各 Amazon S3 ログパスで検出された例外/エラーのリストを返します。
   + **printAthenaQueriesMessage:**

     Amazon Athena DML クエリ結果のリンクを出力します。
   + **cleanupResources:**

     作成した AWS Glue データベースを削除してリソースをクリーンアップし、Amazon EMR ログバケットで作成された既知の問題ファイルを削除します。

1. 完了したら、出力セクションで実行の詳細な結果を確認します。

   **出力には、Athena クエリ結果の 3 つのリンクがあります。**
   + Amazon EMR クラスターログで見つかったすべてのエラーと頻繁に発生する例外と、対応するログの場所 (Amazon S3 プレフィックス) のリスト。
   + Amazon EMR ログで一致した一意の既知の例外の概要と、トラブルシューティングに役立つ推奨される解決策と KC 記事。
   + 詳細な診断をサポートするために、Amazon S3 ログパスに特定のエラーと例外が表示される場所に関する詳細。  
![Athena ログ分析の説明を含む 3 つのクエリリンクを示す出力セクション。](http://docs.aws.amazon.com/ja_jp/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)」を参照してください。