С promql вы не сможете получить то, что вы описываете.Более того, я не уверен, что время последнего графика всегда совпадает со временем начала работы;если где-то есть медлительность или перепланировка, например.
Вы можете следовать подходу, указанному в этой статье .В качестве альтернативы можно использовать метрики заданий для определения:
отметки времени последнего невыполненного задания за крончоб
- record: job_cronjob:kube_job_status_start_time:last_failed
expr: max((kube_job_status_start_time AND kube_job_status_failed == 1)
* ON(job,namespace) GROUP_LEFT
kube_job_labels{label_cronjob!=""}
) BY(label_cronjob)
отметки времени последнего успешного задания наcronjob
- record: job_cronjob:kube_job_status_start_time:last_suceeded
expr: max((kube_job_status_start_time AND kube_job_status_suceeded == 1)
* ON(job,namespace) GROUP_LEFT
kube_job_labels{label_cronjob!=""}
) BY(label_cronjob)
И оповещение в случае неудачи является более поздним, чем успешное:
- alert: CronJobStatusFailed
expr: job_cronjob:kube_job_status_start_time:last_failed
> job_cronjob:kube_job_status_start_time:last_suceeded
for: 1m
annotations:
description: '{{ $labels.label_cronjob}} last run has failed.'