monitoring: Stack vollstaendig provisionierbar machen
- 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>
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# 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/<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`).
|
||||
- `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.
|
||||
Reference in New Issue
Block a user