Azure Databricks中Prometheus Sink Metrics Servlet未找到问题咨询
解决Databricks Spark暴露Prometheus指标的问题
1. 默认集成Prometheus接收器的DBR版本
Databricks Runtime (DBR) 11.0及以上版本已默认内置Spark Prometheus metrics sink,无需额外安装依赖,直接配置metrics.properties即可生效。如果你的集群使用低于11.0的DBR版本,就会触发ClassNotFoundException,因为对应的PrometheusServlet类未包含在默认环境中。
2. 低版本DBR的适配方案(初始化脚本配置)
若无法升级DBR版本,需通过初始化脚本手动引入依赖库并完成配置:
完整初始化脚本示例
#!/bin/bash # 下载与Spark版本匹配的Prometheus metrics sink包 # 请根据你的DBR对应Spark版本替换jar包URL(示例为Spark 3.1.2,对应DBR 9.1/10.4) wget -O /databricks/jars/spark-metrics-prometheus.jar https://repo1.maven.org/maven2/org/apache/spark/spark-metrics-prometheus_2.12/3.1.2/spark-metrics-prometheus_2.12-3.1.2.jar # 生成metrics.properties配置文件 cat << EOF > /databricks/spark/conf/metrics.properties *.sink.prometheusServlet.class=org.apache.spark.metrics.sink.PrometheusServlet *.sink.prometheusServlet.path=/metrics/prometheus master.sink.prometheusServlet.path=/metrics/master/prometheus applications.sink.prometheusServlet.path=/metrics/applications/prometheus EOF
关键注意事项
- 版本匹配:必须下载与DBR内置Spark版本完全一致的
spark-metrics-prometheus包,版本不匹配会导致类加载失败。可通过DBR release notes确认对应Spark版本。 - 目录权限:初始化脚本需拥有写入
/databricks/jars和/databricks/spark/conf目录的权限,默认集群初始化脚本具备该权限。 - 网络访问:确保集群节点能访问Maven仓库(若内网环境,需将jar包上传至内部存储并修改下载路径)。
验证方法
集群启动后,通过Driver节点的内网地址访问http://<driver-ip>:4040/metrics/prometheus(端口4040为Spark UI默认端口),若能返回Prometheus格式的指标数据,则配置成功。
内容的提问来源于stack exchange,提问作者Shane
相关产品推荐
相关产品推荐

