# Monitoring Stack Zielzustand: ein zentraler Observability-Stack fuer KalliLab CORE. ## Enthaltene Dienste - `monitoring-grafana`: zentrale UI unter `https://monitoring.kaleschke.info` - `monitoring-prometheus`: Metriken mit 30 Tagen Retention - `monitoring-alertmanager`: Alert-Routing fuer Prometheus-Regeln - `monitoring-alertmanager-ntfy-bridge`: uebersetzt Alertmanager-Webhooks zu ntfy-Pushes - `monitoring-loki`: Container-Logs mit 30 Tagen Retention - `monitoring-promtail`: Docker-Log-Discovery ueber read-only Docker-Socket - `monitoring-node-exporter`: Host-Metriken - `monitoring-cadvisor`: Container-Metriken - `monitoring-blackbox-exporter`: externe HTTP-Erreichbarkeit als Uptime-Kuma-Ersatz - `monitoring-influxdb3-core`: InfluxDB 3 Core fuer Home-Assistant-/Ecowitt-Langzeitdaten Die alten Pfade `ops/loki` und `ops/grafana-influxdb` wurden am 2026-05-26 aus dem aktiven Repo entfernt. Rollback erfolgt bei Bedarf ueber Git-Historie, nicht ueber parallel gepflegte Compose-Verzeichnisse. Live-Stand 2026-06-01: die zehn `monitoring-*` Container laufen produktiv, die alten Container `grafana`, `influxdb3-core`, `loki` und `alloy` sind in Docker nicht mehr vorhanden. Uptime Kuma ist durch Blackbox Exporter, Prometheus-Alerts und das Dashboard `Homelab / Availability` abgeloest. ## Secrets Vor dem Deploy muessen diese Host-Dateien existieren: ```text /mnt/user/appdata/secrets/monitoring_grafana_admin_password.txt /mnt/user/appdata/secrets/monitoring_grafana_influxdb_token.txt /mnt/user/appdata/secrets/influxdb3_admin_token.json ``` Alle Dateien mit Rechten `600` anlegen. Werte niemals ins Git schreiben. `monitoring-influxdb3-core` uebernimmt bewusst `/mnt/user/appdata/influxdb3/data` und `/mnt/user/appdata/influxdb3/plugins` vom bisherigen Grafana/Influx-Stack, damit Home-Assistant-/Ecowitt-Historie und Token-Katalog erhalten bleiben. ## Stack Environment Default ist sicher lokal: ```env INFLUXDB_BIND_IP=127.0.0.1 ``` Wenn Home Assistant aus der VM schreiben soll, in Komodo fuer den `monitoring`-Stack setzen: ```env INFLUXDB_BIND_IP=192.168.178.58 ``` ## Migration 1. Secrets anlegen. Erledigt. 2. Alten `ops/loki`-Stack stoppen, wenn `monitoring-loki` und `monitoring-promtail` live gehen. Erledigt. 3. Alten `ops/grafana-influxdb`-Stack stoppen, bevor `monitoring-influxdb3-core` den LAN-Port `192.168.178.58:8181` uebernimmt. Erledigt. 4. `monitoring` via Komodo deployen und `INFLUXDB_BIND_IP=192.168.178.58` erst setzen, wenn der Altcontainer den Port freigegeben hat. Erledigt. 5. Alte Repo-Verzeichnisse `ops/loki` und `ops/grafana-influxdb` entfernen. Erledigt. 6. Optionales Dashboard-Bootstrap-Profil einmalig ausfuehren. 7. Home Assistant Writer gegen `http://192.168.178.58:8181/` pruefen; `401 Unauthorized` ohne Token ist erwartbar. ## Smoke-Tests - `https://monitoring.kaleschke.info` leitet zu Authelia. - Grafana-Datasources `Prometheus`, `Loki` und `InfluxDB 3 Core` testen erfolgreich. - Prometheus Targets: `prometheus`, `node-exporter`, `cadvisor`, `traefik`, `blackbox-http`. - Node Exporter Textfile Collector: `/mnt/user/services/posture-check/textfile/homelab.prom` wird vom Host-Skript `services/posture-check/export-prometheus-textfile.sh` befuellt. - Alertmanager ist erreichbar und sendet ueber `monitoring-alertmanager-ntfy-bridge` nach `https://ntfy.kaleschke.info/homelab-alerts`. - Loki zeigt Container-Logs mit Labels `container`, `compose_project`, `compose_service`. - InfluxDB 3 Core enthaelt die Datenbank `homelab`. ## Abloesestand - Dozzle bleibt abgeloest: `Homelab / Containers + Logs` ersetzt Live-Logs und Error-Rate. - Glances erst stoppen, wenn `Homelab / Host Overview` und `Homelab / Containers + Logs` fuer CPU, RAM, Disk, Network, Container-CPU und Container-RAM passen. - Uptime Kuma ist entfernt; `Homelab / Availability`, Blackbox Exporter und Prometheus-Alerts sind der Zielzustand fuer HTTP-Verfuegbarkeit. - Dashboard-Zielbestand: `Homelab / Availability`, `Homelab / Containers + Logs`, `Homelab / Host Overview`, `Homelab / Family Status`, `Traefik Official Standalone Dashboard`. ## Alerting Prometheus wertet `monitoring/prometheus/alerts.yml` aus und sendet an `monitoring-alertmanager`. 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. - `HomelabCertificateExpiresSoon` und `HomelabCertificateExpiresCritical` nutzen Blackbox TLS-Metriken fuer 21-/7-Tage-Warnungen. - `HomelabBorgBackupStale`, `HomelabBorgLastJobFailed`, `HomelabBorgLastJobCompletedWithWarnings` und `HomelabCriticalContainerDown` nutzen Host-Textfile-Metriken. Voraussetzung: `services/posture-check/export-prometheus-textfile.sh` laeuft regelmaessig auf dem Host, empfohlen alle 15 Minuten. Test: ```bash curl -fsS http://alertmanager-ntfy-bridge:8080/healthz ``` Textfile-Metriken manuell aktualisieren: ```bash bash /mnt/user/services/homelab-infra/services/posture-check/export-prometheus-textfile.sh ```