如何监控Azure Databricks中的一组作业集群运行状态?
监控Azure Databricks作业集群的可视化方案
下面是几个实现作业集群状态可视化(红绿标识)的可行方案,基于Azure生态和Databricks API落地:
方案一:Azure Monitor工作簿 + Azure Functions定时拉取API
- 核心逻辑:定时调用Databricks集群API获取状态,存入Azure Log Analytics,再用工作簿构建可视化面板
- 具体步骤:
- 创建Azure Function,设置定时触发器(比如每5分钟执行一次)
- 在Function中调用Databricks的
GET /api/2.0/clusters/listAPI,通过cluster_source字段过滤出作业集群(值为JOB) - 提取集群名称、ID、状态(
state字段,可选值:RUNNING/TERMINATED/ERROR等),将这些数据写入Log Analytics工作区的自定义表(比如DatabricksClusterStatus) - 打开Azure Monitor工作簿,添加状态卡片组件,通过Kusto查询从自定义表拉取数据,设置条件格式:状态为
RUNNING时显示绿色,其他状态显示红色
- 示例代码片段(Python Function):
import requests import os from datetime import datetime def main(mytimer) -> None: # Databricks API配置 databricks_token = os.getenv("DATABRICKS_TOKEN") databricks_workspace_url = os.getenv("DATABRICKS_WORKSPACE_URL") headers = {"Authorization": f"Bearer {databricks_token}"} # 调用集群列表API response = requests.get(f"{databricks_workspace_url}/api/2.0/clusters/list", headers=headers) clusters = response.json().get("clusters", []) # 过滤作业集群并整理数据 job_clusters = [ { "ClusterName": cluster["cluster_name"], "ClusterId": cluster["cluster_id"], "State": cluster["state"], "Timestamp": datetime.utcnow().isoformat() } for cluster in clusters if cluster.get("cluster_source") == "JOB" ] # 将数据写入Log Analytics(需提前配置Log Analytics连接器) # 此处省略写入逻辑,可参考Azure Monitor SDK文档实现
方案二:Power BI可视化 + Databricks API数据源
- 核心逻辑:直接在Power BI中对接Databricks API,定时刷新数据后构建状态面板
- 具体步骤:
- 在Power BI Desktop中新建Web数据源,输入Databricks集群API的URL,并添加请求头
Authorization: Bearer <你的Databricks令牌> - 加载数据后,通过Power Query过滤出作业集群,保留名称、状态字段
- 添加卡片视觉对象,设置条件格式:将状态字段的
RUNNING映射为绿色背景,其他状态映射为红色背景 - 将发布的Power BI报表嵌入Azure门户(通过Azure Dashboard的Power BI Tile),或直接共享给团队成员查看
- 在Power BI Desktop中新建Web数据源,输入Databricks集群API的URL,并添加请求头
方案三:Azure Logic Apps + Azure Dashboard自定义Tile
- 核心逻辑:用Logic Apps定时拉取集群状态,存入Azure Storage Table,再通过Dashboard的自定义查询展示状态
- 具体步骤:
- 创建Azure Logic App,添加定时触发器(比如每10分钟执行一次)
- 添加HTTP动作,调用Databricks集群列表API,过滤作业集群
- 添加Azure Table Storage动作,将集群名称、状态写入存储表
- 在Azure Dashboard中添加自定义查询Tile,连接到Storage Table,编写查询获取最新状态,设置条件格式实现红绿标识
注意:作业集群默认是临时模式(作业运行时启动,结束后终止),如果你的NRT接口依赖长期运行的集群,需将集群配置为永久运行模式,否则监控状态会随作业启停变化。
内容的提问来源于stack exchange,提问作者mac
相关产品推荐
相关产品推荐

