ログの保存 - Amazon EMR

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

ログの保存

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

CloudWatch では、使用するログタイプとログの場所を指定するか、デフォルトのタイプと場所を受け入れます。CloudWatch Logs の詳細については、「」を参照してください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 Serverless コンソールから Spark-UI にアクセスすることはできません。

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

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

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

EMR Serverless アプリケーションが Amazon S3 の VPC エンドポイントを持つプライベートサブネットにあり、アクセスを制御するエンドポイントポリシーをアタッチする場合は、EMR Serverless がアプリケーションログを保存して処理するための次のアクセス許可を追加します。を、Amazon S3 にアクセスするプライベートサブネットのサンプルポリシーの使用可能なリージョンテーブルのAppInfoバケットResourceに置き換えます。 Amazon S3

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EMRServerlessManagedLogging", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::prod.us-east-1.appinfo.src", "arn:aws:s3:::prod.us-east-1.appinfo.src/*" ], "Condition": { "StringEquals": { "aws:PrincipalServiceName": "emr-serverless.amazonaws.com", "aws:SourceVpc": "vpc-12345678" } } } ] }

さらに、 aws:SourceVpc条件キーを使用して、リクエストが VPC エンドポイントがアタッチされている VPC を通過することを確認します。

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

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

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

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

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

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

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

Spark ドライバーログは、EMR Serverless によって次のパスに保存されます。

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

Spark エグゼキュターログは、EMR Serverless によって次のパスに保存されます。

'/applications/<applicationId>/jobs/<jobId>/SPARK_EXECUTOR/<EXECUTOR-ID>'

<EXECUTOR-ID> は整数です。

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 CloudWatch CLI テールコマンドを使用して、ログにリアルタイムでアクセスできます。

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

注記

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

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

ジョブが Amazon CloudWatch にログデータを送信する前に、ジョブランタイムロールのアクセス許可ポリシーに次のアクセス許可を含めます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:*:123456789012:*" ], "Sid": "AllowLOGSDescribeloggroups" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:123456789012:log-group:my-log-group-name:*" ], "Sid": "AllowLOGSPutlogevents" } ] }

AWS CLI

から EMR Serverless のログを保存するように Amazon CloudWatch を設定するには AWS CLI、ジョブ実行を開始するときに 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"]