

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

# Amazon EMR ログを CloudWatch Logs に発行する
<a name="emr-plan-logging-cw"></a>

## 概要
<a name="emr-plan-logging-cw-overview"></a>

Amazon EMR on EC2 は Amazon CloudWatch Logs とのネイティブ統合を提供するため、クラスターログを CloudWatch に直接送信できます。この機能により、ログ管理が簡素化され、モニタリング、トラブルシューティング、分析のために EMR クラスターログへの一元化されたアクセスが提供されます。

CloudWatch ログ記録を有効にすると、EMR クラスターから CloudWatch ロググループに自動的にログをキャプチャしてストリーミングできます。これには、ステップ実行ログ、Spark ドライバーログ、Spark エグゼキュターログが含まれ、クラスターオペレーションとアプリケーション動作を包括的に可視化できます。

CloudWatch ログ記録機能は、Amazon EMR リリース 7.11.0 以降で使用でき、クラスターの作成時に `MonitoringConfiguration`パラメータを使用して設定されます。有効にすると、ログは生成されたときに CloudWatch に自動的にストリーミングされ、CloudWatch コンソールまたは API を介してログデータにほぼリアルタイムでアクセスできます。

## 前提条件
<a name="emr-plan-logging-cw-prerequisites"></a>

EMR クラスターの CloudWatch ログ記録を有効にする前に、次の前提条件を満たしていることを確認してください。
+ **Amazon EMR リリース:** クラスターは Amazon EMR リリース 7.11.0 以降を使用する必要があります。
+ **CloudWatch エージェントアプリケーション:** Amazon CloudWatch エージェントはクラスターにインストールする必要があります。
+ **IAM アクセス許可:** クラスターの EC2 インスタンスプロファイルには、必要な CloudWatch Logs アクセス許可が必要です。
+ **VPC エンドポイント (プライベートサブネットの場合):** クラスターがプライベートサブネットにある場合は、CloudWatch Logs の VPC エンドポイントを設定する必要があります。

## アクセス許可
<a name="emr-plan-logging-cw-permissions"></a>

CloudWatch エージェントには、ロググループの作成、ログストリームの作成、CloudWatch Logs へのログイベントの書き込みに特定の AWS Identity and Access Management(IAM) アクセス許可が必要です。これらのアクセス許可は、EMR クラスターで使用される Amazon EC2 インスタンスプロファイルにアタッチする必要があります。

### 必要な IAM ポリシー
<a name="emr-plan-logging-cw-required-policy"></a>

[Amazon EMR の EC2 インスタンスプロファイル](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html)に次のポリシーを追加して、必要なアクセス許可を付与します。

```
{
  "Version": "2012-10-17", 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:PutLogEvents",
        "logs:PutRetentionPolicy",
        "logs:DescribeLogStreams",
        "logs:DescribeLogGroups",
        "logs:CreateLogStream",
        "logs:CreateLogGroup"
      ],
      "Resource": "*",
      "Sid": "AllowCWACloudWatchLogs"
    }
  ]
}
```

### ポリシーのアタッチ
<a name="emr-plan-logging-cw-permissions-attaching"></a>

このポリシーを EMR の EC2 インスタンスプロファイルにアタッチするには:

1. [IAM console] (IAM コンソール) に入ります。

1. EMR クラスターで使用されるインスタンスプロファイルを見つけます。通常は です`EMR_EC2_DefaultRole`。

1. 新しいインラインポリシーを作成するか、上記のアクセス許可を持つカスタマー管理ポリシーをアタッチします。

1. ポリシーの変更を保存します。

Amazon EMR の IAM ロールの詳細については、「Amazon [EMR 管理ガイド」の「Configure IAM roles for Amazon EMR permissions to AWS services and resources](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html)」を参照してください。

## CloudWatch ログ記録の設定
<a name="emr-plan-logging-cw-config"></a>

新しい EMR クラスターの作成時に CloudWatch ログ記録を有効にするには、 AWS マネジメントコンソール AWS CLI、、または AWS SDKsを使用します。設定は `MonitoringConfiguration`パラメータで指定します。

### AWS マネジメントコンソールの使用
<a name="emr-plan-logging-cw-config-console"></a>

コンソールから CloudWatch ログ記録を使用してクラスターを作成するには:

1. [AWS EMR コンソール](https://console.aws.amazon.com/emr/)に移動します。

1. **[クラスターを作成]** を選択します。

1. **名前とアプリケーション**で、7.11.0 以降の Amazon EMR リリースを選択します。

1. **アプリケーションバンドル**で、インストールするアプリケーションを選択し、Amazon CloudWatch Agent が選択に含まれていることを確認します。

1. **クラスターログ**で、**クラスター固有のログを Amazon CloudWatch に発行する**オプションを選択します。

1. (オプション) 次の設定を行います。
   + **ロググループ名** - カスタムロググループ名。デフォルトは `/aws/emr/{cluster_id}` です。
   + **ログストリームプレフィックス** - ログストリーム名のプレフィックス デフォルトは です`empty`。
   + **CloudWatch KMS キー** - ログ暗号化用の KMS キー ARN (オプション）。
   + **ログタイプ** - キャプチャするログタイプを選択します (デフォルト: step および Spark ドライバー)

1. 残りのクラスター設定を完了します。

1. **[クラスターを作成]** を選択します。

クラスターを作成したら、クラスター管理 → Amazon CloudWatch の**ログ送信先**にある **EMR クラスターの詳細**ページから Amazon CloudWatch Logs リンクにアクセスできます。 ****

### の使用 AWS CLI
<a name="emr-plan-logging-cw-config-using-the-cli"></a>

`create-cluster` コマンド AWS CLI で を使用して CloudWatch ログ記録を有効にできます。CloudWatch エージェントは `--applications`パラメータに含める必要があり、ログ記録は `--monitoring-configuration`パラメータを使用して設定されます。

#### 例: デフォルト設定
<a name="emr-plan-logging-cw-config-default-configuration"></a>

EMR はステップログと Spark ドライバーログのみを自動的にキャプチャし、デフォルトのロググループに送信します。

```
aws emr create-cluster \
  --name "EMR cluster with CloudWatch Logs" \
  --release-label emr-7.11.0 \
  --applications Name=Spark Name=AmazonCloudWatchAgent \
  --instance-type m7g.2xlarge \
  --instance-count 3 \
  --use-default-roles \
  --monitoring-configuration '{
    "CloudWatchLogConfiguration": {
      "Enabled": true
    }
  }'
```

デフォルト設定を使用する場合:
+ **ロググループ名:** `/aws/emr/{cluster_id}` ( `{cluster_id}`は自動的にクラスター ID に置き換えられます）。
+ **ログストリームプレフィックス:** 空 (プレフィックスなし）。
+ **ログタイプ:** `STEP_LOGS`と `SPARK_DRIVER`が有効で、それぞれ `STDOUT`と の両方をキャプチャします`STDERR`。
+ **暗号化:** カスタマーマネージドキーなし (デフォルトでは CloudWatch サーバー側の暗号化を使用)

#### 例: カスタム設定
<a name="emr-plan-logging-cw-config-default-configuration-custom"></a>

この例では、特定のロググループ名、KMS 暗号化、および選択的ログタイプを使用したカスタム設定を示します。

```
aws emr create-cluster \
  --name "EMR cluster with custom CloudWatch Logs" \
  --release-label emr-7.11.0 \
  --applications Name=Spark Name=AmazonCloudWatchAgent \
  --instance-type m7g.2xlarge \
  --instance-count 3 \
  --use-default-roles \
  --monitoring-configuration '{
    "CloudWatchLogConfiguration": {
      "Enabled": true,
      "LogGroupName": "/my-company/emr/production",
      "LogStreamNamePrefix": "cluster-prod",
      "EncryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012",
      "LogTypes": {
        "STEP_LOGS": ["STDOUT", "STDERR"],
        "SPARK_DRIVER": ["STDOUT", "STDERR"],
        "SPARK_EXECUTOR": ["STDERR", "STDOUT"]
      }
    }
  }'
```

この設定では、次のようになります。
+ カスタムロググループ にログを作成します`/my-company/emr/production`。
+ すべてのログストリーム名の前に を付けます`cluster-prod`。
+ 指定された KMS キーを使用してログを暗号化します。
+ ステップログ、Spark ドライバーログ、Spark エグゼキュターログなど、すべてのログタイプをキャプチャします。

Amazon EMR AWS CLI で を使用する方法の詳細については、[AWS CLI 「EMR の コマンドリファレンス](https://docs.aws.amazon.com/cli/latest/reference/emr/)」を参照してください。

### 設定リファレンス
<a name="emr-plan-logging-cw-configuration-reference"></a>

#### CloudWatchLogConfiguration パラメータ
<a name="emr-plan-logging-cw-configuration-parameters"></a>

`CloudWatchLogConfigurationv` オブジェクトは、次のパラメータをサポートしています。


**CloudWatchLogConfiguration パラメータ**  

| パラメータ | タイプ | 必須 | 説明 | 
| --- | --- | --- | --- | 
| Enabled | ブール値 | はい | CloudWatch ログ記録を有効にするtrueには、 に設定します。を に設定falseして無効にします。 | 
| LogGroupName | String | いいえ | CloudWatch ロググループ名。デフォルト: /aws/emr/{cluster\_id} | 
| LogStreamNamePrefix | String | いいえ | ログストリーム名のプレフィックス。デフォルト: 空の文字列 | 
| EncryptionKeyArn | String | いいえ | ログ暗号化用の KMS キーの ARN。指定しない場合、ログは CloudWatch サーバー側の暗号化によって暗号化されます。 | 
| LogTypes | オブジェクト | いいえ | キャプチャするログタイプを指定します。デフォルト: STDOUT STEP\_LOGS および STDERR を持つ 型と SPARK\_DRIVER型。 | 

#### ログタイプ
<a name="emr-plan-logging-cw-configuration-log-types"></a>

Amazon EMR は 3 つのログタイプをサポートし、それぞれが標準出力と標準エラーストリームの両方をキャプチャします。


**サポートされているログタイプ**  

| ログのタイプ | 説明 | 使用可能なストリーム | 
| --- | --- | --- | 
| STEP\_LOGS | ステップコントローラーログを含む EMR ステップ実行ログ | STDOUT, STDERR | 
| SPARK\_DRIVER | Spark アプリケーションからの Apache Spark ドライバーログ | STDOUT, STDERR | 
| SPARK\_EXECUTOR | ワーカーノードからの Apache Spark エグゼキュターログ | STDOUT, STDERR | 

##### デフォルトのログタイプ設定
<a name="emr-plan-logging-cw-default-log-types"></a>

`LogTypes` パラメータを指定しない場合、EMR は次のデフォルト設定を使用します。

```
"LogTypes": {
  "STEP_LOGS": ["STDOUT", "STDERR"],
  "SPARK_DRIVER": ["STDOUT", "STDERR"]
}
```

##### カスタムログタイプの設定
<a name="emr-plan-logging-cw-default-log-types-configuration"></a>

`LogTypes` パラメータを明示的に指定することで、キャプチャするログタイプをカスタマイズできます。たとえば、ステップログのみをキャプチャするには:

```
"LogTypes": {
  "STEP_LOGS": ["STDOUT", "STDERR"]
}
```

または、Spark ドライバーから標準エラーのみをキャプチャします。

```
"LogTypes": {
  "SPARK_DRIVER": ["STDERR"]
}
```

#### ロググループとストリームの命名
<a name="emr-plan-logging-cw-log-group-and-stream-naming"></a>

CloudWatch は、ログをロググループとログストリームに整理します。
+ **ロググループ:** 同じ保持、モニタリング、アクセスコントロール設定を共有するログストリームのコレクション。
  + **デフォルト名:** `/aws/emr/{cluster_id}`
  + **カスタム名:** 指定した有効な CloudWatch ロググループ名。
+ **ログストリーム:** 単一のソースからの一連のログイベント。
  + 命名パターン:
    + **ステップログ:** `{prefix}/steps/{step_id}/{file_name}`。
    + **Spark ドライバーとエグゼキュターのログ:** `{prefix}/applications/{application_id}/{container_id}/{file_name}`
  + 例:
    + `/steps/s-ABCDEFG123456/stdout`
    + `cluster-prod/steps/s-ABCDEFG123456/stderr`
    + `/applications/application_1234567890_0001/container_1234567890_0001_01_000001/stdout`

### を使用したログの暗号化 AWS KMS
<a name="emr-plan-logging-cw-encrypting-logs-with-kms"></a>

 AWS Key Management Service (KMS) を使用して、保管中の CloudWatch ログを暗号化できます。暗号化を有効にするには:

1. EMR クラスターと同じ AWS リージョンで KMS キーを作成または識別します。

1. KMS キーポリシーが CloudWatch Logs サービスにキーの使用を許可していることを確認します。

1. `EncryptionKeyArn` パラメータを に追加します`CloudWatchLogConfiguration`。

CloudWatch Logs データの暗号化の詳細については、「 [を使用して CloudWatch Logs のログデータを暗号化 AWS Key Management Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)する」を参照してください。

#### KMS 暗号化の例
<a name="emr-plan-logging-cw-encrypting-logs-with-kms-example"></a>

```
{
  "CloudWatchLogConfiguration": {
    "Enabled": true,
    "EncryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012"
  }
}
```

### CloudWatch でのログの表示
<a name="emr-plan-logging-cw-viewing-logs"></a>

CloudWatch ログ記録を有効にしてクラスターを実行したら、CloudWatch コンソールまたは API を使用してログを表示および分析できます。

#### EMR コンソールからのログへのアクセス
<a name="emr-plan-logging-cw-viewing-accessing"></a>

クラスターログにアクセスする最も簡単な方法は、EMR コンソールから直接アクセスすることです。

1. Amazon EMR コンソールに移動します。

1. クラスターリストからクラスターを選択します。

1. クラスターの詳細ページで、**クラスター管理**セクションを見つけます。

1. **Amazon CloudWatch の「ログの送信先**」リンクをクリックします。

このリンクをクリックすると、クラスターのロググループにフィルタリングされた CloudWatch Logs コンソールに直接移動します。

#### CloudWatch コンソールからのログへのアクセス
<a name="emr-plan-logging-cw-viewing-accessing-console"></a>

CloudWatch でログに手動で移動するには:

1. [CloudWatch コンソール](https://console.aws.amazon.com/cloudwatch/)を開きます。

1. ナビゲーションペインで、[**ロググループ**] を選択します。

1. ロググループを検索する (デフォルト: `/aws/emr/{cluster_id}`またはカスタムロググループ名)

1. ロググループを選択して、使用可能なログストリームを表示します。

1. ログストリームを選択して、ログイベントを表示します。

CloudWatch Logs の使用の詳細については、[Amazon CloudWatch Logs ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)を参照してください。

### 考慮事項
<a name="emr-plan-logging-cw-considerations"></a>

#### CloudWatch エージェントの動作
<a name="emr-plan-logging-cw-considerations-agent-behavior"></a>

Amazon CloudWatch エージェントは、メトリクスとログ記録の両方の機能を提供します。
+ CloudWatch エージェントのみ ( なし`MonitoringConfiguration`) を有効にすると、CloudWatch メトリクスのみが CloudWatch に発行されます。ログは送信されません。
+ CloudWatch ログ記録を有効にするには、CloudWatch エージェントアプリケーションと を使用した `MonitoringConfiguration`パラメータの両方が必要です`CloudWatchLogConfiguration`。これにより、メトリクスとログ記録を一緒に行うことができます。

#### CloudWatch ログ記録のみの有効化 (CloudWatch メトリクスの無効化)
<a name="emr-plan-logging-cw-considerations-disabling"></a>

CloudWatch ログ記録を有効にし、メトリクス収集機能を無効にしたい場合は、メトリクスのエクスポートを停止するように CloudWatch エージェントを設定できます。クラスター設定に次の分類を追加します。

```
[
  {
    "Classification": "emr-metrics",
    "Properties": {},
    "Configurations": [
      {
        "Classification": "emr-system-metrics",
        "Properties": {},
        "Configurations": []
      }
    ]
  }
]
```

CloudWatch メトリクスの詳細については、[Amazon CloudWatch でメトリクスをモニタリング](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-metrics.html)する」を参照してください。

#### 既知の制限事項
<a name="emr-plan-logging-cw-considerations-disabling-known"></a>

ログのアップロード中のデータポイントのメトリクス:  
CloudWatch ログ記録がアクティブな場合、ログアクティビティが高い期間、特にステップ送信中に、CloudWatch メトリクスデータに時折ギャップが発生することがあります。これは、EMR インスタンスコントローラーが CloudWatch エージェントを再起動して、ステップの送信時に新しいログ設定を適用し、メトリクスの収集を一時的に中断するために発生します。これはログ配信やクラスター機能には影響しません。

#### プライベートサブネットの要件
<a name="emr-plan-logging-cw-considerations-disabling-known-private"></a>

プライベートサブネット内の EMR クラスターの CloudWatch Logs にログを発行するには、CloudWatch Logs VPC エンドポイントを作成してクラスターの VPC に関連付けます。

CloudWatch Logs エンドポイントの詳細については、 *AWS 全般のリファレンスガイド*の[Amazon CloudWatch Logs エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/cwl_region.html)」を参照してください。

#### コストについて
<a name="emr-plan-logging-cw-cost-considerations"></a>

CloudWatch Logs の料金は、以下に基づいています。
+ **データ取り込み:** CloudWatch に取り込まれたログデータの量
+ **ストレージ:** 保持設定に基づいて保存されるログデータの量
+ **データ分析:** CloudWatch Logs Insights を使用してクエリを実行する

以下を実行してコストを最適化します。
+ ロググループに適切なログ保持期間を設定します。
+ 選択ログタイプを使用して、必要なログのみをキャプチャします。
+ 長期的なログストレージに Amazon S3 ログ記録を低コストで使用することを検討してください。

現在の料金情報については、[Amazon CloudWatch の料金](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。

### その他のリソース
<a name="emr-plan-logging-cw-additional-resources"></a>
+ [Amazon CloudWatch によるメトリクスのモニタリング](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/AmazonCloudWatchAgent-metrics.html) - CloudWatch メトリクス収集に関する情報
+ [Amazon EMR の IAM ロールの設定](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html) - EMR クラスターの IAM ロールの設定
+ [Amazon CloudWatch Logs ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/) - CloudWatch Logs 機能に関する完全なガイド
+ [AWS CLI EMR のコマンドリファレンス](https://docs.aws.amazon.com/cli/latest/reference/emr/) - CLI リファレンスドキュメント