1

我在普罗米修斯中有工作失败警报,它会在 2 小时后自行解决我收到警报实际上没有解决的警报。普罗米修斯是怎么解决的?请注意,这只发生在此工作警报中。

工作提醒:

  - alert: Failed Job Status
    expr: increase(kube_job_status_failed[30m]) > 0
    for: 1m
    labels:
      severity: warning
    annotations:
      identifier: '{{ $labels.namespace }} {{ $labels.job_name }}'
      description: '{{ $labels.namespace }} - {{ $labels.job_name }} Failed'

警报示例:

At 3:01 pm
[FIRING:1] Failed Job Status @ <environment-name> <job-name>
<environment-name> - <job-name> Failed

At 5:01 pm
[RESOLVED]
Alerts Resolved:
- <environment-name> - <job-name>: <environment-name> - <job-name> Failed

这是相关的 pod,因为可以看出似乎没有任何问题得到解决。

脚本在这里

提前感谢您的帮助!

4

1 回答 1

2

kube_job_status_failed是一个指标,表示在给定时间失败的作业 pod 的数量。该表达式increase(kube_job_status_failed[30m]) > 0提出问题:“过去 30 分钟内是否有新的故障?” 如果没有,即使 Kubernetes API 中仍然存在旧故障,它也不会是真的。

这种方法的一个改进是sum(rate(kube_job_status_failed[5m])) by (namespace, job_name) > 0,加上一个警报管理器配置,以不发送此警报的已解决通知。这是因为作业 pod 故障是一个无法逆转的事件 - 作业可以重试,但 pod 不能取消失败,因此解决方案仅意味着警报“过期”或 pod 已被删除.

查看 API 服务器中记录的当前失败次数的表达式是sum(kube_job_status_failed) by (namespace, job_name) > 0。基于此的警报可以“解决”,但只能通过Job从 API 中删除的对象(这并不一定意味着进程已成功......)

于 2021-11-05T14:09:41.680 回答