Files
homelab-infra/monitoring/README.md
T

5.4 KiB

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:

/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:

INFLUXDB_BIND_IP=127.0.0.1

Wenn Home Assistant aus der VM schreiben soll, in Komodo fuer den monitoring-Stack setzen:

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:

curl -fsS http://alertmanager-ntfy-bridge:8080/healthz

Textfile-Metriken manuell aktualisieren:

bash /mnt/user/services/homelab-infra/services/posture-check/export-prometheus-textfile.sh