

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

# Amazon Managed Service for Prometheus で Spark メトリクスをモニタリングする
<a name="monitor-with-prometheus"></a>

Amazon EMR リリース 7.1.0 以降では、EMR Serverless を Amazon Managed Service for Prometheus と統合して、EMR Serverless ジョブとアプリケーションの Apache Spark メトリクスを収集できます。この統合は、 AWS コンソール、EMR Serverless API、または を使用してジョブを送信するか、アプリケーションを作成するときに使用できます AWS CLI。

## 前提条件
<a name="monitoring-with-prometheus-prereqs"></a>

Spark メトリクスを Amazon Managed Service for Prometheus に配信するには、次の前提条件を満たします。
+ [Amazon Managed Service for Prometheus ワークスペースを作成します。](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html)このワークスペースは、取り込みエンドポイントとして機能します。**エンドポイント - リモート書き込み URL** に表示された URL を書き留めます。EMR Serverless アプリケーションを作成するときに URL を指定する必要があります。
+ モニタリング目的で Amazon Managed Service for Prometheus にジョブへのアクセス許可を付与するには、ジョブ実行ロールに次のポリシーを追加します。

  ```
  {
      "Sid": "AccessToPrometheus",
      "Effect": "Allow",
      "Action": ["aps:RemoteWrite"],
      "Resource": "arn:aws:aps:{{<AWS_REGION>}}:{{<AWS_ACCOUNT_ID>}}:workspace/{{<WORKSPACE_ID>}}"
  }
  ```

## セットアップ
<a name="monitoring-with-prometheus-setup"></a>

**AWS コンソールを使用して Amazon Managed Service for Prometheus と統合されたアプリケーションを作成するには**

1. 「[Amazon EMR Serverless の使用を開始する](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html                             )」を参照してアプリケーションを作成します。

1. アプリケーションの作成中に、**[カスタム設定を使用する]** を選択し、設定するフィールドに情報を指定してアプリケーションを設定します。

1. **[アプリケーションのログとメトリクス]** で、**[エンジンメトリクスを Amazon Managed Service for Prometheus に配信]** を選択し、リモート書き込み URL を指定します。

1. 必要な他の設定を指定し、**[アプリケーションの作成と起動]** を選択します。

** AWS CLI または EMR Serverless API を使用する**

 AWS CLI または EMR Serverless API を使用して、 `create-application` または `start-job-run` コマンドの実行時に EMR Serverless アプリケーションを Amazon Managed Service for Prometheus と統合することもできます。

------
#### [ create-application ]

```
aws emr-serverless create-application \
--release-label emr-7.1.0 \
--type "SPARK" \
--monitoring-configuration '{ 
    "prometheusMonitoringConfiguration": {
        "remoteWriteUrl": "https://aps-workspaces.{{<AWS_REGION>}}.amazonaws.com/workspaces/{{<WORKSPACE_ID>}}/api/v1/remote_write"
    }
}'
```

------
#### [ start-job-run ]

```
aws emr-serverless start-job-run \
--application-id {{<APPPLICATION_ID>}} \
--execution-role-arn {{<JOB_EXECUTION_ROLE>}} \
--job-driver '{
    "sparkSubmit": {
        "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py",
        "entryPointArguments": ["10000"],
        "sparkSubmitParameters": "--conf spark.dynamicAllocation.maxExecutors=10"
    }
}' \
--configuration-overrides '{
     "monitoringConfiguration": {
        "prometheusMonitoringConfiguration": {
            "remoteWriteUrl": "https://aps-workspaces.{{<AWS_REGION>}}.amazonaws.com/workspaces/{{<WORKSPACE_ID>}}/api/v1/remote_write"
        }
    }
}'
```

------

コマンドで `prometheusMonitoringConfiguration` を指定すると、EMR Serverless は Spark メトリクスを収集し、Amazon Managed Service for Prometheus の `remoteWriteUrl` エンドポイントに書き込むエージェントを使用して Spark ジョブを実行する必要があることが示されます。その後、Amazon Managed Service for Prometheus の Spark メトリクスを使用して、視覚化、アラート、分析を行うことができます。

## 高度な設定プロパティ
<a name="monitoring-with-prometheus-config-options"></a>

EMR Serverless は、`PrometheusServlet` という名前の Spark 内のコンポーネントを使用して Spark メトリクスを収集し、パフォーマンスデータを Amazon Managed Service for Prometheus と互換性のあるデータに変換します。デフォルトでは、EMR Serverless は Spark にデフォルト値を設定し、`PrometheusMonitoringConfiguration` を使用してジョブを送信するときにドライバーとエグゼキュターのメトリクスを解析します。

次の表は、Amazon Managed Service for Prometheus にメトリクスを送信する Spark ジョブを送信するときに設定するすべてのプロパティを示しています。


| Spark プロパティ | デフォルトの値 | 説明 | 
| --- | --- | --- | 
| spark.metrics.conf.\*.sink.prometheusServlet.class | org.apache.spark.metrics.sink.PrometheusServlet | Spark が Amazon Managed Service for Prometheus にメトリクスを送信するために使用するクラス。デフォルトの動作をオーバーライドするには、独自のカスタムクラスを指定します。 | 
| spark.metrics.conf.\*.source.jvm.class | org.apache.spark.metrics.source.JvmSource | Spark が基盤となる Java 仮想マシンから重要なメトリクスを収集して送信するために使用するクラス。JVM メトリクスの収集を停止するには、このプロパティを `""` などの空の文字列に設定して無効にします。デフォルトの動作をオーバーライドするには、独自のカスタムクラスを指定します。 | 
| spark.metrics.conf.driver.sink.prometheusServlet.path | /metrics/prometheus | Amazon Managed Service for Prometheus がドライバーからメトリクスを収集するために使用する個別の URL。デフォルトの動作をオーバーライドするには、独自のパスを指定します。ドライバーメトリクスの収集を停止するには、このプロパティを `""` などの空の文字列に設定して無効にします。 | 
| spark.metrics.conf.executor.sink.prometheusServlet.path | /metrics/executor/prometheus | Amazon Managed Service for Prometheus がエグゼキュターからメトリクスを収集するために使用する個別の URL。デフォルトの動作をオーバーライドするには、独自のパスを指定します。エグゼキュターメトリクスの収集を停止するには、このプロパティを `""` などの空の文字列に設定して無効にします。 | 

Spark メトリクスの詳細については、「[Apache Spark メトリクス](https://spark.apache.org/docs/latest/monitoring.html#metrics)」を参照してください。

## 考慮事項と制限事項
<a name="monitoring-with-prometheus-limitations"></a>

Amazon Managed Service for Prometheus を使用して EMR Serverless からメトリクスを収集する場合は、以下の考慮事項と制限事項を検討してください。
+ Amazon Managed Service for Prometheus を EMR Serverless で使用するためのサポートは、[Amazon Managed Service for Prometheus が一般的に利用可能なAWS リージョン でのみ利用できます。](https://docs.aws.amazon.com/general/latest/gr/prometheus-service.html)
+ Amazon Managed Service for Prometheus で Spark メトリクスを収集するためにエージェントを実行するには、より多くのワーカーのリソースが必要です。1 つの vCPU ワーカーなど、より小さなワーカーサイズを選択すると、ジョブの実行時間が長くなる可能性があります。
+ EMR Serverless で Amazon Managed Service for Prometheus を使用するためのサポートは、Amazon EMR リリース 7.1.0 以降でのみ利用できます。
+ Amazon Managed Service for Prometheus は、メトリクスを収集するには EMR Serverless を実行するのと同じアカウントにデプロイする必要があります。