Verification on CFGMON showed RestoreDrillStale could never fire: restore-drill has no last_schedule_time series until its first scheduled run (a manually triggered job does not set it), and an expression over a missing series yields nothing. BackupNotRunning shares the flaw — deleting a CronJob removes the very series the alert reads, so it goes quiet instead of firing. Fall back to kube_cronjob_created, but aggregate with max by(namespace, cronjob): 'or' matches including __name__, so a bare fallback would return BOTH series and the never-updating created timestamp would fire permanently once the window elapsed. Add BackupCronJobMissing so a vanished CronJob is itself the alert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
threadnet-operating
Der Betriebs-/Monitoring-Stack für den Operating-Host CFGMON: Prometheus,
Loki, Grafana, Alloy, Alertmanager und der CVE-Exporter — vollständig als Code,
ein docker compose up -d stellt ihn auf einem frischen Host wieder her.
→ monitoring/README.md ist die eigentliche
Betriebsanleitung (Deployment, Config-Fallen, Alerting, CVE-Pipeline).
Wo was liegt
| Pfad | Inhalt |
|---|---|
monitoring/ |
der Stack: Compose, Prometheus, Loki, Grafana, Alertmanager, Alloy |
monitoring/cve/ |
CVE-Exporter (Trivy-Scan → Prometheus-Metriken), ADR-0003 |
monitoring/grafana/ |
Datasources und Dashboards als Code |
Offene Punkte
Kein Backlog in diesem Repo. Offene Punkte sind Issues im
management-Projekt
(ADR-0005) —
sie betreffen meist mehrere Hosts, eine Liste je Repo würde auseinanderlaufen.
Für diesen Stack einschlägig sind unter anderem
#8 Remote-Write und Loki ohne Auth,
#9 Grafana-Credentials und
#10 Gitea-Backups off-host;
Bestand und Historie zum Host stehen in
hosts/cfgmon.md.
Kanonisch ist git.lab (ADR-0001,
ADR-0002).
Von außerhalb des Labs ist derselbe Stand über den Push-Mirror
sorb/management lesbar — dorthin
aber nie pushen, der Mirror überschreibt.