diff --git a/docs/ALERTING_MAP.md b/docs/ALERTING_MAP.md index b9e96cd..b6b68b9 100644 --- a/docs/ALERTING_MAP.md +++ b/docs/ALERTING_MAP.md @@ -1,6 +1,6 @@ # Alerting Map -Stand: 2026-05-17 +Stand: 2026-05-23 Ziel: Alle problemrelevanten Homelab-Meldungen landen auf einem Handy-Topic. @@ -28,3 +28,4 @@ Ziel: Alle problemrelevanten Homelab-Meldungen landen auf einem Handy-Topic. - `NTFY_BASE_URL` zeigt standardmaessig auf `https://ntfy.kaleschke.info`. - Neue Problem-Alerts sollen `homelab-alerts` nutzen. - Erfolgsmeldungen sind optional und sollen nicht in `homelab-alerts` landen, ausser sie sind bewusst als Lebenszeichen gewuenscht. +- Blackbox-Endpoint-Alerts sollen bekannte WAN-/Provider-Sammelausfaelle zusammenfassen, damit kurze DSL-Reconnects keine ntfy-Flut pro Domain erzeugen. diff --git a/monitoring/README.md b/monitoring/README.md index 7b71a92..d10c29c 100644 --- a/monitoring/README.md +++ b/monitoring/README.md @@ -76,6 +76,11 @@ Prometheus wertet `monitoring/prometheus/alerts.yml` aus und sendet an `monitori Alertmanager routet alle Alerts an den ntfy-Bridge-Container. Der Bridge-Container postet nach `https://ntfy.kaleschke.info/homelab-alerts`. +Blackbox-HTTP-Alerts unterscheiden zwischen einem einzelnen kaputten Endpoint und einem externen Connectivity-Problem: + +- `HomelabExternalConnectivityDown` feuert, wenn mindestens 5 Public-Endpoints gleichzeitig fuer 8 Minuten nicht erreichbar sind. Das deckt WAN-, DNS- oder Provider-Ausfaelle ab, inklusive laengerer DSL-Reconnects. +- `HomelabEndpointDown` feuert fuer einzelne Endpoints erst nach 8 Minuten und wird unterdrueckt, solange der Sammelalert aktiv ist. Dadurch erzeugt ein Telekom-24h-Reconnect keine ntfy-Flut pro Domain. + Test: ```bash diff --git a/monitoring/prometheus/alerts.yml b/monitoring/prometheus/alerts.yml index 8240c78..22be026 100644 --- a/monitoring/prometheus/alerts.yml +++ b/monitoring/prometheus/alerts.yml @@ -1,9 +1,18 @@ groups: - name: homelab-availability rules: + - alert: HomelabExternalConnectivityDown + expr: sum(probe_success{job="blackbox-http"} == 0) >= 5 + for: 8m + labels: + severity: warning + annotations: + summary: "External connectivity appears down" + description: "At least 5 public homelab endpoints are unreachable. Likely WAN, DNS, or provider issue." + - alert: HomelabEndpointDown - expr: probe_success{job="blackbox-http"} == 0 - for: 2m + expr: (probe_success{job="blackbox-http"} == 0) unless on() (sum(probe_success{job="blackbox-http"} == 0) >= 5) + for: 8m labels: severity: critical annotations: @@ -40,10 +49,10 @@ groups: description: "Host memory usage is above 90%." - alert: HomelabTraefik5xx - expr: sum(rate(traefik_service_requests_total{code=~"5.."}[5m])) by (service) > 0 + expr: sum(increase(traefik_service_requests_total{code=~"5.."}[5m])) by (service) >= 5 for: 2m labels: severity: warning annotations: summary: "Traefik 5xx responses for {{ $labels.service }}" - description: "Traefik reports 5xx responses for {{ $labels.service }}." + description: "Traefik reports at least 5 5xx responses for {{ $labels.service }} within 5 minutes."