Prometheus中的Spark 3.0流指标

问题描述

我正在Kubernetes上运行Spark 3.0应用程序(火花结构化流),并且尝试使用新的本机Prometheus指标接收器。我能够使其工作并获得here中所述的所有指标。

但是,我真正需要的指标是启用以下配置时提供的指标:如this Spark Summit presentation中所建议的spark.sql.streaming.metricsEnabled。现在,即使将该配置设置为“ true”,我也无法看到广告中/metrics/executors/prometheus下的任何流媒体指标。需要注意的一件事是,我可以在metrics/json下看到它们,因此,我们知道配置已正确应用。

为什么不将流指标发送到Prometheus接收器?我是否需要添加一些其他配置?还不支持吗?

解决方法

经过相当多的调查,我能够使它工作。简而言之,Spark 作业 k8s 定义文件需要添加一行,以告诉 Spark 在哪里可以找到 metrics.propreties 配置文件。

确保在 Spark 作业 k8s 定义文件中的 sparkConf 下添加以下行,并将其调整为您的实际路径。 metrics.properties 文件的路径应在您的 Dockerfile 中设置。

sparkConf:    
    "spark.metrics.conf": "/etc/metrics/conf/metrics.properties"

作为参考,这是我的 sparkConf 的其余部分,用于与指标相关的配置。

sparkConf:
    "spark.metrics.conf": "/etc/metrics/conf/metrics.properties"  
    "spark.ui.prometheus.enabled": "true"
    "spark.kubernetes.driver.annotation.prometheus.io/scrape": "true"
    "spark.kubernetes.driver.annotation.prometheus.io/path": "/metrics/executors/prometheus/"
    "spark.kubernetes.driver.annotation.prometheus.io/port": "4040"
    "spark.sql.streaming.metricsEnabled": "true"
    "spark.metrics.appStatusSource.enabled": "true"
    "spark.kubernetes.driver.service.annotation.prometheus.io/scrape": "true"
    "spark.kubernetes.driver.service.annotation.prometheus.io/path": "/metrics/prometheus/"
    "spark.kubernetes.driver.service.annotation.prometheus.io/port": "4040"