spacetrace
TR
İndir

Kırk makine. Tek sayfa.

Sunucuların kendini tarar ve bildirir. En önce dolacak disk en üstte. Hub, izlediği makinelere hiç dokunmaz.

docker pull ghcr.io/unalcakir28/spacetrace-hub:main
İkili dosyalar
spacetrace hubfleetUyarılarTerminal
7 hedef · 6 bildiriyor · 1 3 gündür sessiz
SunucuKökBoşBüyümeSon 14 günDolma süresi
db-02/var/lib/postgresql18.2 GiB / 500 GiB+3.1 GiB/day6 gün
nas/volume1/backups402 GiB / 8.0 TiB+41 GiB/day10 gün
srv-01/srv120 GiB / 400 GiB+1.4 GiB/day85 gün
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 anlık görüntü
mail/var/mail— kapasite kaydedilmedi+180 MiB/day
Boş bir tahmin, eksik bir sayı değil; tahmin etmeyi reddetmek. Hedefin kendi sayfası hangi koşulun sağlanmadığını yazıyor.

Ekran görüntüsü değil, çizim. Gerçek pano sunucuda oluşturulan HTML — kendi sunucunda çalışan bir aracın sana bir sayfa göstermek için npm install istemesi, onu daha kötü bir araç yapar.

Kurulumu

İki kimlik bilgisi, bir yapılandırma dosyası ve her ajana eklenen bir satır. Ayağa kaldırılacak başka bir şey yok.

  1. Bir admin tokenı ve yapılandırma oluştur

    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

    hub.toml olarak kaydet, sonra docker compose up -d — ya da ikiliyi doğrudan çalıştır ve sunmaya başlamadan önce yapılandırmayı doğrula.

  2. Giriş yap ve bir ajan tokenı oluştur

    Hub'ı aç, admin-token içeriğiyle giriş yap ve Agents sayfasından bir token oluştur. Ya da komut satırından yap.

    spacetrace-hub --config hub.toml token nas
  3. Her ajanı ona yönlendir

    spacetrace-agent --config /etc/spacetrace/agent.toml push https://hub.example.com --token <agent token>

    Bunu ajanın zamanlamasına ekle, filo kendini dolduruyor. Yeniden göndermek zararsız: aynı sunucu, kök ve başlangıç zamanına sahip bir anlık görüntü varsa atlanıyor.

  4. Önüne TLS koy

    Hub'ı kendi ağının dışına açmadan önce TLS'i bir ters vekilde sonlandır. Oturum çerezi HttpOnly ve SameSite=Strict; Secure bayrağı HTTPS üzerinden sunmakla geliyor.

Bilinçli olarak iki kimlik bilgisi

Bir NAS'taki yapılandırma dosyasında duran token, bütün filonun envanterinin anahtarı olmamalı. Bu yüzden bir ajan tokenı pano kimlik bilgisi değil — tersi de geçerli.

Ajan tokenları SHA-256 özeti olarak saklanıyor, yani veritabanının bir kopyası çalışan kimlik bilgileri kümesi değil. İptal etmek kaydı koruyor ve tokenı anında çalışmaz hâle getiriyor.

İki yön de testlerle kapsanıyor.

Kimlik bilgisiYapabildiğiYapamadığı
Ajan tokenıAnlık görüntü göndermekPanoyu ya da API'yi okumak
Admin tokenıHer şeyi okumak, token ve kural yönetmekAnlık görüntü göndermek

Tahmin, en sıkı tutulan özellik

Yanlış olma olasılığı en yüksek olan o, bu yüzden cevap vermeyi en sık reddeden de o. “N gün içinde dolar” yalnızca bunların hepsi sağlanırsa görünüyor.

  • En az üç anlık görüntü, en az bir günü kapsayan

    İki nokta her zaman kusursuz bir doğru verir. Bir gün, günlük bir örüntünün hiç görünebileceği en kısa aralık.

  • r² ≥ 0,5 doğrusal uyum

    Disk kullanımı sıklıkla doğrusal değil. Bir log döndürmesi ya da tek seferlik bir geri yükleme, eğimi hiçbir şey ifade etmeyen bir doğru üretmekten memnun olur.

  • Gerçekten ölçülmüş bir kapasite

    Dosya sisteminin gerçek boyutu olmadan dolacak bir şey yok. Hub bunu, gördüğü en büyük toplamdan tahmin etmiyor.

  • On yıl içinde bir cevap

    “4.000 gün içinde dolar” aritmetiktir, bilgi değil.

  • Büyüme ve tahmin farklı sayılar

    Büyüme taranan klasör üzerinde ölçülüyor. Tahmin, dosya sisteminin kalan alanını o hızda ileriye yansıtıyor. Sayfalar hangisinin hangisi olduğunu söylüyor; ikisini tek bir rahatlatıcı rakama karıştırmıyor.

Uyarılar

Eşik kuralları, webhook ile iletiliyor. Üç tür, her birinde bir bekleme süresi — böylece dolan bir disk aynı mesajın akışına dönüşmüyor:

  • Boş alan bir yüzdenin altına düştüğünde
  • Büyüme bir hızın üstüne çıktığında
  • Tahmin belli bir ufkun içine girdiğinde

E-posta ile iletim henüz yapılmadı ve kişi başına giriş yerine tek bir admin kimlik bilgisi var.

HTTP API

GET /health
POST /snapshotsAjan tokenı
GET /api/fleetAdmin tokenı
GET /target?host=&root=Admin tokenı
GET /alertsAdmin tokenı
GET /tokensAdmin tokenı

Neden özet tablosu yok

Anlık görüntüler, komut satırının ve ajanın kullandığı aynı depoda değişmeden tutuluyor. Hub kendine ait bir özet tablosu tutmuyor; yani geldiği anlık görüntülerle uyumsuz hâle gelebilecek hiçbir şey yok.

Bir ajanın gönderdiği şey, yerel olarak sakladığı dosyanın aynısı; yani iki tarafta da hiçbir dönüştürme yok ve bir hedefin sayfasındaki karşılaştırma, dizüstünde çalışan aynı kod tarafından hesaplanıyor.