为什么 Prometheus 会解决未解决的警报?
Why does Prometheus resolve unresolved alerts?
我在 prometheus 中有作业失败警报,它会在 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
这里是相关的pods,可以看出好像什么都解决不了
提前感谢您的帮助!
kube_job_status_failed
是表示给定时间失败作业数 pods 的量表。表达式 increase(kube_job_status_failed[30m]) > 0
提出以下问题:“最近 30 分钟内是否有新的故障?”如果没有,那就不是真的,即使旧的故障仍然存在于 Kubernetes API.
此方法的改进是 sum(rate(kube_job_status_failed[5m])) by (namespace, job_name) > 0
,加上警报管理器配置 不发送此警报的已解决通知。这是因为作业 pod 失败是一个无法逆转的事件 - 作业可以重试,但 pod 无法取消失败,因此解决仅意味着警报已“过期”或 pods 已被删除。
查看API服务器中记录的当前失败次数的表达式是sum(kube_job_status_failed) by (namespace, job_name) > 0
。基于此的警报可以“解决”,但只能通过从 API 中删除 Job
个对象(这并不一定意味着进程已成功...)
我在 prometheus 中有作业失败警报,它会在 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
这里是相关的pods,可以看出好像什么都解决不了
提前感谢您的帮助!
kube_job_status_failed
是表示给定时间失败作业数 pods 的量表。表达式 increase(kube_job_status_failed[30m]) > 0
提出以下问题:“最近 30 分钟内是否有新的故障?”如果没有,那就不是真的,即使旧的故障仍然存在于 Kubernetes API.
此方法的改进是 sum(rate(kube_job_status_failed[5m])) by (namespace, job_name) > 0
,加上警报管理器配置 不发送此警报的已解决通知。这是因为作业 pod 失败是一个无法逆转的事件 - 作业可以重试,但 pod 无法取消失败,因此解决仅意味着警报已“过期”或 pods 已被删除。
查看API服务器中记录的当前失败次数的表达式是sum(kube_job_status_failed) by (namespace, job_name) > 0
。基于此的警报可以“解决”,但只能通过从 API 中删除 Job
个对象(这并不一定意味着进程已成功...)