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:
@@ -1,6 +1,6 @@
|
||||
services:
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
image: prom/prometheus:v3.3.1
|
||||
container_name: prometheus
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
@@ -11,6 +11,9 @@ services:
|
||||
- '--storage.tsdb.path=/prometheus'
|
||||
- '--storage.tsdb.retention.time=45d'
|
||||
- '--storage.tsdb.retention.size=15GB'
|
||||
# Remote-Write-Receiver: k3s-Cluster und Matrix-Server pushen hierher.
|
||||
# ACHTUNG: Port 9090 ist oeffentlich und ohne Auth erreichbar --
|
||||
# per Hetzner Cloud Firewall auf die Absender-IPs einschraenken!
|
||||
- '--web.enable-remote-write-receiver'
|
||||
ports:
|
||||
- "9090:9090"
|
||||
@@ -18,20 +21,22 @@ services:
|
||||
- traefik
|
||||
|
||||
loki:
|
||||
image: grafana/loki:latest
|
||||
image: grafana/loki:3.7.1
|
||||
container_name: loki
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./loki/loki-config.yaml:/etc/loki/local-config.yaml:ro
|
||||
- loki_data:/loki
|
||||
command: -config.file=/etc/loki/local-config.yaml
|
||||
# Port 3100 oeffentlich: externe Alloys pushen Logs hierher.
|
||||
# Ebenfalls per Firewall auf bekannte Absender-IPs einschraenken.
|
||||
ports:
|
||||
- "3100:3100"
|
||||
networks:
|
||||
- traefik
|
||||
|
||||
alloy:
|
||||
image: grafana/alloy:latest
|
||||
image: grafana/alloy:v1.16.0
|
||||
container_name: alloy
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
@@ -50,14 +55,18 @@ services:
|
||||
- loki
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:latest
|
||||
image: grafana/grafana:12.0.0
|
||||
container_name: grafana
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_USER=${Grafana_ADMIN}
|
||||
- GF_SECURITY_ADMIN_PASSWORD=${Grafana_ADMIN_PW}
|
||||
# Greift nur beim allerersten Start mit leerem Volume.
|
||||
# Der Live-Admin ist davon unabhaengig (Passwortaenderungen in der UI).
|
||||
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER}
|
||||
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD}
|
||||
volumes:
|
||||
- grafana_data:/var/lib/grafana
|
||||
- ./grafana/provisioning:/etc/grafana/provisioning:ro
|
||||
- ./grafana/dashboards:/var/lib/grafana/dashboards:ro
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.docker.network=traefik"
|
||||
@@ -72,7 +81,7 @@ services:
|
||||
- traefik
|
||||
|
||||
node-exporter:
|
||||
image: prom/node-exporter:latest
|
||||
image: prom/node-exporter:v1.9.1
|
||||
container_name: node-exporter
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
|
||||
Reference in New Issue
Block a user