Files
homelab-infra/monitoring
Micha 1a4929f9ef Pin monitoring stack images by digest
Reads live RepoDigests of each running monitoring container and
freezes the compose to the exact image manifest. Brings the
monitoring stack to the same digest-pin discipline as the
stateful tier-1 services. influxdb3-core was already pinned.

Affected: prometheus, alertmanager, alertmanager-ntfy-bridge,
blackbox-exporter, loki, promtail, grafana, node-exporter,
cadvisor (plus a second python:3.13-alpine for the bootstrap
dashboard importer).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 15:23:03 +02:00
..
2026-05-16 21:59:20 +02:00
2026-05-27 06:38:57 +02:00
2026-05-27 06:38:57 +02:00

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-05-25: 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, 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