使用 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
在运行 create-application
或 start-job-run
命令时,您还可以使用 AWS CLI 或 EMR Serverless API 将 EMR Serverless 应用程序与 Amazon Managed Service for Prometheus 集成。
在命令中包含 prometheusMonitoringConfiguration
表示 EMR Serverless 必须使用代理运行 Spark 作业,该代理负责收集 Spark 指标并将其写入 Amazon Managed Service for Prometheus 的 remoteWriteUrl
端点。然后,您可以使用 Amazon Managed Service for Prometheus 中的 Spark 指标进行可视化、警报和分析。
高级配置属性
EMR Serverless 使用 Spark 中名为 PrometheusServlet
的组件来收集 Spark 指标,并将性能数据转换为与 Amazon Managed Service for Prometheus 兼容的数据。默认情况下,EMR Serverless 会在 Spark 中设置默认值,并在使用 PrometheusMonitoringConfiguration
提交作业时解析驱动程序和执行程序指标。
下表列出了在提交 Spark 作业,并将指标发送到 Amazon Managed Service for Prometheus 时可以配置的所有属性。
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 在 AWS 区域 中普遍可用的情况下,才支持将 Amazon Managed Service for Prometheus 与 EMR Serverless 结合使用。
-
运行代理以在 Amazon Managed Service for Prometheus 上收集 Spark 指标时需要工作线程提供更多资源。如果选择较小的工作线程规模(例如 1 个 vCPU 工作线程),作业运行时间可能会增加。
-
仅 Amazon EMR 7.1.0 及更高版本支持将 Amazon Managed Service for Prometheus 与 EMR Serverless 结合使用。
-
Amazon Managed Service for Prometheus 必须部署在运行 EMR Serverless 的同一账户中才能收集指标。