diff --git a/docs/REPO_MAP.md b/docs/REPO_MAP.md index 52a9445..1f9b8d1 100644 --- a/docs/REPO_MAP.md +++ b/docs/REPO_MAP.md @@ -198,7 +198,7 @@ Secret-Werte werden hier nicht dokumentiert. Aufgefuehrt werden nur Variablennam | Uptime Kuma | `/mnt/user/appdata/uptime-kuma` | | Grafana/InfluxDB | `/mnt/user/appdata/grafana`, Grafana provisioning, `/mnt/user/appdata/influxdb3/data`, `/mnt/user/appdata/influxdb3/plugins` | | Loki/Alloy | `/mnt/user/appdata/loki/config`, `/mnt/user/appdata/loki/data`, `/mnt/user/appdata/alloy/config`, `/mnt/user/appdata/alloy/data` | -| Monitoring | named volumes `prometheus_data`, `loki_data`, `promtail_positions`, `grafana_data`, `influxdb3_data`, `influxdb3_plugins`; Provisioning im Repo unter `monitoring/grafana/provisioning` | +| Monitoring | named volumes `prometheus_data`, `loki_data`, `promtail_positions`, `grafana_data`; InfluxDB-Persistenz unter `/mnt/user/appdata/influxdb3/data` und `/mnt/user/appdata/influxdb3/plugins`; Provisioning im Repo unter `monitoring/grafana/provisioning` | | Hermes Agent | `/mnt/user/appdata/hermes-agent/data`, `/mnt/user/appdata/hermes-agent/ssh`, SSH private key path | | Komodo | `komodo_keys`, `/mnt/user/appdata/komodo/core`, `/mnt/user/appdata/komodo/mongo`, `/mnt/user/appdata/komodo/periphery`, `/mnt/user/services` | diff --git a/docs/RESTORE_MATRIX.md b/docs/RESTORE_MATRIX.md index e27d07f..6d55eb4 100644 --- a/docs/RESTORE_MATRIX.md +++ b/docs/RESTORE_MATRIX.md @@ -67,7 +67,7 @@ Sie ist die fachliche Ergaenzung zu `docs/DISASTER_RECOVERY.md`. | Grafana | abgeloester Altstand | `/mnt/user/appdata/grafana`, inklusive `provisioning/datasources/influxdb.yml` | `grafana.sqlite` | `grafana_admin_password.txt`, `grafana_influxdb_token.txt` | Traefik, Authelia, InfluxDB 3 Core | Nur als Rollback-/Migrationsreferenz behalten, wenn `monitoring/` produktiv ist | | InfluxDB 3 Core | abgeloester Altstand | `/mnt/user/appdata/influxdb3/data`, `/mnt/user/appdata/influxdb3/plugins` | dateibasierter Object Store | `influxdb3_admin_token.json` | internes `grafana_influx_internal` Netz | Nach Migration nicht blind loeschen; Datenuebernahme zu `monitoring-influxdb3-core` separat pruefen | | Loki / Alloy | abgeloester Altstand | `/mnt/user/appdata/loki/config`, `/mnt/user/appdata/loki/data`, `/mnt/user/appdata/alloy/config` | keine primaere DB; Loki-Dateispeicher mit 30 Tagen Retention | keine zusaetzlichen Secrets | `backend_net`, Docker socket read-only, Grafana | Durch `monitoring-loki`/`monitoring-promtail` ersetzen | -| Monitoring Stack | Rebuild + named volumes | `prometheus_data`, `loki_data`, `promtail_positions`, `grafana_data`, `influxdb3_data`, `influxdb3_plugins`; Provisioning aus `monitoring/grafana/provisioning` | Prometheus-TSDB, Loki-Dateispeicher und InfluxDB-Dateistore; Diagnose-/Langzeitdaten, keine Tier-1-Restore-Quelle | `monitoring_grafana_admin_password.txt`, `monitoring_grafana_influxdb_token.txt`, `influxdb3_admin_token.json` | `monitoring_net`, `monitoring_influx_lan`, `frontend_net`, Traefik, Authelia, Docker socket read-only fuer Promtail, Host-Mounts fuer node-exporter/cAdvisor | `https://monitoring.kaleschke.info` leitet zu Authelia; Prometheus Targets sind up; Grafana-Datasources `Prometheus`, `Loki` und `InfluxDB 3 Core` funktionieren | +| Monitoring Stack | Rebuild + named volumes + InfluxDB-Appdata | `prometheus_data`, `loki_data`, `promtail_positions`, `grafana_data`; InfluxDB unter `/mnt/user/appdata/influxdb3/data` und `/mnt/user/appdata/influxdb3/plugins`; Provisioning aus `monitoring/grafana/provisioning` | Prometheus-TSDB, Loki-Dateispeicher und InfluxDB-Dateistore; Diagnose-/Langzeitdaten, keine Tier-1-Restore-Quelle | `monitoring_grafana_admin_password.txt`, `monitoring_grafana_influxdb_token.txt`, `influxdb3_admin_token.json` | `monitoring_net`, `monitoring_influx_lan`, `frontend_net`, Traefik, Authelia, Docker socket read-only fuer Promtail, Host-Mounts fuer node-exporter/cAdvisor | `https://monitoring.kaleschke.info` leitet zu Authelia; Prometheus Targets sind up; Grafana-Datasources `Prometheus`, `Loki` und `InfluxDB 3 Core` funktionieren | | Hermes Agent | VM-seitig offen | `/mnt/user/appdata/hermes-agent/data`, `/mnt/user/appdata/hermes-agent/ssh` | keine eigene DB | Host-`.env` fuer Provider-/API-/Home-Assistant-Tokens, `hermes_runner_id_ed25519`, `HERMES_DASHBOARD_HOST` | separate Hermes-VM/Runner, Traefik, Authelia, `hermes_net` | NAS-Stack nicht starten, solange Runner-VM und echte `.env` fehlen | | ddns-updater | Rebuildbar | geringe Persistenzrelevanz | keine | Provider-Zugang ueber Stack ENV | Internetzugang | Update-Job laeuft | diff --git a/docs/ROLLBACK.md b/docs/ROLLBACK.md index 062ef76..58dde83 100644 --- a/docs/ROLLBACK.md +++ b/docs/ROLLBACK.md @@ -100,7 +100,7 @@ Der Zielzustand ist `monitoring/` als einziger Observability-Stack. Bei Probleme 1. `monitoring` in Komodo stoppen oder auf den letzten funktionierenden Commit zurueckgehen 2. bei Bedarf die abgeloesten Altstaende `ops/loki` und/oder `ops/grafana-influxdb` wieder starten -3. named volumes `prometheus_data`, `loki_data`, `promtail_positions`, `grafana_data`, `influxdb3_data` und `influxdb3_plugins` nicht blind loeschen +3. named volumes `prometheus_data`, `loki_data`, `promtail_positions`, `grafana_data` sowie `/mnt/user/appdata/influxdb3` nicht blind loeschen 4. Secrets `monitoring_grafana_admin_password.txt`, `monitoring_grafana_influxdb_token.txt` und `influxdb3_admin_token.json` nur nach bewusstem Entscheid entfernen 5. Home Assistant Writer erst wieder umstellen, wenn `curl -i http://192.168.178.58:8181/` erwartbar `401 Unauthorized` liefert 6. Grafana-Datasources `Prometheus`, `Loki` und `InfluxDB 3 Core` testen diff --git a/docs/SERVICE_CATALOG.md b/docs/SERVICE_CATALOG.md index 08c8b93..8d1c782 100644 --- a/docs/SERVICE_CATALOG.md +++ b/docs/SERVICE_CATALOG.md @@ -73,7 +73,7 @@ Secret-Werte sind nicht enthalten. Es werden nur Secret-Namen, Env-Key-Namen und | `monitoring-promtail` | Docker-Log-Collector fuer Monitoring-Loki | `monitoring/docker-compose.yml`, `monitoring/promtail/promtail-config.yml` | intern | Docker socket read-only, Docker json-file Logs, Loki | named volume `promtail_positions` | rebuildbar | nein | Dokumentierte Host-Observability-Ausnahme: `/var/run/docker.sock:/var/run/docker.sock:ro` und `/var/lib/docker/containers:ro`; keine Appdaten, nur Log-Discovery | | `monitoring-node-exporter` | Host-Metriken fuer Prometheus | `monitoring/docker-compose.yml` | intern `:9100` | Host `/proc`, `/sys`, `/` read-only, Prometheus | kein kritischer Zustand | rebuildbar | nein | Host-Observability-Ausnahme mit read-only Rootfs/Proc/Sys-Mounts | | `monitoring-cadvisor` | Container-Metriken fuer Prometheus | `monitoring/docker-compose.yml` | intern `:8080` | Docker/Host read-only Mounts, Prometheus | kein kritischer Zustand | rebuildbar | nein | Host-Observability-Ausnahme fuer Container-Metriken; keine direkten Ports | -| `monitoring-influxdb3-core` | InfluxDB 3 Core fuer Home-Assistant-/Ecowitt-Langzeitdaten | `monitoring/docker-compose.yml` | LAN `8181` je `INFLUXDB_BIND_IP`, keine Public URL | Monitoring-Grafana, Home Assistant Writer | named volumes `influxdb3_data`, `influxdb3_plugins` | Tier 3 | nein | LAN-only Host-Port-Ausnahme; `user: "0"` ist fuer den lokalen Object-Store-Pfad im named volume dokumentiert; `401 Unauthorized` beim Curl ohne Token ist erwarteter Reachability-Test | +| `monitoring-influxdb3-core` | InfluxDB 3 Core fuer Home-Assistant-/Ecowitt-Langzeitdaten | `monitoring/docker-compose.yml` | LAN `8181` je `INFLUXDB_BIND_IP`, keine Public URL | Monitoring-Grafana, Home Assistant Writer | `/mnt/user/appdata/influxdb3/data`, `/mnt/user/appdata/influxdb3/plugins` | Tier 3 | nein | LAN-only Host-Port-Ausnahme; `user: "0"` ist fuer den lokalen Object-Store-Pfad dokumentiert; uebernimmt den bisherigen InfluxDB-Daten-/Token-Katalog; `401 Unauthorized` beim Curl ohne Token ist erwarteter Reachability-Test | | `loki` | abgeloester Altstand fuer Container-Logs | `ops/loki/docker-compose.yml`, `ops/loki/config/loki-config.yml` | intern `http://loki:3100`, keine Public URL | `backend_net`, Grafana | `/mnt/user/appdata/loki/config`, `/mnt/user/appdata/loki/data` | Tier 3, transiente Logs mit 30 Tagen Retention | nein | Durch `monitoring-loki` ersetzen; nicht parallel betreiben, ausser bewusst zur Migration | | `alloy` | abgeloester Altstand fuer Docker-Log-Collection | `ops/loki/docker-compose.yml`, `ops/loki/config/config.alloy` | intern | Docker socket read-only, Loki, `backend_net` | `/mnt/user/appdata/alloy/config`, `/mnt/user/appdata/alloy/data` | rebuildbar | nein | Durch `monitoring-promtail` ersetzen; Socket-Ausnahme bleibt nur fuer aktive Collector relevant | | `hermes-gateway` | Hermes Agent Gateway/API intern | `ops/hermes-agent/docker-compose.yml` | intern `8642` auf `hermes_net` | SSH Runner (VM 192.168.178.143), LLM Provider, optional Home Assistant | `/mnt/user/appdata/hermes-agent/data`, SSH key path | Tier 3, Borg/Share | nein | NAS-Stack bleibt deaktiviert, solange die separate Hermes-VM/Runner-Seite nicht wiederhergestellt ist; kein Docker-Socket | diff --git a/monitoring/README.md b/monitoring/README.md index a819b5d..b71239d 100644 --- a/monitoring/README.md +++ b/monitoring/README.md @@ -26,6 +26,8 @@ Vor dem Deploy muessen diese Host-Dateien existieren: 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: @@ -44,8 +46,8 @@ INFLUXDB_BIND_IP=192.168.178.58 1. Secrets anlegen. 2. Alten `ops/loki`-Stack stoppen, wenn `monitoring-loki` und `monitoring-promtail` live gehen. -3. Alten `ops/grafana-influxdb`-Stack stoppen, wenn `monitoring-influxdb3-core` und `monitoring-grafana` live getestet sind. -4. `monitoring` via Komodo deployen. +3. Alten `ops/grafana-influxdb`-Stack stoppen, bevor `monitoring-influxdb3-core` den LAN-Port `192.168.178.58:8181` uebernimmt. +4. `monitoring` via Komodo deployen und `INFLUXDB_BIND_IP=192.168.178.58` erst setzen, wenn der Altcontainer den Port freigegeben hat. 5. Optionales Dashboard-Bootstrap-Profil einmalig ausfuehren. 6. Home Assistant Writer gegen `http://192.168.178.58:8181/` pruefen; `401 Unauthorized` ohne Token ist erwartbar. diff --git a/monitoring/docker-compose.yml b/monitoring/docker-compose.yml index 8b81216..7b08824 100644 --- a/monitoring/docker-compose.yml +++ b/monitoring/docker-compose.yml @@ -269,8 +269,8 @@ services: - --plugin-dir=/var/lib/influxdb3/plugins - --admin-token-file=/run/secrets/influxdb3_admin_token volumes: - - influxdb3_data:/var/lib/influxdb3/data - - influxdb3_plugins:/var/lib/influxdb3/plugins + - /mnt/user/appdata/influxdb3/data:/var/lib/influxdb3/data + - /mnt/user/appdata/influxdb3/plugins:/var/lib/influxdb3/plugins secrets: - influxdb3_admin_token networks: @@ -293,8 +293,6 @@ volumes: loki_data: promtail_positions: grafana_data: - influxdb3_data: - influxdb3_plugins: secrets: monitoring_grafana_admin_password: