Azure Databricks 13.3版本后如何记录集群使用指标(不含DataDog、Grafana)
Azure Databricks 13.3+ 集群资源指标记录方案(排除第三方监控工具)
1. Azure Monitor原生集成(官方首选)
- 操作步骤:打开目标集群的配置页面,切换到「监控」标签,勾选「发送指标到Azure Monitor」即可启用
- 覆盖指标:CPU使用率、内存使用率(JVM/OS双维度)、网络吞吐、磁盘IO、作业/任务执行时长、集群并行度等核心指标
- 自定义分析:通过Azure Monitor的日志分析功能,使用
DatabricksClusterMetrics表写Kusto查询,比如查看1小时内的CPU趋势:DatabricksClusterMetrics | where ClusterName == "your-cluster-name" | where TimeGenerated >= ago(1h) | summarize avg(CpuUsagePercent) by bin(TimeGenerated, 5m) - 附加能力:直接在Azure Monitor里搭建仪表盘、配置阈值告警,全程无需第三方工具
2. Databricks REST API 拉取指标
- 核心端点:用
/api/2.0/clusters/list获取集群ID,/api/2.0/clusters/metrics拉取实时指标,/api/2.0/insights/metrics/clusters获取历史指标 - 示例Python脚本(用官方SDK):
from databricks.sdk import WorkspaceClient import time # 初始化客户端 w = WorkspaceClient(host="https://<your-workspace-url>.azuredatabricks.net", token="<your-pat-token>") target_cluster_id = "<your-cluster-id>" # 循环拉取实时指标(每分钟一次) while True: metrics = w.clusters.get_metrics(cluster_id=target_cluster_id) print(f"当前CPU使用率: {metrics.metrics.get('cpu_usage_percent', 0)}%") print(f"当前内存使用率: {metrics.metrics.get('memory_usage_percent', 0)}%") print(f"网络写入速率: {metrics.metrics.get('network_bytes_written', 0)/1024/1024:.2f} MB/s") time.sleep(60) - 扩展:拉取的指标可以写入Azure Blob/ADLS Gen2,后续用Spark或Synapse做批量分析
3. 集群节点本地脚本采集(细粒度自定义指标)
- 适用场景:需要OS层面的进程级指标(如单个进程CPU占用、磁盘IOPS)
- 实现方式:
- 在集群初始化脚本中部署采集工具(比如
sysstat、vmstat) - 后台运行采集任务,将数据写入DBFS或Azure存储
- 定期用Spark作业读取并聚合数据
- 在集群初始化脚本中部署采集工具(比如
- 初始化脚本示例片段:
# 安装sysstat工具集 apt-get update && apt-get install -y sysstat # 后台启动磁盘IO采集,每60秒记录一次,输出到DBFS nohup iostat -x 60 >> /dbfs/cluster-metrics/disk-io-log-$(date +%Y%m%d).log &
4. Databricks系统表查询(内置元数据)
- 可用系统表:
system.compute.cluster_metrics(集群级指标)、system.compute.node_metrics(节点级指标) - 示例Spark SQL查询:
SELECT cluster_name, timestamp, cpu_usage_percent, memory_usage_percent, network_bytes_read / 1024 / 1024 as network_read_mb, network_bytes_written / 1024 / 1024 as network_write_mb FROM system.compute.cluster_metrics WHERE cluster_name = "your-cluster-name" AND timestamp >= current_timestamp() - INTERVAL 2 HOUR ORDER BY timestamp DESC - 优势:无需额外配置,直接在Databricks工作区内查询,指标默认保留30天
内容的提问来源于stack exchange,提问作者MJ029
相关产品推荐
相关产品推荐

