Amazon Managed Service for Prometheus で Spark メトリクスをモニタリングする
Amazon EMR リリース 7.1.0 以降では、EMR Serverless を Amazon Managed Service for Prometheus と統合して、EMR Serverless ジョブとアプリケーションの Apache Spark メトリクスを収集できます。この統合は、AWS コンソール、EMR Serverless API、または AWS CLI を使用してジョブを送信するか、アプリケーションを作成するときに実施できます。
前提条件
Spark メトリクスを Amazon Managed Service for Prometheus に配信するには、次の前提条件を満たす必要があります。
-
Amazon Managed Service for Prometheus ワークスペースを作成します。このワークスペースは、取り込みエンドポイントとして機能します。エンドポイント - リモート書き込み 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>
" }
セットアップ
AWS コンソールを使用して、Amazon Managed Service for Prometheus と統合されたアプリケーションを作成するには
-
「Amazon EMR Serverless の使用を開始する」を参照してアプリケーションを作成します。
-
アプリケーションの作成中に、[カスタム設定を使用する] を選択し、設定するフィールドに情報を指定してアプリケーションを設定します。
-
[アプリケーションのログとメトリクス] で、[エンジンメトリクスを Amazon Managed Service for Prometheus に配信] を選択し、リモート書き込み URL を指定します。
-
必要な他の設定を指定し、[アプリケーションの作成と起動] を選択します。
AWS CLI または EMR Serverless API を使用する
AWS CLI または EMR Serverless API を使用して、create-application
または start-job-run
コマンドを実行しているときに EMR Serverless アプリケーションを Amazon Managed Service for Prometheus と統合することもできます。
コマンドで prometheusMonitoringConfiguration
を指定すると、EMR Serverless は Spark メトリクスを収集し、Amazon Managed Service for Prometheus の remoteWriteUrl
エンドポイントに書き込むエージェントを使用して Spark ジョブを実行する必要があることが示されます。その後、Amazon Managed Service for Prometheus の Spark メトリクスを使用して、視覚化、アラート、分析を行うことができます。
高度な設定プロパティ
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 メトリクス
考慮事項と制限事項
Amazon Managed Service for Prometheus を使用して EMR Serverless からメトリクスを収集する場合は、以下の考慮事項と制限事項を検討してください。
-
Amazon Managed Service for Prometheus を EMR Serverless で使用するためのサポートは、Amazon Managed Service for Prometheus が一般的に利用可能な AWS リージョンでのみ利用できます。
-
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 を実行するのと同じアカウントにデプロイする必要があります。