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

如何通过Azure Log Analytics查询Databricks集群Worker超10的运行时段

可行性结论

完全可以。只要你已经完成Azure Databricks到对应Log Analytics工作区的诊断日志配置,就能通过Kusto查询准确提取Worker实例数超过10个的所有连续时间区间。

前置校验项

在执行查询前先确认两个配置项,避免查不到数据:

  • 已在Databricks工作区的诊断设置中,勾选集群事件类别日志发送到目标Log Analytics工作区,Worker数量变动、集群状态上报都属于该类别的采集范围
  • 诊断配置的生效时间早于你要查询的集群运行时间段,避免数据断档
具体查询操作
  1. 进入你创建的Log Analytics工作区,在左侧菜单找到「日志」选项,打开Kusto查询编辑器
  2. 粘贴以下查询语句,替换语句里的时间范围参数为你要排查的时间段,直接执行即可:
DatabricksClusterEvents
// 替换下方括号内的时间为实际查询范围
| where TimeGenerated between (datetime(2024-01-01) .. datetime(2024-06-30))
// 仅保留集群运行、集群扩缩容两类带准确Worker数的事件,过滤启动、终止等无效事件
| where EventType in ("cluster_running", "cluster_resized")
// 提取当前Worker实例数值
| extend CurrentWorkerCount = toint(ClusterProperties.num_workers)
// 筛选Worker数超过10的记录
| where CurrentWorkerCount > 10
| project TimeGenerated, ClusterId, ClusterName, CurrentWorkerCount
// 合并连续的超阈值时间段
| sort by ClusterId, TimeGenerated asc
// 同集群下相邻两条记录间隔超过5分钟则判定为新的时间区间,可根据实际日志上报频率调整阈值
| extend IsNewPeriod = iif(ClusterId != prev(ClusterId) or datetime_diff("minute", TimeGenerated, prev(TimeGenerated)) > 5, 1, 0)
| extend PeriodGroupId = row_cumsum(IsNewPeriod)
| summarize 
    StartTime = min(TimeGenerated), 
    EndTime = max(TimeGenerated), 
    区间内峰值Worker数 = max(CurrentWorkerCount) 
    by PeriodGroupId, ClusterId, ClusterName
| project StartTime, EndTime, ClusterId, ClusterName, 区间内峰值Worker数, 持续时长 = format_timespan(EndTime - StartTime, "dd天hh小时mm分钟")
| sort by StartTime desc
使用提示
  • 查询结果会按集群维度拆分所有连续超阈值的时间段,直接展示每个区间的开始/结束时间、持续时长、区间内Worker峰值
  • 如果执行后返回空结果,先运行DatabricksClusterEvents | take 10确认日志是否正常入库,再回头检查诊断设置的类别勾选是否正确
  • 针对自动伸缩集群,如果你需要更细粒度的节点数校验,可以结合采集的Spark指标表交叉核对,避免事件上报延迟带来的统计偏差
  • 5分钟间隔阈值可根据实际场景调整:如果你的集群扩缩容很频繁,可以把间隔调至2-3分钟,避免把短时间缩容到10以下又扩容的场景误合并为同一个区间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:27:41