Zum Hauptinhalt springen Zur Navigation springen Zur Fußzeile springen
Begrenzte Zeit: Design Partner Programm — BUSINESS Plan auf Lebenszeit

Überwachung

Maschinengesundheit, Container, Dienste, Repositories und Diagnose überwachen.

Überwachung

Rediacc bietet integrierte Überwachungsbefehle, um Maschinengesundheit, laufende Container, Dienste, Repository-Status und Systemdiagnose zu inspizieren.

Maschinengesundheit

Einen umfassenden Gesundheitsbericht für eine Maschine abrufen:

rdc machine health --name server-1

Dieser meldet:

  • System: Laufzeit, Festplattennutzung, Datastore-Auslastung
  • Container: Anzahl laufender, gesunder und ungesunder Container
  • Speicher: SMART-Gesundheitsstatus
  • Probleme: Erkannte Probleme

Verwenden Sie --output json für maschinenlesbare Ausgabe.

Container auflisten

Alle laufenden Container über alle Repositories auf einer Maschine anzeigen:

rdc machine containers --name server-1
SpalteBeschreibung
NameContainer-Name
StatusLaufzeit oder Beendigungsgrund
ZustandLaufend, beendet usw.
GesundheitGesund, ungesund, keine
CPUCPU-Auslastung in Prozent
SpeicherSpeicherauslastung / Limit
RepositoryWelchem Repository der Container gehört

Optionen:

  • --health-check, Aktive Gesundheitsprüfungen an Containern durchführen
  • --output json, Maschinenlesbare JSON-Ausgabe

Die JSON-Ausgabe enthält vollständige Containerdetails (labels, port_mappings, image, id) sowie repository (aufgelöster Name), repository_guid (ursprüngliche GUID), domain und autoRoute.

Dienste auflisten

Systemd-Dienste im Zusammenhang mit Rediacc auf einer Maschine anzeigen:

rdc machine services --name server-1
SpalteBeschreibung
NameDienstname
ZustandAktiv, inaktiv, fehlgeschlagen
UnterzustandLaufend, beendet usw.
NeustartsNeustart-Zähler
SpeicherSpeicherauslastung des Dienstes
RepositoryZugehöriges Repository

Optionen:

  • --stability-check, Instabile Dienste markieren (fehlgeschlagen, >3 Neustarts, automatischer Neustart)
  • --output json, Maschinenlesbare JSON-Ausgabe

Die JSON-Ausgabe enthält vollständige Dienstdetails mit repository (aufgelöster Name) und repository_guid (ursprüngliche GUID).

Repositories auflisten

Repositories auf einer Maschine mit detaillierten Statistiken anzeigen:

rdc machine repos --name server-1
SpalteBeschreibung
NameRepository-Name
GrößeDisk-Image-Größe
EingebundenEingebunden oder ausgehängt
DockerDocker-Daemon läuft oder gestoppt
ContainerContainer-Anzahl
FestplattennutzungTatsächliche Festplattennutzung innerhalb des Repositories
GeändertLetzte Änderungszeit

Optionen:

  • --search <text>, Nach Name oder Einbindungspfad filtern
  • --output json, Maschinenlesbare JSON-Ausgabe

Die JSON-Ausgabe enthält name (aufgelöst) und guid (ursprüngliche GUID) und verschachtelt für jedes Repository die Arrays containers (mit domain, autoRoute, repository/repository_guid) und services.

Speichergesundheit

BTRFS-Fragmentierung und Reflink-Freigabe über alle Repositories auf einer Maschine prüfen:

rdc machine query --name server-1 --storage-health
SpalteBeschreibung
SizeGröße der LUKS-Image-Datei (wie das Repository aussieht)
UniqueTatsächlich einzigartige Daten, die nur diesem Repository gehören
SharedDatenblöcke, die über Repositories via BTRFS-Reflinks wiederverwendet werden (kostenlose Kopien)
ExtentsAnzahl der Dateiextents (höher = stärker fragmentiert)
FragFragmentierungsgrad: niedrig, mittel oder hoch

Die Zusammenfassung zeigt Gesamteinsparungen durch BTRFS-Reflinks:

14 repos, 224.3 GB virtual size
Unique data: 323.7 MB | Shared: 224.0 GB | Efficiency: 99.9%
  • Virtuelle Größe ist die Summe aller Repository-Image-Größen. Dies zeigt, wie die Repositories aussehen, zählt jedoch gemeinsam genutzte Blöcke via Reflinks doppelt.
  • Einzigartige Daten sind der tatsächlich verbrauchte Speicher durch Repository-Daten, die nur in einem Repository vorhanden sind. Dies ist das, was beim Löschen eines Repositories freigegeben wird.
  • Geteilt sind Daten, die über Repositories via BTRFS-Reflinks wiederverwendet werden. Das Forken eines Repositories erstellt Reflink-Kopien, die Blöcke teilen, bis eine Seite neue Daten schreibt; dann divergieren die Blöcke.
  • Effizienz ist der Prozentsatz der via Reflinks wiederverwendeten Daten. Höher ist besser. Eine Maschine mit vielen Forks desselben Parent-Repositories zeigt eine Effizienz nahe 100%.

Repositories mit hoher Fragmentierung und null gemeinsamen Blöcken können sicher mit btrfs filesystem defragment defragmentiert werden. Repositories mit gemeinsamen Blöcken sollten NICHT defragmentiert werden, da Defragmentierung gemeinsame Blöcke durch einzigartige Kopien ersetzt und damit die Festplattennutzung erhöht.

Der Scan läuft parallel und dauert je nach Anzahl und Größe der Repositories 5-15 Sekunden. Wenn --storage-health nicht angegeben ist, erscheint nach der Abfrageausgabe ein einzeiliger Hinweis als Erinnerung.

BTRFS-Scrub

Rediacc plant automatisch einen wöchentlichen BTRFS-Scrub auf jeder Maschine. Der Scrub liest jeden Datenblock im Datastore, prüft Prüfsummen und meldet Korruptionen. Dies erkennt stille Datenkorrumpierung (Bitrot), bevor sie sich auf Backups und Forks ausbreitet.

Der Scrub läuft jeden Sonntag um 02:00 Uhr Ortszeit (Maschinenzeitszone) mit einer zufälligen Verzögerung von bis zu 1 Stunde. Er läuft mit niedrigster I/O-Priorität (ionice idle, nice 19), sodass er laufende Dienste nicht beeinträchtigt. Auf SSD-gestützten Maschinen sind etwa 8 Minuten pro 100 GB Datastore zu erwarten.

Der Scrub-Timer wird automatisch beim ersten Daemon-Start nach einem renet-Upgrade installiert. Wenn sich die Scrub-Richtlinie in einer zukünftigen renet-Version ändert, aktualisiert sie sich beim nächsten Daemon-Start ohne Benutzereingriff.

Scrub-Status

Das Ergebnis des letzten Scrubs wird außerhalb des BTRFS-Volumes gespeichert (unter /var/lib/rediacc/scrub-last-result.json), sodass es auch bei Problemen mit dem Volume lesbar bleibt. Die Ausgabe von rdc machine query --system enthält ein scrub_status-Feld:

"scrub_status": {
  "last_run_human": "3 days ago",
  "status": "ok",
  "total_errors": 0,
  "uncorrectable": 0,
  "duration_seconds": 312
}
StatusBedeutung
okLetzter Scrub abgeschlossen ohne Fehler
never_runScrub noch nicht gelaufen (Timer gerade installiert)
overdueLetzter Scrub war vor mehr als 14 Tagen
errors_foundScrub hat Prüfsummen-Fehler gefunden (prüfen Sie die Zähler total_errors und uncorrectable)
failedScrub-Prozess mit Nicht-Null-Code beendet

Wenn uncorrectable größer als null ist, können die betroffenen Blöcke nicht automatisch repariert werden (Einzeldisk-BTRFS hat keine redundante Kopie). Stellen Sie das betroffene Repository aus dem neuesten Backup wieder her.

Manueller Scrub

Um einen Scrub sofort auszuführen (z.B. nach einem Stromausfall oder einer Festplattenmigration):

rdc term connect -m server-1 -c "sudo renet maintenance scrub --datastore /mnt/rediacc"

Das Ergebnis wird in derselben JSON-Datei gespeichert und ist sofort im nächsten rdc machine query --system sichtbar.

Vault-Status

Einen vollständigen Überblick über eine Maschine einschließlich Bereitstellungsinformationen erhalten:

rdc machine vault-status --name server-1

Dies liefert:

  • Hostname und Laufzeit
  • Speicher-, Festplatten- und Datastore-Auslastung
  • Gesamtzahl der Repositories, Anzahl der eingebundenen und laufenden Docker-Instanzen
  • Detaillierte Informationen pro Repository

Verwenden Sie --output json für maschinenlesbare Ausgabe.

Verbindung testen

Nur Cloud-Adapter. Beim lokalen Adapter verwenden Sie rdc term connect -m server-1 -c "hostname", um die Konnektivität zu prüfen.

SSH-Konnektivität zu einer Maschine überprüfen:

rdc machine test-connection --ip 203.0.113.50 --user deploy

Meldet:

  • Verbindungsstatus (Erfolg/Fehlgeschlagen)
  • Verwendete Authentifizierungsmethode
  • SSH-Schlüssel-Konfiguration
  • Status der Public-Key-Bereitstellung
  • Known-Hosts-Eintrag

Optionen:

  • --port <number>, SSH-Port (Standard: 22)
  • --save -m server-1, Verifizierten Host-Schlüssel in der Maschinenkonfiguration speichern

Diagnose (doctor)

Eine umfassende Diagnoseprüfung Ihrer Rediacc-Umgebung durchführen:

rdc doctor
KategoriePrüfungen
UmgebungNode.js-Version, CLI-Version, SEA-Modus, Go-Installation, Docker-Verfügbarkeit
RenetBinary-Standort, Version, CRIU, rsync, SEA eingebettete Assets
KonfigurationAktive Konfiguration, Adapter, Maschinen, SSH-Schlüssel
VirtualisierungPrüft, ob Ihr System lokale virtuelle Maschinen ausführen kann (rdc ops)

Jede Prüfung meldet OK, Warnung oder Fehler. Verwenden Sie dies als ersten Schritt bei der Fehlerbehebung jeglicher Probleme.

Exit-Codes: 0 = alles bestanden, 1 = Warnungen, 2 = Fehler.