AWSSupport-DiagnoseEMRLogsWithAthena - AWS Systems Manager オートメーションランブックリファレンス

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

AWSSupport-DiagnoseEMRLogsWithAthena

説明

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

ランブックは、既存のクラスターの Amazon EMRログの場所を自動的に取得することも、Amazon S3 ログの場所を指定することもできます。ログを分析するために、ランブックは次の操作を行います。

  • AWS Glue データベースを作成し、Amazon S3 ログの場所に対して Amazon Athena データ定義言語 (DDL) クエリを実行して、クラスターログのテーブルと既知の問題のリストを作成します。 EMR Amazon S3

  • データ操作言語 (DML) クエリを実行して、Amazon EMRログ内の既知の問題パターンを検索します。クエリは、検出された問題のリスト、その発生数、および Amazon S3 ファイルパスで一致したキーワードの数を返します。

  • 結果は、プレフィックス で指定した Amazon S3 バケットにアップロードされますsaw_diagnose_EMR_known_issues

  • ランブックはAmazon Athena クエリ結果を返します。この結果では、定義済みのサブセットから取得した Amazon ナレッジセンター (KC) の記事に対する結果、推奨事項、参照が強調表示されます。

  • 完了または失敗すると、Amazon S3 バケットにアップロードされた AWS Glue データベースと既知の問題ファイルが削除されます。

動作の仕組み

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

ランブックは次のステップを実行します。

  • EMR クラスター ID を使用して Amazon クラスターログの場所を取得するか、Amazon S3 の場所を入力してログの場所とサイズを取得します。

  • ログの場所サイズに基づいて Athena のコストの見積もりを提供します。

  • Athena クエリを実行し、次のステップに進む前に、指定されたIAMプリンシパルに承認をリクエストして、続行の承認を取得します。

  • 指定された Amazon S3 バケットに既知の問題をアップロードし、 AWS Glue データベースとテーブルを作成します。

  • Amazon EMRログデータに対して Athena クエリを実行します。クエリは、日付範囲、キーワード、両方の基準で検索することも、提供された入力に基づいてフィルターなしで実行することもできます。

  • 結果を分析して、結果、レコメンデーション、関連する KC 記事を強調表示します。

  • Amazon Athena DMLクエリ結果の出力リンク。

  • 作成したデータベース、テーブル、アップロードされた既知の問題を削除して、環境をクリーンアップします。

ドキュメントタイプ

Automation

[所有者]

Amazon

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

/

ランブックを正常に使用するには、 AutomationAssumeRole パラメータに次のアクションが必要です。

  • athena:GetQueryExecution

  • athena:StartQueryExecution

  • athena:GetPreparedStatement

  • athena:CreatePreparedStatement

  • グルー:GetDatabase

  • Glue:CreateDatabase

  • Glue:DeleteDatabase

  • グルー: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ロールに次のポリシーをアタッチします。パーティション、リージョン、アカウントを、実行ブックが実行されるパーティション、リージョン、およびアカウント番号の適切な値に置き換えます。

{ "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" ] } ] }

Instructions

次の手順に従って自動化を設定します。

  1. ドキュメントの AWS Systems Manager 下にある の AWSSupport-DiagnoseEMRLogsWithAthena に移動します。

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

  3. 次の入力パラメータを入力します。

    • AutomationAssumeRole (オプション):

      Systems Manager Automation がユーザーに代わってアクションを実行できるようにする () ロールARNの Amazon リソースネーム AWS Identity and Access Management (IAM)。ロールを指定しない場合、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 クエリの出力。バケットでは、パブリックアクセスブロックが有効で、Amazon EMRクラスターと同じ AWS リージョンとアカウントにある必要があります。

    • 承認者 (必須):

      アクションを承認または拒否できる AWS 認証済みプリンシパルのリスト。プリンシパルは、ユーザー名、ユーザー 、IAMロール ARN、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 (オプション):

      ログで検索するキーワードのリスト。カンマで区切られます。キーワードに一重引用符または二重引用符を含めることはできません。

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

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

  6. ドキュメントは以下のステップを実行します。

    • getLogLocation:

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

    • branchOnValidログ:

      Amazon EMRログの場所を確認します。ロケーションが有効な場合は、Amazon ログでクエリを実行する際の Amazon Athena の潜在的なコストを見積もってください。 EMR

    • estimateAthenaCosts:

      Amazon EMRログのサイズを決定し、ログデータセットで Athena スキャンを実行するためのコスト見積もりを提供します。非商用リージョン (AWS 非パーティション) の場合、このステップではコストを見積もることなくログサイズを提供するだけです。コストは、指定したリージョンの Athena 料金ドキュメントを使用して計算できます。

    • approveAutomation:

      指定されたIAMプリンシパルの承認がオートメーションの次のステップに進むのを待ちます。承認通知には、Amazon ログに対する Amazon Athena スキャンの推定コストと、自動化によってプロビジョニングされるリソースの詳細が含まれます。 EMR

    • uploadKnownIssuesExecuteAthenaQueries:

      S3BucketName パラメータで指定された Amazon S3 バケットに、事前定義された既知の問題をアップロードします。 AWS Glue データベースとテーブルを作成します。入力パラメータに基づいて AWS Glue データベースで Amazon Athena クエリを実行します。

    • getQueryExecutionステータス:

      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 ログパスで検出された例外/エラーのリストを返します。

    • printAthenaQueriesメッセージ:

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

    • cleanupResources:

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

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

    出力には、Athena クエリ結果の 3 つのリンクがあります。

    • Amazon EMRクラスターログで見つかったすべてのエラーと頻繁に発生する例外と、対応するログの場所 (Amazon S3 プレフィックス) のリスト。

    • Amazon EMRログで一致した一意の既知の例外の概要と、トラブルシューティングに役立つ推奨解決策と KC 記事。

    • 詳細な診断をサポートするために、Amazon S3 ログパスに特定のエラーと例外が表示される場所の詳細。

リファレンス

Systems Manager Automation

AWS サービスドキュメント