ログの保存 - Amazon EMR

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

ログの保存

EMR Serverless でのジョブの進行状況をモニタリングし、ジョブの失敗をトラブルシューティングするには、EMR Serverless がアプリケーションログを保存して処理する方法を選択します。ジョブ実行を送信する際に、ログ記録オプションとしてマネージドストレージ、Amazon S3、Amazon CloudWatch を指定できます。

CloudWatch では、使用するログタイプとログの場所を指定するか、デフォルトのタイプと場所を受け入れることができます。CloudWatch のログの詳細については、「Amazon CloudWatch を使用した EMR Serverless のログ記録」を参照してください。マネージドストレージと S3 のログ記録について、次の表にマネージドストレージAmazon S3 バケット、または両方を選択した場合に想定されるログの場所と UI の可用性を示します。

オプション イベントログ コンテナログ アプリケーション UI

マネージドストレージ

マネージドストレージに保存

マネージドストレージに保存

サポート

マネージドストレージと S3 バケットの両方

両方の場所に保存

S3 バケットに保存

サポート

Amazon S3 バケット

S3 バケットに保存

S3 バケットに保存

サポート外1

1 マネージドストレージオプションを選択したままにすることをお勧めします。それ以外の場合は、組み込みのアプリケーション UI を使用できません。

マネージドストレージを使用した EMR Serverless のログ記録

デフォルトでは、EMR Serverless はアプリケーションログを Amazon EMR マネージドストレージに最大 30 日間安全に保存します。

注記

デフォルトのオプションをオフにすると、Amazon EMR はユーザーに代わってジョブのトラブルシューティングを行うことができません。

EMR Studio からこのオプションをオフにするには、ジョブの送信ページの [追加設定] セクションの [AWS がログを 30 日間保持することを許可] チェックボックスをオフにします。

AWS CLI からこのオプションをオフにするには、ジョブ実行を送信するときに managedPersistenceMonitoringConfiguration 設定を使用します。

{ "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { "enabled": false } } }

Amazon S3 バケットを使用した EMR Serverless のログ記録

ジョブが Amazon S3 にログデータを送信できるようにするには、ジョブのランタイムロールのアクセス許可ポリシーに次のアクセス許可を設定する必要があります。amzn-s3-demo-logging-bucket をログ記録バケットの名前に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-logging-bucket/*" ] } ] }

AWS CLI のログを保存する Amazon S3 バケットを設定するには、ジョブの実行を開始する際に s3MonitoringConfiguration 設定を使用します。これを行うには、設定で以下の --configuration-overrides を指定します。

{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket/logs/" } } }

再試行が有効になっていないバッチジョブの場合、EMR Serverless はログを次のパスに送信します。

'/applications/<applicationId>/jobs/<jobId>'

EMR Serverless リリース 7.1.0 以降では、ストリーミングジョブとバッチジョブの再試行がサポートされています。再試行を有効にしてジョブを実行すると、EMR Serverless はログパスプレフィックスに試行番号を自動的に追加するため、ログをより適切に区別して追跡できます。

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'

Amazon CloudWatch を使用した EMR Serverless のログ記録

EMR Serverless アプリケーションにジョブを送信する場合は、アプリケーションログを保存するためのオプションとして Amazon CloudWatch を選択できます。これにより、CloudWatch Logs Insights や Live Tail などの CloudWatch ログ分析機能を使用できます。CloudWatch から OpenSearch などの他のシステムにログをストリーミングして、詳細に分析することもできます。

EMR Serverless は、ドライバーログのリアルタイムログ記録を可能にします。CloudWatch ライブテール機能、または CloudWatch CLI テールコマンドを使用して、ログをリアルタイムで表示できます。

デフォルトでは、EMR Serverless の CloudWatch ログ記録は無効になっています。有効にするには、AWS CLI の設定を参照してください。

注記

Amazon CloudWatch はログをリアルタイムで発行するため、ワーカーのより多くのリソースが消費されます。ワーカーの容量に対して小さな値を選択すると、ジョブの実行時間への影響が増加する可能性があります。CloudWatch のログ記録を有効にする場合は、より大きなワーカー容量の値を選択することをお勧めします。また、PutLogEvents の 1 秒あたりのトランザクション (TPS) レートが過剰に低い場合は、ログ発行がスロットリングする可能性があります。CloudWatch のスロットリング設定は、EMR Serverless を含むすべてのサービスに対してグローバルです。詳細については、AWS re:post の「How do I determine throttling in my CloudWatch logs?」を参照してください。

CloudWatch でのログ記録に必要なアクセス許可

ジョブが Amazon CloudWatch にログデータを送信できるようにするには、ジョブランタイムロールのアクセス許可ポリシーに次のアクセス許可を設定する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:AWS リージョン:111122223333:*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:AWS リージョン:111122223333:log-group:my-log-group-name:*" ] } ] }

AWS CLI

AWS CLI から EMR Serverless のログを保存するように Amazon CloudWatch を設定するには、ジョブの実行を開始するときに cloudWatchLoggingConfiguration 設定を使用します。これを行うには、次の設定のオーバーライドを指定します。必要に応じて、ロググループ名、ログストリームプレフィックス名、ログタイプ、および暗号化キー ARN を指定することもできます。

オプションの値を指定しない場合、CloudWatch はデフォルトのログストリーム /applications/applicationId/jobs/jobId/worker-type を使用して、デフォルトのロググループ /aws/emr-serverless にログを発行します。

EMR Serverless リリース 7.1.0 以降では、ストリーミングジョブとバッチジョブの再試行がサポートされています。ジョブの再試行を有効にした場合、EMR Serverless はログパスプレフィックスに試行番号を自動的に追加するため、ログをより適切に区別して追跡できます。

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/worker-type'

以下では、EMR Serverless のデフォルト設定で Amazon CloudWatch ログ記録を有効にするために必要な最小設定を示します。

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true } } }

次の例は、EMR Serverless の Amazon CloudWatch ログ記録を有効にする際に指定できる必須およびオプションのすべての設定を示しています。サポートされている logTypes 値もこの例の下に示されています。

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true, // Required "logGroupName": "Example_logGroup", // Optional "logStreamNamePrefix": "Example_logStream", // Optional "encryptionKeyArn": "key-arn", // Optional "logTypes": { "SPARK_DRIVER": ["stdout", "stderr"] //List of values } } } }

デフォルトでは、EMR Serverless はドライバーの stdout と stderr ログのみを CloudWatch に発行します。他のログが必要な場合は、logTypes フィールドでコンテナロールと対応するログタイプを指定できます。

次のリストは、logTypes 設定で指定できるサポートされているワーカータイプを示しています。

Spark
  • SPARK_DRIVER : ["STDERR", "STDOUT"]

  • SPARK_EXECUTOR : ["STDERR", "STDOUT"]

[Hive]
  • HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]

  • TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]