首页 > 解决方案 > Spark 流式传输:公开 spark_streaming_* 指标

问题描述

我们在 kubernetes(使用 SparkOperator)和 Prometheus 上使用 spark 来公开应用程序的指标。该应用程序是一个火花流应用程序(非结构化流)。该应用程序用于在具有 spark 版本 2.4.7 的映像上运行,后来迁移到 spark 3.1.2。由于这种迁移,所有spark_streaming_*指标都消失了,例如spark_streaming_driver_totalreceivedrecords(如此处定义的https://github.com/apache/spark/blob/master/streaming/src/main/scala/org/apache/spark/streaming/StreamingSource.scala#L53 )

一般来说,Prometheus 设置似乎有效,因为当您 curl prometheus 端口时,您仍然可以看到一堆其他指标 - 只是看不到火花流指标。spark-image 包含 prometheus-java 代理,在 stream-app 的 helm 图表中,监控规范配置为使用它

monitoring:
    exposeDriverMetrics: true
    exposeExecutorMetrics: true
    prometheus:
      jmxExporterJar: "/prometheus/jmx_prometheus_javaagent-0.11.0.jar"
      port: 8888

如 spark-operator https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/docs/user-guide.md#monitoring的文档中所述。这也是用于使用 spark 2.4.7 的设置的方式

这个指标在 spark3 中消失了吗?或者我们可能只是缺少一些配置?另一个旁注:当您检查指标时,<spark-driver>:<ui-port>/metrics/json您可以看到所需的指标

标签: apache-sparkprometheus

解决方案


好的,目前 spark-operator 似乎无法与 Spark3 中的当前指标一起正常工作。该问题可以通过使用固定的 prometheus 配置文件配置 spark-image 来解决,然后在您的 helm 图表中使用它

monitoring:
    exposeDriverMetrics: true
    exposeExecutorMetrics: true
    prometheus:
      jmxExporterJar: "/prometheus/jmx_prometheus_javaagent-0.11.0.jar"
      port: 8888
      configFile: PATH_TO_THE_CONFIG

更多信息和工作 prometheus 配置可以在这里找到:https ://github.com/GoogleCloudPlatform/spark-on-k8s-operator/issues/1117


推荐阅读