Prometheus 中的 Spark 3.0 流指标

Spark 3.0 streaming metrics in Prometheus

我是 运行 Kubernetes 上的 Spark 3.0 应用程序(Spark Structured Streaming),我正在尝试使用新的原生 Prometheus 指标接收器。我能够让它工作并获得描述的所有指标 here

但是,我真正需要的指标是在启用以下配置时提供的指标:spark.sql.streaming.metricsEnabled,如 this Spark Summit presentation 中所建议。现在,即使该配置设置为“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"