使用 Prometheus 监控容器化 Spark v2.1 应用程序

Monitor containerized Spark v2.1 application with Prometheus

我写了一个 Spark 应用程序,我用 maven 编译它并使用 spark-submit 来 运行 它。 我想监控我的应用程序并收集指标。因此,我使用了 Prometheus 容器,但我很难向它公开一个简单的指标。我试图遵循答案 。 但是我不明白我应该如何处理 spark.yml 文件。

这是我的 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 中监控什么。

  1. 如果是 JVM 指标 - 我认为您做不到。原因很简单,您不知道 JVM 将在 Spark 集群中的何处创建。如果我们知道在同一个节点中启动多个 JVM 是不可能的,因为每个 JMX 代理都需要动态分配一个端口,而 Prometheus 服务器需要一个精确的 scraping url这是不可能的。

  2. 如果要求是使用推送网关测量特定于业务的指标,那么是的,您可以这样做,因为 Prometheus 服务器将 抓取 特定的 抓取 url.

也许您需要查看支持 Prometheus 的更新版本的 Spark3.0。请按照这个 link - https://spark.apache.org/docs/latest/monitoring.html