You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks Spark 3.1.1 下PrometheusServlet无法获取指标求解决方案

问题核心原因

Databricks 托管 Runtime 对原生 Spark UI 做了封装改造,默认走 HTTPS 加密+身份校验链路,没有对外暴露原生裸HTTP的8080端口,你拿到的8080端口返回的是未完成HTTPS握手的错误二进制包,所以会出现P%异常响应、SSL证书报错的问题。

PrometheusServlet 适配方案(可跑通)

你现有的配置本身没有问题,只需要调整访问方式即可:

  • 不要直接访问 Worker 节点公网IP的端口,Databricks 所有 Spark UI 相关路径都通过工作区的反向代理对外暴露,统一走工作区443端口
  • 访问时需要携带 Databricks 个人访问token做身份校验,同时跳过自签证书校验,测试curl命令如下:
curl -k -H "Authorization: Bearer <你的Databricks个人访问Token>" https://<你的Databricks工作区域名>/driver-proxy-api/o/0/<集群ID>/metrics/prometheus
  • Prometheus 采集任务对应配置要加认证头、关闭SSL校验,不需要额外放开Worker节点的公网端口,安全组仅需要允许Prometheus访问Databricks工作区的443端口即可。

更适合Databricks生产环境的替代方案

如果觉得反向代理+认证的采集方式维护成本高,可以选择以下两种更稳定的方案:

方案1:指标推送模式

不用拉取,直接通过初始化脚本配置Graphite Sink,把指标主动推到你部署的Prometheus Pushgateway或者Graphite服务,再对接Grafana,参考metrics.properties配置如下:

*.sink.graphite.class=org.apache.spark.metrics.sink.GraphiteSink
*.sink.graphite.host=<你的Pushgateway/Graphite服务内网地址>
*.sink.graphite.port=9109
*.sink.graphite.period=10
*.sink.graphite.unit=seconds
*.sink.graphite.prefix=databricks.cluster.<自定义集群标识>

方案2:AWS CloudWatch 原生对接

Databricks on AWS 原生支持集群指标直接推送到CloudWatch,只需要在集群配置中开启对应权限,无需额外修改metrics配置,直接在Grafana中添加CloudWatch数据源即可读取指标,稳定性最高,适合生产环境使用。

内容的提问来源于stack exchange,提问作者zyd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:54:02