Azure Databricks账户级资源利用率与成本消耗监控告警方案咨询
Azure Databricks 账户级监控告警方案(基于Log Analytics)
一、核心监控KPI与评估逻辑
1. 账户级资源利用率指标
- 聚合CPU使用率:从
ClusterMetrics或DatabricksClusterEvents表提取账户下所有工作区集群的CPU数据并聚合,评估规则:持续15分钟使用率超80%需排查资源瓶颈;低于20%可考虑缩容降本。 - 聚合内存使用率:从集群指标表提取内存数据聚合,评估规则:持续15分钟使用率超85%需检查内存泄漏或调整节点规格;低于15%可减少节点数量。
- 集群闲置时长占比:统计账户内运行时长超过4小时且无任务的集群占比,评估规则:占比超10%需强制配置自动停止规则。
- 作业并发负载:从
DatabricksJobEvents提取并发运行的作业数,评估规则:并发数超过集群池最大容量的80%需扩容集群池。
2. 成本消耗相关指标
- 账户级日成本波动:通过
DatabricksBillingLog(已启用账单诊断)或结合集群规格、运行时长计算日总成本,评估规则:日成本较上周同期增长超20%需排查异常作业或未停止的集群。 - 闲置集群成本占比:统计闲置集群产生的成本占总Databricks成本的比例,评估规则:占比超15%需优化自动停止配置。
- Unity Catalog存储成本:关联
UnityCatalogEvents与存储账户诊断日志统计存储容量变化,评估规则:月存储容量环比增长超30%需清理冗余表或快照。
3. Unity Catalog专属指标
- 权限变更频率:从
UnityCatalogEvents提取权限变更事件,评估规则:单日变更超10次需审核操作合规性。 - 元数据查询延迟:统计UC元数据查询的平均响应时间,评估规则:延迟超500ms持续10分钟需排查UC集群资源配置。
- 数据访问拒绝次数:统计用户访问UC数据被拒绝的事件,评估规则:单日异常超5次需检查权限配置是否合理。
4. 作业与Notebook健康指标
- 作业失败率:从
DatabricksJobEvents计算失败作业数占总作业数的比例,评估规则:失败率超5%需排查作业代码或集群配置。 - Notebook执行时长异常:统计Notebook执行时长较历史平均超2倍的次数,评估规则:单日超3次需优化代码或调整资源规格。
二、基于Log Analytics的告警配置
1. 告警规则创建步骤
- 进入目标Azure Log Analytics工作区,选择告警 > 新建告警规则
- 信号类型选择日志,点击添加条件
- 输入对应指标的Kusto查询语句,设置评估周期与频率
- 关联已有的动作组(支持邮件、Teams、Azure函数等通知方式)
- 配置告警名称、严重级别与描述,完成创建
2. 常用告警的Kusto查询示例
账户级CPU使用率过高告警
ClusterMetrics | where TimeGenerated > ago(15m) | summarize avg(CpuUsagePercent) by AccountId | where avg_CpuUsagePercent > 80
- 评估周期:15分钟
- 频率:5分钟
- 触发条件:查询返回结果不为空
闲置集群告警
DatabricksClusterEvents | where EventName == "RUNNING" | extend IdleDuration = now() - TimeGenerated | where IdleDuration > 4h | summarize ClusterCount = count() by AccountId | where ClusterCount > 0
- 评估周期:4小时
- 频率:1小时
- 触发条件:查询返回结果不为空
作业失败率过高告警
DatabricksJobEvents | where TimeGenerated > ago(1d) | where EventName in ("JOB_RUN_FAILED", "JOB_RUN_SUCCEEDED") | summarize FailedCount = countif(EventName == "JOB_RUN_FAILED"), TotalCount = count() by AccountId | where (FailedCount * 100.0 / TotalCount) > 5
- 评估周期:1天
- 频率:1小时
- 触发条件:查询返回结果不为空
UC权限异常变更告警
UnityCatalogEvents | where TimeGenerated > ago(1d) | where EventName has_all ("PERMISSION", "CHANGE") | summarize ChangeCount = count() by AccountId | where ChangeCount > 10
- 评估周期:1天
- 频率:1小时
- 触发条件:查询返回结果不为空
3. 成本告警配置(纯Log Analytics实现)
若未启用Azure Cost Management联动,可通过集群规格与运行时长计算成本并告警:
ClusterMetrics | where TimeGenerated > ago(1d) | extend HourlyCost = case( ClusterInstanceType contains "Standard_DS3_v2", 0.8, ClusterInstanceType contains "Standard_DS4_v2", 1.6, ClusterInstanceType contains "Standard_E8s_v5", 3.2, 0 // 根据实际使用的实例类型补充成本 ) | summarize TotalDailyCost = sum(HourlyCost) by AccountId | where TotalDailyCost > 1000 // 替换为实际预算阈值
内容的提问来源于stack exchange,提问作者Saurabh Mehta
相关产品推荐
相关产品推荐

