使用 Prometheus 监控容器化 Spark v2.1 应用程序
Monitor containerized Spark v2.1 application with Prometheus
我写了一个 Spark 应用程序,我用 maven 编译它并使用 spark-submit 来 运行 它。
我想监控我的应用程序并收集指标。因此,我使用了 Prometheus 容器,但我很难向它公开一个简单的指标。我试图遵循答案 。
但是我不明白我应该如何处理 spark.yml 文件。
- 我有一个计算一些东西的 Prometheus 客户端。
- 我在 spark/conf/metrics.properties
中取消注释 *.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink
- 我将 JMX Prometheus Javaagent 添加到我的 pom.xml
这是我的 prometheus.yml:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
- job_name: spark-master
static_configs:
- targets: ['spark-master:8082']
当我查看 http://localhost:9090/targets 中的目标时
我可以看到 Prometheus 目标已启动,而 Spark 已关闭
我认为答案取决于您想在 Spark 2.1 中监控什么。
如果是 JVM 指标 - 我认为您做不到。原因很简单,您不知道 JVM 将在 Spark 集群中的何处创建。如果我们知道在同一个节点中启动多个 JVM 是不可能的,因为每个 JMX 代理都需要动态分配一个端口,而 Prometheus 服务器需要一个精确的 scraping url这是不可能的。
如果要求是使用推送网关测量特定于业务的指标,那么是的,您可以这样做,因为 Prometheus 服务器将 抓取 特定的 抓取 url.
也许您需要查看支持 Prometheus 的更新版本的 Spark3.0。请按照这个 link - https://spark.apache.org/docs/latest/monitoring.html
我写了一个 Spark 应用程序,我用 maven 编译它并使用 spark-submit 来 运行 它。
我想监控我的应用程序并收集指标。因此,我使用了 Prometheus 容器,但我很难向它公开一个简单的指标。我试图遵循答案
- 我有一个计算一些东西的 Prometheus 客户端。
- 我在 spark/conf/metrics.properties 中取消注释 *.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink
- 我将 JMX Prometheus Javaagent 添加到我的 pom.xml
这是我的 prometheus.yml:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
- job_name: spark-master
static_configs:
- targets: ['spark-master:8082']
当我查看 http://localhost:9090/targets 中的目标时 我可以看到 Prometheus 目标已启动,而 Spark 已关闭
我认为答案取决于您想在 Spark 2.1 中监控什么。
如果是 JVM 指标 - 我认为您做不到。原因很简单,您不知道 JVM 将在 Spark 集群中的何处创建。如果我们知道在同一个节点中启动多个 JVM 是不可能的,因为每个 JMX 代理都需要动态分配一个端口,而 Prometheus 服务器需要一个精确的 scraping url这是不可能的。
如果要求是使用推送网关测量特定于业务的指标,那么是的,您可以这样做,因为 Prometheus 服务器将 抓取 特定的 抓取 url.
也许您需要查看支持 Prometheus 的更新版本的 Spark3.0。请按照这个 link - https://spark.apache.org/docs/latest/monitoring.html