Flotten-Dashboard
Container-Überwachung über die gesamte Rogue-AI-Flotte
Gebaut von Rogue AI · Container-Überwachung der selbst gehosteten Flotte auf einer Oberfläche · Internes Werkzeug
Schrittweise mit der wachsenden Flotte gebaut; täglich als Betriebskonsole im Einsatz.
Das Problem
Die Flotte wuchs auf rund sechzig Container, verteilt über getrennte Apps, jede in ihrem eigenen Netzwerk und mit eigenen Ports, eigener Datenbank und eigenem Redis. Den Zustand zu prüfen hieß, pro App docker ps auszuführen und Logs zu verfolgen und die gesamte Port- und Subnetz-Karte im Kopf zu behalten. Es gab keinen einzigen Ort für die Frage 'was läuft, was kämpft, und wo liegt es?'
Was ich gebaut habe
Ein Single-Page-Dashboard, das die gesamte Flotte auf einen Blick zeigt: Karten pro App mit farbcodiertem Zustandsabzeichen, CPU- und Speicherbalken, Datenbankgrößen und einem aufklappbaren Log-Betrachter. Es gruppiert rohe Container wieder zu den Apps, zu denen sie gehören, macht die app-übergreifende Port- und Subnetz-Karte sichtbar und lässt den Betreiber direkt von der Karte aus neu starten, neu bauen oder ein Image ziehen, wobei Datenbank-Container von diesen Aktionen bewusst ausgenommen sind.
Architektur
Tech-Stack
Was zuerst gebrochen ist
- ▸
Das Lesen des Docker-Sockets ist ein privilegierter Vorgang und gehört deshalb nicht in die nutzerseitige Web-App. Wird er in einen eigenen Sidecar mit einer einzigen engen Aufgabe ausgelagert, bleibt der Schadensradius klein, falls das Frontend je kompromittiert wird.
- ▸
Eine einzige Zahl sagt mehr als eine Wand voller Diagramme. Meist lautet die einzige Frage 'ist alles grün?', also beantwortet das Dashboard genau das zuerst und hält das Detail pro Container einen Klick entfernt.
- ▸
Einige Dutzend Container bei jedem Seitenaufruf abzufragen reicht schon, um den Socket zu überlasten. Die Statistiken kurz im Sidecar zwischenzuspeichern und in einem festen Intervall zu erneuern hält den Host reaktionsfähig, ohne über den Zustand zu täuschen.
Ergebnis
Die täglichen Flotten-Kontrollen schrumpften von einer Reihe von Terminal-Befehlen pro App auf einen Blick auf eine Seite. Der privilegierte Docker-Zugriff bleibt in einem einzigen isolierten Sidecar versiegelt, statt über die beobachteten Apps verteilt zu sein, und routinemäßige Neustarts geschehen nun vom Dashboard aus, mit einem Protokoll darüber, wer was getan hat.
Ehrliche Grenzen
Dies ist ein internes Betriebswerkzeug, kein Produkt. Es läuft im lokalen Labor, um eine selbst gehostete Flotte zu beobachten, und wurde allein für einen Betreiber gebaut. Der ehrliche Kompromiss: Der Python-Sidecar hält privilegierten Zugriff auf den Docker-Socket. Selbst nur lesend eingebunden, hinter einem geteilten Geheimnis in einem isolierten Netzwerk und ohne externen Port, ist alles, was den Socket erreicht, praktisch root-nah auf dem Host. Dieses Risiko wird bewusst akzeptiert und eingedämmt, indem es aus der nutzerseitigen App herausgehalten wird, beseitigt ist es nicht.
