spacetrace
DE
Download

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
Binärdateien
spacetrace hubfleetWarnungenDas Terminal
7 Ziele · 6 melden sich · 1 seit 3 Tagen still
HostWurzelFreiWachstumLetzte 14 TageVoll in
db-02/var/lib/postgresql18.2 GiB / 500 GiB+3.1 GiB/day6 Tagen
nas/volume1/backups402 GiB / 8.0 TiB+41 GiB/day10 Tagen
srv-01/srv120 GiB / 400 GiB+1.4 GiB/day85 Tagen
ci-runner-1/var/lib/docker96 GiB / 250 GiB−2.0 GiB/day— r² 0.11
build-03/home1.1 TiB / 2.0 TiB— 2 Momentaufnahmen
mail/var/mail— Kapazität nicht erfasst+180 MiB/day
Eine leere Prognose ist eine Weigerung zu raten, keine fehlende Zahl. Die Seite des Ziels sagt, welche Bedingung nicht erfüllt war.

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.

  1. Admin-Token und Konfiguration anlegen

    head -c 32 /dev/urandom | od -An -tx1 | tr -d ' \n' > admin-token
    db = "/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.

  2. 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 nas
  3. Jeden 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.

  4. 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.

ZugangsdatenKannKann nicht
Agenten-TokenEine Momentaufnahme sendenDashboard oder API lesen
Admin-TokenAlles lesen, Token und Regeln verwaltenMomentaufnahmen 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 /snapshotsAgenten-Token
GET /api/fleetAdmin-Token
GET /target?host=&root=Admin-Token
GET /alertsAdmin-Token
GET /tokensAdmin-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.