# Monitoring-Stack (Operating-Host) Prometheus + Loki + Grafana + Alloy + node-exporter fuer den Operating-Server (`CFGMON`). Vollstaendig provisioniert: Datasources und Dashboards liegen als Code in diesem Repo, ein `docker compose up -d` auf einem frischen Host stellt den kompletten Stack wieder her. ## Deployment ```bash cp .env.example .env # Werte setzen (nur beim allerersten Start relevant) docker network create traefik # falls noch nicht vorhanden docker compose up -d ``` ## Struktur | Pfad | Inhalt | |---|---| | `docker-compose.yml` | Stack-Definition, Images auf feste Versionen gepinnt | | `prometheus/prometheus.yml` | Scrape-Konfiguration | | `loki/loki-config.yaml` | Loki Single-Binary-Konfiguration, 90 Tage Retention | | `alloy/config.alloy` | Docker-Log-Collection -> Loki, node-exporter -> Prometheus | | `grafana/provisioning/` | Datasources (feste UIDs!) und Dashboard-Provider | | `grafana/dashboards//*.json` | Dashboards, je Unterordner ein Grafana-Ordner | ## Externe Abhaengigkeiten - **Remote-Write eingehend** auf `:9090`: k3s-Cluster und Matrix-Server pushen Metriken (`flux`, `kube_state_metrics`, `synapse`). - **Log-Push eingehend** auf `:3100` (Loki) von externen Alloys. - **Scrape ausgehend**: k3s-Host (`10.0.0.2:9100`), Pterodactyl-Host (`157.90.155.206:9100` + `:8080`). - `cadvisor` und `traefik` werden gescraped, laufen aber in **anderen** Stacks (cadvisor: Portainer-Stack `thread-net-git`; beide haengen im externen `traefik`-Netz). ## Dashboards aendern Provisionierte Dashboards sind in der UI editierbar (`allowUiUpdates: true`), aber die JSON-Datei im Repo ist die Quelle der Wahrheit: UI-Aenderungen muessen exportiert und committet werden, sonst gehen sie beim naechsten Datei-Update verloren. ## Offene Punkte / Sicherheit - `9090`, `3100`, `9100` sind auf der oeffentlichen IP ohne Auth erreichbar (Docker umgeht ufw). Per **Hetzner Cloud Firewall** auf die IPs der bekannten Absender einschraenken. - Pterodactyl-Host `157.90.155.206`: node-exporter und cadvisor antworten aktuell nicht (Targets down). - Loki `table_manager` ist deprecated; Retention-Enforcement laeuft aktuell nicht ueber den Compactor -- bei Gelegenheit auf Compactor-Retention umstellen.