

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

# `AWSSupport-AnalyzeEMRLogs`
<a name="automation-awssupport-analyzeemrlogs"></a>

 **説明** 

このランブックは、Amazon EMR クラスターでジョブを実行しているときのエラーを特定するのに役立ちます。このランブックは、ファイルシステム上の定義済みログのリストを分析し、定義済みのキーワードのリストを探します。これらのログエントリは Amazon CloudWatch Events イベントの作成に使用されるため、イベントに基づいて必要なアクションを実行できます。オプションで、ランブックは、選択した Amazon CloudWatch Logs ロググループにログエントリを公開します。このランブックは現在、ログファイル内の以下のエラーとパターンを検索しています。
+  container\_out\_of\_memory – YARN コンテナがメモリ不足になったため、実行中のジョブが失敗する可能性があります。
+  yarn\_nodemanager\_health: コアノードまたはタスクノードのディスク容量が少なくなっているため、タスクを実行できなくなります。
+  node\_state\_change: マスターノードはコアノードまたはタスクノードにアクセスできません。
+  step\_failure: EMR ステップが失敗しました。
+  no\_core\_nodes\_running: 現在実行中の CORE ノードはありません。クラスターは異常です。
+  hdfs\_missing\_blocks: HDFS ブロックが不足しているため、データが失われる可能性があります。
+  hdfs\_high\_util: HDFS の使用率が高いため、ジョブやクラスターの状態に影響する可能性があります。
+  instance\_controller\_restart: インスタンスコントローラープロセスが再起動しました。このプロセスはクラスターの健全性にとって不可欠です。
+  instance\_controller\_restart\_legacy: インスタンスコントローラープロセスが再起動しました。このプロセスはクラスターの健全性にとって不可欠です。
+  high\_load: 高い負荷平均が検出されました。ノードのヘルスレポートに影響を与えたり、タイムアウトや速度低下の原因になる場合があります。
+  yarn\_node\_blacklisted: コアノードまたはタスクノードが YARN によって実行中のタスクからブラックリストに登録されました。
+  yarn\_node\_lost: コアノードまたはタスクノードが YARN によって LOST とマークされました。接続に問題がある可能性があります。

 指定した `ClusterID` に関連するインスタンスは、 AWS Systems Managerで管理する必要があります。この自動化は 1 回実行することも、特定の時間間隔で実行するようにスケジュールすることも、自動化によって以前に作成されたスケジュールを削除することもできます。このランブックは、Amazon EMR リリースバージョン 5.20 ～ 6.30 をサポートします。

 [このオートメーションを実行する (コンソール)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-AnalyzeEMRLogs) 

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

オートメーション

**[所有者]**

Amazon

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

Linux、macOS、Windows

**パラメータ**
+ AutomationAssumeRole

  タイプ: 文字列

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

  タイプ: 文字列

  説明: (必須) 分析するノードログを持つクラスターの ID。
+ 運用

  タイプ: 文字列

  有効な値: 1 回実行 \| スケジュール \| スケジュール削除 

  説明: (必須) クラスターで実行する操作。
+ IntervalTime

  タイプ: 文字列

  有効な値: 5 分 \| 10 分 \| 15 分

   説明: (オプション) オートメーションを実行する間の期間。このパラメータは、`Operation` パラメータの `Schedule` を指定した場合にのみ適用されます。
+ LogToCloudWatchLogs

  タイプ: 文字列

  有効な値: はい \| いいえ

   説明: (オプション) このパラメータの値を `yes` に指定すると、自動化は `CloudWatchLogGroup` パラメータで指定された名前で CloudWatch Logs ロググループを作成し、一致するログエントリを保存します。
+ CloudwatchLogGroup

  タイプ: 文字列

   説明: (オプション) 一致するログエントリを保存する CloudWatch Logs ロググループの名前。このパラメータは、`LogToCloudWatchLogs` パラメータの `yes` を指定した場合にのみ適用されます。
+ CreateLogInsightsDashboard

  タイプ: 文字列

  有効な値: はい \| いいえ

   説明: (オプション) `yes` に指定すると、CloudWatch ダッシュボードがまだ存在していない場合は CloudWatch ダッシュボードが作成されます。このパラメータは、`LogToCloudWatchLogs` パラメータの `yes` を指定した場合にのみ適用されます。
+ CreateMetricFilters

  タイプ: 文字列

  有効な値: はい \| いいえ

   説明: (オプション) CloudWatch Logs ロググループのメトリクスフィルタを作成するかどうかについて `yes` を指定します。このパラメータは、`LogToCloudWatchLogs` パラメータの `yes` を指定した場合にのみ適用されます。

**必要な IAM アクセス許可**

`AutomationAssumeRole` パラメータでは、ランブックを正常に使用するために、次のアクションが必要です。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetDocument` 
+  `ssm:ListDocuments` 
+  `ssm:DescribeAutomationExecutions` 
+  `ssm:DescribeAutomationStepExecutions` 
+  `ssm:GetAutomationExecution` 
+  `ssm:DescribeInstanceInformation` 
+  `ssm:ListCommandInvocations` 
+  `ssm:ListCommands` 
+  `ssm:SendCommand` 
+  `iam:CreateRole` 
+  `iam:DeleteRole` 
+  `iam:GetRolePolicy` 
+  `iam:PutRolePolicy` 
+  `iam:DeleteRolePolicy` 
+  `iam:passrole` 
+  `cloudformation:DescribeStacks` 
+  `cloudformation:DeleteStack` 
+  `cloudformation:CreateStack` 
+  `events:DeleteRule` 
+  `events:RemoveTargets` 
+  `events:PutTargets` 
+  `events:PutRule` 
+  `events:DescribeRule` 
+  `logs:DescribeLogGroups` 
+  `logs:CreateLogGroup` 
+  `logs:PutMetricFilter` 
+  `cloudwatch:PutDashboard` 
+  `elasticmapreduce:ListInstances` 
+  `elasticmapreduce:DescribeCluster` 

 **ドキュメントステップ** 
+  `aws:executeAwsApi` - `ClusterID` パラメータで指定された Amazon EMR クラスターに関する情報を収集します。
+  `aws:branch` - 入力に基づいて分岐させます。
  +  指定した操作が `Run Once` または `Schedule` の場合: 
    +  `aws:assertAwsResourceProperty` - クラスターが使用可能であることを確認します。
    +  `aws:executeAwsApi` - クラスター内で実行されているすべてのインスタンスの ID を収集します。
    +  `aws:assertAwsResourceProperty` - SSM Agent がクラスター内のすべてのインスタンスで実行されていることを確認します。
    +  `aws:branch` - 自動化を 1 回実行するように指定したか、スケジュールに従って実行するように指定したかに基づいて分岐させます。
      +  指定した操作が `Run Once` の場合: 
        +  `aws:branch` - `LogToCloudWatchLogs` パラメータで指定した値に基づいて分岐させます。
          +  `LogToCloudWatchLogs` 値が `yes` の場合: 
            +  `aws:executeScript` - パラメータ `CloudWatchLogGroup` で指定された名前の CloudWatch Logs ロググループが既に存在するかどうかを確認します。存在しない場合、グループは指定された名前で作成されます。
            +  `aws:branch` - `CreateMetricFilters` パラメータで指定した値に基づいて分岐させます。
              +  `CreateMetricFilters` 値が `yes` の場合: 
                +  `aws:executeAwsApi` - メトリクスフィルターごとに 12 ステップが実行されます。
                +  `aws:branch` - `CreateLogInsightsDashboard` パラメータで指定した値に基づいて分岐させます。
                  +  `CreateLogInsightsDashboard` 値が `yes` の場合: 
                    +  `aws:executeAwsApi` - `CloudWatchLogGroup` パラメータで指定されたものと同じ名前で CloudWatch ダッシュボードを作成します (まだ存在しない場合)。
                  +  `CreateLogInsightsDashboard` 値が `no` の場合: 
                    +  `aws:runCommand` - シェルスクリプトを実行して、クラスター内の各インスタンスのログパターンを検索します。
              +  `CreateMetricFilters` 値が `no` の場合: 
                +  `aws:branch` - `CreateLogInsightsDashboard` パラメータで指定した値に基づいて分岐させます。
                  +  `CreateLogInsightsDashboard` 値が `yes` の場合: 
                    +  `aws:executeAwsApi` - `CloudWatchLogGroup` パラメータで指定されたものと同じ名前で CloudWatch ダッシュボードを作成します (まだ存在しない場合)。
                  +  `CreateLogInsightsDashboard` 値が `no` の場合: 
                    +  `aws:runCommand` - シェルスクリプトを実行して、クラスター内の各インスタンスのログパターンを検索します。
          +  `LogToCloudWatchLogs` 値が `no` の場合: 
            +  `aws:executeAwsApi` - シェルスクリプトを実行して、クラスター内の各インスタンスのログパターンを検索します。
      +  指定した操作が `Schedule` の場合: 
        +  `aws:createStack` - このランブックをターゲットとする Amazon EventBridge イベントを作成します。
  +  指定した操作が `Remove Schedule` の場合: 
    +  `aws:executeAwsApi` - クラスターのスケジュールが存在することを確認します。
    +  `aws:deleteStack` - スケジュールを削除します。

 **[出力] ** 

GetClusterInformation.ClusterName

GetClusterInformation.ClusterState

ListingClusterInstances.InstanceIDs

CreatingScheduleCloudFormationStack.StackStatus

RemovingScheduleByDeletingScheduleCloudFormationStack.StackStatus

CheckIfLogGroupExists.output

FindLogPatternOnEMRNode.CommandId