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

如何在Stackdriver中创建基于日志缺失特定行的告警?监控GKE CronJob

当然可以实现!我来一步步教你怎么在Stackdriver(现在叫Google Cloud Logging/Monitoring)里设置这个告警

首先,核心思路是:找到你的CronJob正常运行时一定会产生的特征日志行,然后监控过去1小时内这些日志是否完全没出现,一旦没出现就触发告警通知。

第一步:精准定位CronJob的特征日志

你需要先确定你的GKE CronJob运行时会输出什么独特的日志——这是告警的关键,不能误判。举几个常见的例子:

  • 如果是CronJob创建Job的日志:找包含Created job my-cron-job-的行(因为CronJob生成的Job会带随机后缀)
  • 如果是Job启动容器的成功日志:找Successfully started container加上你的容器名
  • 如果是CronJob控制器的调度日志:找Starting execution of cronjob my-cron-job

比如,针对GKE集群里的CronJob,你可以用这样的日志查询(替换成你的集群和CronJob名称):

resource.type="k8s_cluster"
resource.labels.cluster_name="your-gke-cluster-name"
textPayload:"Created job"
textPayload:"your-cron-job-name"

先在Log Explorer里测试这个查询,确认正常运行时能返回结果,没运行时返回空。

第二步:创建告警策略

  1. 打开Stackdriver Monitoring(Google Cloud Monitoring),进入「告警」→「创建告警策略」
  2. 选择「日志」作为数据源,粘贴你刚才测试好的查询
  3. 设置告警条件:
    • 时间窗口选「过去1小时」
    • 统计方式选「计数」(也就是统计这段时间内匹配日志的数量)
    • 触发条件设为「计数 = 0」——意思就是过去1小时内完全没找到目标日志,说明CronJob没运行
  4. 配置通知渠道:添加你需要的通知方式(邮件、Slack、PagerDuty等),设置接收人/群组
  5. 给告警起个清晰的名字(比如「CronJob [你的任务名] 过去1小时未运行」),加上描述方便排查

一些避坑小贴士

  • 别只监控成功日志:如果CronJob运行但失败了,成功日志会缺失,但其实任务是跑了的。如果要监控「是否完全没启动」,就找CronJob创建Job的日志(不管后续成功失败,只要启动就会有这条)
  • 适配调度间隔:如果你的CronJob是每30分钟跑一次,那过去1小时至少应该有2条日志,这时可以把触发条件设为「计数 < 2」,避免偶尔延迟导致误告警
  • 测试告警:可以手动暂停CronJob,等1小时后看看是否收到通知,确认策略生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:13:41