Vierzig Maschinen. Eine Seite.
Ihre Server scannen sich selbst und melden sich. Die Platte, die zuerst voll ist, steht oben. Der Hub berührt die überwachten Maschinen nie.
docker pull ghcr.io/unalcakir28/spacetrace-hub:main| Host | Wurzel | Frei | Wachstum | Letzte 14 Tage | Voll in |
|---|---|---|---|---|---|
| db-02 | /var/lib/postgresql | 18.2 GiB / 500 GiB | +3.1 GiB/day | 6 Tagen | |
| nas | /volume1/backups | 402 GiB / 8.0 TiB | +41 GiB/day | 10 Tagen | |
| srv-01 | /srv | 120 GiB / 400 GiB | +1.4 GiB/day | 85 Tagen | |
| ci-runner-1 | /var/lib/docker | 96 GiB / 250 GiB | −2.0 GiB/day | — r² 0.11 | |
| build-03 | /home | 1.1 TiB / 2.0 TiB | — | — 2 Momentaufnahmen | |
| /var/mail | — Kapazität nicht erfasst | +180 MiB/day | — |
Gezeichnet, kein Bildschirmfoto. Das echte Dashboard ist serverseitig gerendertes HTML — ein selbst gehostetes Werkzeug, das erst ein npm install verlangt, bevor es eine Seite zeigt, ist ein schlechteres Werkzeug.
Einrichten
Zwei Zugangsdaten, eine Konfigurationsdatei und eine Zeile bei jedem Agenten. Mehr ist nicht aufzusetzen.
Admin-Token und Konfiguration anlegen
head -c 32 /dev/urandom | od -An -tx1 | tr -d ' \n' > admin-tokendb = "/var/lib/spacetrace-hub/hub.sqlite" listen = "0.0.0.0:8080" admin_token_file = "/run/secrets/admin-token" keep_per_target = 90
Als hub.toml speichern, dann docker compose up -d — oder die Binärdatei direkt starten und die Konfiguration prüfen, bevor sie ausliefert.
Anmelden und ein Agenten-Token erstellen
Den Hub öffnen, mit dem Inhalt von admin-token anmelden und auf der Seite Agents ein Token erstellen. Oder direkt über die Kommandozeile.
spacetrace-hub --config hub.toml token nasJeden Agenten darauf richten
spacetrace-agent --config /etc/spacetrace/agent.toml push https://hub.example.com --token <agent token>Das in den Zeitplan des Agenten aufnehmen — die Flotte füllt sich von selbst. Nochmaliges Senden ist harmlos: eine Momentaufnahme mit gleichem Host, gleicher Wurzel und gleicher Startzeit wird übersprungen.
TLS davorsetzen
Bevor der Hub über Ihr Netz hinaus erreichbar wird, TLS in einem Reverse Proxy terminieren. Das Sitzungscookie ist HttpOnly und SameSite=Strict; das Secure-Flag kommt daher, dass über HTTPS ausgeliefert wird.
Zwei Zugangsdaten, mit Absicht
Ein Token, das in einer Konfigurationsdatei auf einem NAS liegt, darf nicht der Schlüssel zum Inventar der ganzen Flotte sein. Ein Agenten-Token ist deshalb kein Dashboard-Zugang — und umgekehrt gilt dasselbe.
Agenten-Token werden als SHA-256-Hashes gespeichert; eine Kopie der Datenbank ist also kein Satz funktionierender Zugangsdaten. Ein Widerruf behält den Eintrag und macht das Token sofort unbrauchbar.
Beide Richtungen sind durch Tests abgedeckt.
| Zugangsdaten | Kann | Kann nicht |
|---|---|---|
| Agenten-Token | Eine Momentaufnahme senden | Dashboard oder API lesen |
| Admin-Token | Alles lesen, Token und Regeln verwalten | Momentaufnahmen senden |
Die Prognose ist die am stärksten zurückgehaltene Funktion
Sie ist am ehesten falsch — also die, die am häufigsten die Antwort verweigert. „Voll in N Tagen“ erscheint nur, wenn all das gilt.
Mindestens drei Momentaufnahmen über mindestens einen Tag
Zwei Punkte ergeben immer eine perfekte Gerade. Ein Tag ist der kürzeste Zeitraum, in dem ein Tagesmuster überhaupt sichtbar werden kann.
Eine lineare Anpassung mit r² ≥ 0,5
Plattennutzung ist häufig nicht linear. Eine Log-Rotation oder eine einmalige Wiederherstellung erzeugen bereitwillig eine Gerade, deren Steigung nichts bedeutet.
Eine tatsächlich gemessene Kapazität
Ohne die echte Größe des Dateisystems gibt es nichts zu füllen. Der Hub errät sie nicht aus der größten Summe, die er gesehen hat.
Eine Antwort innerhalb von zehn Jahren
„Voll in 4.000 Tagen“ ist Arithmetik, keine Information.
Wachstum und Prognose sind verschiedene Zahlen
Das Wachstum wird am gescannten Ordner gemessen. Die Prognose rechnet den freien Platz des Dateisystems mit dieser Rate hoch. Die Seiten sagen, was was ist, statt beides zu einer beruhigenden Zahl zu verschmelzen.
Warnungen
Schwellenwertregeln, per Webhook zugestellt. Drei Arten, jede mit einer Wartezeit, damit eine sich füllende Platte nicht zu einem Strom gleicher Nachrichten wird:
- Freier Platz unter einem Prozentwert
- Wachstum über einer Rate
- Eine Prognose, die in einen bestimmten Zeitraum fällt
Zustellung per E-Mail ist noch nicht gebaut, und es gibt einen Admin-Zugang statt Konten pro Person.
HTTP-API
| GET /health | — |
|---|---|
| POST /snapshots | Agenten-Token |
| GET /api/fleet | Admin-Token |
| GET /target?host=&root= | Admin-Token |
| GET /alerts | Admin-Token |
| GET /tokens | Admin-Token |
Warum es keine Aggregat-Tabelle gibt
Momentaufnahmen liegen unverändert in demselben Speicher, den Kommandozeile und Agent nutzen. Der Hub führt keine eigene Zusammenfassungstabelle — es gibt also nichts, was von den Momentaufnahmen abdriften könnte, aus denen es stammt.
Was ein Agent schickt, ist genau die Datei, die er lokal aufbewahrt: auf keiner Seite wird umgewandelt, und der Vergleich auf der Seite eines Ziels wird von demselben Code berechnet, der auf Ihrem Rechner läuft.