- Grafana-Provisioning ergaenzt: Datasources (prometheus/loki) mit den bestehenden UIDs, damit alle Dashboards weiter funktionieren, sowie vier Dashboard-Provider passend zu den vorhandenen Ordnern. - 9 Dashboards aus der laufenden Instanz exportiert und bereinigt: id/version entfernt, hart kodierte und verwaiste Datasource-UIDs auf die provisionierten UIDs umgeschrieben. - Images von :latest auf feste Versionen gepinnt (Prometheus v3.3.1, Loki 3.7.1, Alloy v1.16.0, Grafana 12.0.0, node-exporter v1.9.1). - Alloy: Docker-Metadaten (container, compose_service, compose_project) als Loki-Labels via discovery.relabel. - .env-Variablen auf GRAFANA_ADMIN_USER/GRAFANA_ADMIN_PASSWORD vereinheitlicht, .env.example ergaenzt, .env bleibt ungetrackt. - prometheus.yml kommentiert (Remote-Write-Quellen, Fremd-Stack-Targets), toten auskommentierten Matrix-Job entfernt. - README mit Deployment, Struktur, externen Abhaengigkeiten und offenen Sicherheitspunkten (offene Ports 9090/3100/9100). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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
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/<ordner>/*.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). cadvisorundtraefikwerden gescraped, laufen aber in anderen Stacks (cadvisor: Portainer-Stackthread-net-git; beide haengen im externentraefik-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,9100sind 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_managerist deprecated; Retention-Enforcement laeuft aktuell nicht ueber den Compactor -- bei Gelegenheit auf Compactor-Retention umstellen.