alerts: the silence alarms now cover the media restore probe too
A second monthly probe exists (restore-drill-media). Its failure was already covered - BackupJobFailed matches the prefix - but its silence was not, and silence is the failure this rule set was written against. RestoreDrillStale now matches the prefix instead of one exact name, and names the affected probe in the message: with two drills, "the restore probe has not run" no longer says which. BackupCronJobMissing gains the new cronjob, because a series that disappears is not an alert in Prometheus, it is quiet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F2Q4Ri8NGwyTZzScvKnWFM
This commit is contained in:
co-authored by
Claude Opus 5
parent
7b25b6e5ae
commit
2eec485bef
@@ -137,18 +137,20 @@ groups:
|
||||
annotations:
|
||||
summary: "Seit ueber 26h kein Lauf von {{ $labels.cronjob }} — CronJob ausgesetzt oder verschwunden?"
|
||||
|
||||
# Die monatliche Restore-Probe laeuft nicht mehr. Eine Sicherung, die nie
|
||||
# Die monatlichen Restore-Proben laufen nicht mehr - restore-drill (Datenbanken)
|
||||
# und restore-drill-media (Synapse-Medien). Praefix-Matcher und cronjob-Name in der
|
||||
# Meldung, sonst sagt der Alarm nicht, WELCHE Probe steht. Eine Sicherung, die nie
|
||||
# zurueckgespielt wurde, ist eine Vermutung — deshalb ist auch das Ausbleiben
|
||||
# der PRUEFUNG ein Alarm, nicht nur ihr Fehlschlag. 40 Tage = Monatsrhythmus + Puffer.
|
||||
# Bis zum ersten REGULAEREN Lauf gibt es keine last_schedule_time-Serie (ein
|
||||
# manuell ausgeloester Job setzt sie nicht) - ohne Fallback waere dieser
|
||||
# Alarm bis dahin blind. Gleiche max-by-Konstruktion wie oben.
|
||||
- alert: RestoreDrillStale
|
||||
expr: time() - max by (namespace, cronjob) (kube_cronjob_status_last_schedule_time{cronjob="restore-drill"} or kube_cronjob_created{cronjob="restore-drill"}) > 3456000
|
||||
expr: time() - max by (namespace, cronjob) (kube_cronjob_status_last_schedule_time{cronjob=~"restore-drill.*"} or kube_cronjob_created{cronjob=~"restore-drill.*"}) > 3456000
|
||||
labels:
|
||||
severity: warning
|
||||
annotations:
|
||||
summary: "Restore-Probe seit ueber 40 Tagen nicht gelaufen — Wiederherstellbarkeit ist wieder unbewiesen (Verfahren: notfallhandbuch)"
|
||||
summary: "{{ $labels.cronjob }} seit ueber 40 Tagen nicht gelaufen — Wiederherstellbarkeit ist wieder unbewiesen (Verfahren: notfallhandbuch)"
|
||||
|
||||
# Ein Backup-CronJob existiert gar nicht mehr (geloescht, Kustomization
|
||||
# entfernt, Namespace weg). Bei den Alarmen oben verschwindet dann die
|
||||
@@ -162,6 +164,7 @@ groups:
|
||||
or absent(kube_cronjob_info{namespace="matrix", cronjob="wikijs-backup"})
|
||||
or absent(kube_cronjob_info{namespace="authentik", cronjob="authentik-backup"})
|
||||
or absent(kube_cronjob_info{namespace="matrix", cronjob="restore-drill"})
|
||||
or absent(kube_cronjob_info{namespace="matrix", cronjob="restore-drill-media"})
|
||||
for: 30m
|
||||
labels:
|
||||
severity: critical
|
||||
|
||||
Reference in New Issue
Block a user