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

如何为Dataproc集群创建Idle/Uptime指标并配置Stackdriver邮件告警

实现Dataproc集群闲置/运行时长告警的方案

刚好之前我也处理过类似的Dataproc定时任务场景,要搞定闲置1小时或运行超20/24小时的邮件告警,咱们可以通过Cloud Monitoring(原Stackdriver)的自定义指标和告警策略来实现,具体步骤如下:

一、配置运行时长告警

运行时长的计算可以基于集群的创建时间,结合Cloud Monitoring的指标推导来实现:

  1. 构建自定义运行时长查询
    每个Dataproc集群都自带createTime属性,我们可以用它来计算集群已运行的时长,示例查询如下:
fetch dataproc_cluster
| metric 'dataproc.googleapis.com/cluster/state'
| filter (metric.state = "RUNNING")
| align rate(1m)
| join
    (fetch dataproc_cluster
     | metadata
     | value create_time)
    using (resource.cluster_name)
| map add(
    duration(
        timestamp_sub(current_timestamp(), cast(value.create_time, "timestamp"))
    ).hours
  )
| condition val() > 20  # 这里替换成你需要的阈值,比如20或24小时

这个查询会筛选出所有处于运行状态的集群,并计算它们已经运行的小时数,当数值超过阈值时触发告警条件。

  1. 创建告警策略
  • 进入Cloud Monitoring的告警页面,新建告警策略,选择上面的自定义查询作为触发条件。
  • 配置通知渠道,添加你的邮件地址作为接收方。
  • 给告警起个清晰的名字,比如"Dataproc集群运行时长超20小时告警",方便后续识别。

二、配置闲置状态告警

闲置状态需要结合集群的作业状态和资源利用率来判断,这里提供两种实用的方式:

方式1:基于作业运行状态判断

如果你的集群在任务完成后不会有任何后台作业运行,可以直接通过监控作业状态来判定闲置:

fetch dataproc_cluster
| metric 'dataproc.googleapis.com/job/state'
| filter (metric.state != "RUNNING")
| align interval(1h)
| every 1h
| join
    (fetch dataproc_cluster
     | metric 'dataproc.googleapis.com/cluster/state'
     | filter (metric.state = "RUNNING"))
    using (resource.cluster_name)
| condition val() == 0  # 连续1小时没有运行中的作业

这个查询会找出持续1小时无运行作业的运行态集群,标记为闲置。

方式2:结合CPU利用率判断(更精准)

如果担心集群有后台进程占用少量资源,可以叠加CPU利用率条件,进一步精准识别闲置:

fetch dataproc_cluster
| metric 'dataproc.googleapis.com/cluster/cpu/utilization'
| filter (metric.state = "RUNNING")
| align mean(1h)
| filter val() < 0.05  # CPU利用率低于5%持续1小时
| join
    (fetch dataproc_cluster
     | metric 'dataproc.googleapis.com/job/state'
     | filter (metric.state != "RUNNING")
     | align interval(1h))
    using (resource.cluster_name)
| condition val() == 0  # 同时无运行中的作业

这种方式兼顾了低资源消耗和无作业运行两个维度,误判率更低。

  1. 创建闲置告警策略
  • 同样在Cloud Monitoring中新建告警策略,选择上述闲置判断的查询作为触发条件。
  • 配置邮件通知渠道,确保告警能及时推送到你的邮箱。

三、额外优化建议

  • 标签管理:给所有定时任务的Dataproc集群添加统一标签(比如task-type:daily-batch),配置告警时通过标签筛选目标集群,避免误告警其他非定时任务的集群。
  • 测试告警:手动创建一个测试集群,模拟闲置状态或运行超时时长,验证告警是否正常触发并发送邮件。
  • 自动清理(可选):如果需要,可以结合Cloud Functions或Cloud Scheduler,在告警触发后自动删除闲置或超时的集群,减少不必要的资源浪费。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:40:08