我写了一个Spark应用程序,用maven编译并使用Spark-submit来运行它。我想监视我的应用程序并收集指标。因此,我使用了一个普罗米修斯容器,但我很难将一个简单的度量暴露出来。但我不明白该如何处理spark.yml文件。
- 我有一个普罗米修斯的客户,他计算一些东西
- 我在spark/conf/metrics.properties中取消注释*.sink.jmx.class=org.apache.spark.metrics.sink.JmxSink
- 我在pom.xml中添加了JMX Prometheus Javaagent
这是我的普罗米修斯。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我可以看到普罗米修斯的目标在上升,火花在下降
我认为答案取决于您想要在Spark 2.1中监视什么。
-
如果是JVM度量,我认为你做不到。原因很简单,您不知道JVM将在Spark集群中的何处创建。如果我们知道不可能在同一个节点中启动多个JVM,因为每个JMX代理都需要一个动态分配的端口,而Prometheus服务器需要一个精确的抓取url,这是不可能的。
-
如果要求使用推送网关测量特定于业务的指标,那么是的,您可以这样做,因为Prometheus服务器将抓取特定的刮擦url。
也许你需要看看支持普罗米修斯的Spark3.0的最新版本。请关注此链接-https://spark.apache.org/docs/latest/monitoring.html