Zwei Verbesserungen am Daily Operations Report, ausgeloest durch den
versteckten immich_machine_learning-Ausfall (lief 2,3 Tage unhealthy,
weil der Report nur "unhealthy=1" zaehlte, ohne Name/Grund):
1. collect_container_state: neue Sektion "Unhealthy Container" listet jeden
unhealthy Container mit FailingStreak und letztem Healthcheck-Output.
So ist sofort sichtbar WELCHER Container und WARUM.
2. collect_image_freshness: neue Image-Age-Allowlist
(image-age-allow.patterns). Bewusst gepinnte, aber aktuelle/empfohlene
Images (immich_postgres = exakt Immichs Pin; blackbox-exporter v0.28.0 =
latest) werden mit Recheck-Datum von der Ueberalterungs-Warnung
ausgenommen. Nach Ablauf des Recheck-Datums greift die Ausnahme nicht
mehr -> erzwingt Neubewertung statt stillen Alterns. Top-10-Tabelle hat
jetzt eine Hinweis-Spalte (ueberaltert / bewusst gepinnt).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Behebt drei Befunde aus dem Operations-Report 2026-06-10:
- daily-status-report.sh: Zertifikate werden vor der Auswertung pro
Domain-Set dedupliziert; nur das laengstlaufende Cert zaehlt. Traefik
haelt waehrend der Erneuerung altes + neues Cert in acme.json, was
bisher eine falsche KRITISCH-Warnung (traefik.kaleschke.info 5 Tage)
ausloeste, obwohl das neue Cert 65 Tage Restlaufzeit hat.
- monitoring/blackbox-exporter: DNS von 1.1.1.1/8.8.8.8 auf AdGuard
(172.23.0.3 via dns_net) umgestellt. Externe Resolver lieferten die
WAN-IP, was Hairpin-NAT-Timeouts (9,5s) bei Probes von cloud/glances
verursachte (662 Fehler/Tag).
- log-noise.patterns: Fritz!Box-SOA-Fehler (AdGuard, RFC-1035-Verstoss)
und fehlendes grafana-amazonprometheus-datasource-Plugin als bekanntes
Rauschen klassifiziert (~1800 Zeilen/Tag).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Brings the previously untracked daily-status-report.sh and
send-operations-report-mail.sh into the repo, plus a refactor of the
log-noise pipeline:
- New helper services/posture-check/lib/normalize-noise-patterns.sh
strips comments, empty lines and trailing whitespace from
log-noise.patterns before grep -f sees it. A stray empty line in
the pattern file would otherwise have made grep -Eaif match every
hit and silently wipe the log highlights.
- log-noise.patterns is now documented per-pattern (Why / Re-check).
The Vaultwarden pattern is split: token/session noise stays as
noise; DNS/Connect/Resolve/reqwest/hyper errors are removed from
the noise set so real network signals stay visible.
- collect_log_highlights now reports a per-container and per-pattern
noise breakdown (Top N) and an escalation flag when any pattern
exceeds NOISE_ESCALATION_THRESHOLD (default 500). The flag is fed
into derive_report_status and the management summary.
- New shell tests under services/posture-check/tests/ verify the
normalize helper handles comments, empty lines, whitespace-only
lines, and that unknown error lines remain in the attention set.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>