使用Prometheus获取Databricks(Spark)的度量指标
用Prometheus监控Databricks(Spark)的指标获取
虽然是很久之前的事情了,从spark3.0系列开始,可以通过Prometheus来获取指标数据。
因为不太了解在Databricks的情况下该如何获取信息,所以我将以类似闲聊的方式留下这些信息。
我们在以下地方进行动作验证。
-
- DBR11.3 Standard
- All purpose Cluster
对于Job Cluster的情况,由于获取的指数URL会发生变化,所以在获取之前需要进行一些考虑(尚未验证)。
设定项目
-
- spark config
-
- init script
- Prometheusからmetricsを取得するためのconfig
Spark配置
请通过Databricks集群创建页面设置Spark Config,namespace是任意的命名空间。
spark.ui.prometheus.enabled true
spark.metrics.namespace suda-spark
初始化脚本
请在DBFS上放置此处的init script。将其复制并粘贴到notebook中执行,然后将结果输出到DBFS上。您还可以在Cluster的界面上设置init script。
%scala
dbutils.fs.put("dbfs:/Users/hogehoge/prom_init_scripts",
"""
|#!/bin/bash
|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
""".stripMargin, true)
重启Cluster并进行安装后的确认。
为了重新加载init脚本,在重新启动集群后,我们将在notebook上使用以下命令来确认是否可以获取到Metrics。
%sh
curl -L -H "Authorization: Bearer パーソナルtoken" -X GET https://WORKSPACEのURL/driver-proxy-api/o/0/ClusterのID/40001/metrics/prometheus
%sh
curl -L -H "Authorization: Bearer パーソナルtoken" -X GET https://${WORKSPACE}/driver-proxy-api/o/0/ClusterのID/40001/metrics/executors/prometheus
如果设置成功加载,我认为可以以这种形式获取到指标并写入。

普罗米修斯的配置设置
我們將在 prometheus.yaml 的 scrape 部分添加以下設定。由於從 prometheus 端進行的採集是通過HTTP並使用個人 token 進行的,因此請使用 bearer_token 進行指定。
- job_name: "databricks"
metrics_path: "/driver-proxy-api/o/0/0313-015028-llm0hx61/40001/metrics/prometheus"
scheme: "http"
bearer_token: "パーソナルToken"
static_configs:
- targets: ["WORKSPACEのFQDN"]
- job_name: "databricks-exec"
metrics_path: "/driver-proxy-api/o/0/0313-015028-llm0hx61/40001/metrics/executors/prometheus"
scheme: "http"
bearer_token: "パーソナルToken"
static_configs:
- targets: ["WORKSPACEのFQDN"]
只需一个选项,将以下内容用中文重新表述:
从Prometheus的用户界面上看,可以确认可以获得各种指标数据,因此我认为可以使用Grafana等工具进行可视化展示,效果会很好。

我在Databricks上使用Prometheus获取指标的方法非常简单。由于我还没有找到满意的仪表板,如果有人知道好看的仪表板,请务必告诉我。