为 cron 作业收集了几个指标,不幸的是我不知道如何正确使用它们。
我想使用
kube_job_status_failed == 1
指标。我可以使用 job=~“+.myjobname.+“
的正则表达式来聚合 cron 作业的所有失败尝试。
这就是我陷入困境的地方。有没有办法计算给定时间段内不同标签的数量(=失败尝试的次数)?
或者我可以以相反的方式使用指标来检查给定时间段内是否有
kube_job_status_succeeded{job=~“+.myjobname+.“}==1
?
我觉得我已经很接近解决这个问题了,但我就是无法理解它。
这应该为您提供 1 小时内与作业名称匹配的失败作业数量:
count_over_time(kube_job_status_failed{job=~“+.myjobname+.“}==1 [1h])
我自己搜索了这个答案,发现
offset
符合我的目的。
kube_job_failed{job_name=~"^your_job_name.*", namespace="your_teamspace",} - kube_job_failed{job_name=~"^your_job_name.*", namespace="your_teamspace",} offset 6h > 2
我需要 6 小时,而不是 1 小时,并且在此时间范围内失败的作业数量大于 2。
好吧,大家,这是一种有点粗略的方法,您可以将其推广到只想计算初始值的仪表:
sum(kube_job_failed{condition="true"} unless kube_job_failed offset 1m)
这是假设刮擦间隔为 1m。如果您每 30 秒抓取一次 kube-state-metrics,这将导致双重计数。其工作原理是,我们使用
unless
进行左反连接,以删除 1 分钟前存在的范围向量中的所有指标。这样您就可以在第一次抓取指标时对指标进行一次计数。