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

如何基于gauge指标job_status_gauge创建vmalert告警表达式?

vmalert告警表达式修正方案
  • 你用sum_over_time的思路不对,该函数是对时间窗口内的指标值求和,就算任务一直输出0,求和结果也会远小于1,但如果这段时间内指标完全无数据(任务没运行),sum_over_time会返回空值,vmalert不会触发告警。

  • 要实现“24小时内指标未出现值1则告警”的逻辑,应该用max_over_time函数,它能获取时间窗口内的指标最大值:

    max_over_time(job_status_gauge{jobName="someJob", haveError="false"}[24h]) < 1
    

    只要24小时内指标的最大值小于1,就说明从未出现过1,触发告警。

  • 补充场景:如果任务完全没运行,指标可能不会生成任何时间序列,这时上面的表达式也不会返回结果。可以结合absent函数覆盖这种情况:

    absent(job_status_gauge{jobName="someJob", haveError="false"}) OR max_over_time(job_status_gauge{jobName="someJob", haveError="false"}[24h]) < 1
    

    这样不管是指标存在但始终为0,还是指标不存在,都会触发告警。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:43:09