diff --git a/monitoring/prometheus/alerts.yml b/monitoring/prometheus/alerts.yml index 6f563c8..ec600f0 100644 --- a/monitoring/prometheus/alerts.yml +++ b/monitoring/prometheus/alerts.yml @@ -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