Accountant: Inventar, where, Checkmk, Abrechnung

This commit is contained in:
br committed 2026-10-18 17:08:58 +02:00
1 parent 9f16148cde
commit dd93277750
59 files changed
+7522 -113

No files matched your search

+30 -1
View File
@@ -97,7 +97,7 @@ Ablage per `rsync` unter `sultan/releases/<version>/` (Binaries + `SHA256SUMS`);
### 6. Mit Docker Compose betreiben
Vorlagen: [deploy/compose/server](deploy/compose/server) (Ingress-Knoten neben Traefik) und [deploy/compose/agent](deploy/compose/agent) (Docker-Host).
Vorlagen: [deploy/compose/server](deploy/compose/server) (Ingress-Knoten neben Traefik), [deploy/compose/agent](deploy/compose/agent) (Docker-Host) und [deploy/compose/accountant](deploy/compose/accountant) (zentrales Inventar). Alle Einstellungen stehen in der `.env`; welche es gibt und was ihre Defaults sind, zeigt die jeweilige `.env.example`.
```bash
cp -r deploy/compose/server ~/sultan-server && cd ~/sultan-server
@@ -145,6 +145,8 @@ sultan agent
Der Agent liest die Container mit `traefik.enable=true` aus Docker und meldet sie an den Server. Wichtig: Der Ingress erreicht nur **veröffentlichte** Ports (`ports: "8081:80"`), nicht solche, die nur auf `127.0.0.1` veröffentlicht sind. Ohne Docker: `--docker-socket=none`. Über welche Adresse der Ingress den Host erreicht, ermittelt der Agent automatisch; für NetBird z. B. `--backend-interface=wt0`.
Für Inventar und Störfall meldet der Agent zusätzlich, was Docker ohnehin weiß – ohne weitere Labels: Compose-Projekt und -Verzeichnis, Startzeit und Health-Status je Container sowie FQDN, Betriebssystem, Docker-Version und NetBird-IP des Hosts. Den FQDN ermittelt er per DNS; abweichend: `--fqdn=webdocker11.lan.example.de`. Am Routing ändern diese Angaben nichts.
**Ohne Docker (Bare-Metal, LAMP …)** 🖥️ beschreibst du deine Dienste in `/etc/sultan.d/*.yaml`:
```yaml
@@ -179,6 +181,33 @@ curl -s http://127.0.0.1:8080/metrics/checkmk # Checkmk Local Checks: Vertr
Sultan meldet ablaufende Verträge, Mahnstufen, ausgefallene Knoten und Policy-Verstöße – jedes Ereignis genau einmal.
### Zentrales Inventar (Accountant) 📒
Mehrere Ingress-Server melden ihr Inventar an eine Zentrale: welche URL bei welchem Mandanten auf welchem Backend-Host (`<fqdn>:<port>`) und in welchem Compose-Verzeichnis läuft.
```bash
sultan accountant --public-url=https://accountant.example.de:8444 # Zentrale starten (Daten in ./accdata)
sultan accountant invite --payee=webproxy11 # Einladung für einen Ingress-Server
SULTAN_ACCOUNTANT_TOKEN=<einladung> sultan server … # auf dem Ingress-Server (nur beim ersten Start)
sultan accountant payee list # wer meldet, letzter Bericht
sultan accountant payee report --id=webproxy11 # letzter Bericht als JSON
sultan accountant where kunde-a.de # Störfall: Backend, Container, Compose-Verzeichnis, seit wann, wo vorher
sultan accountant routes --tenant=kunde-a # alle aktuellen Routen als Tabelle
curl -s http://127.0.0.1:8082/metrics/checkmk # Checkmk: je URL und je Ingress-Server
sultan accountant dump-checkmk # Checkmk-Text als Vorlage anpassen
```
Der Server meldet Änderungen innerhalb von 10 s und sonst stündlich. Ist der Accountant nicht erreichbar, läuft der Ingress unbeeinträchtigt weiter und meldet später.
**Abrechnung** 💶 – Kunden entstehen automatisch aus den Mandanten; abrechenbare Services markierst du mit dem Label `sultan.accountant.billing=<produkt>` oder per `assign`:
```bash
sultan accountant customer set --id=kunde-a --cycle=q --flat-rate=89,00 --group=extern
sultan accountant product add --id=olat --name=OLAT --class=billable --price=49,00
sultan accountant assign --host=olat.kunde-a.de --product=olat
sultan accountant billing --month=2026-10 --out=2026-10.csv # CSV für die Buchhaltung
```
### Hinweis- und Wartungsseiten 🚧
Fällt ein Dienst aus oder läuft ein Abo ab, zeigt Sultan statt eines Fehlers eine freundliche Seite (Deutsch und Englisch). Eigene Gestaltung: