Die Herausforderung
Was wir geliefert haben
Eine Überwachung, die ohne Root leben lernen musste
Wir haben das Panel gebaut, um den eigenen Server zu sehen: Last, Platte, Netz, Erreichbarkeit der Websites, Fehler in den Logs und die Rechnungen der Cloud-Dienste. Dann fragten Kunden danach — und aus dem Panel wurde ein Produkt.
Das Schwierige waren nicht die Diagramme. Das Schwierige ist, dass die Hälfte der Kunden auf Shared Hosting sitzt, wo es weder Root noch Zugriff auf Systemzähler noch SSH für ein Update gibt.
Die obere Reihe beantwortet „ist alles in Ordnung?“ in einer Sekunde. Der Rest beantwortet „was genau“.
Zwei Hälften eines Panels
Sammler und Weboberfläche sind bewusst getrennt. Der Sammler läuft einmal pro Minute als Root — sonst sieht er weder die Systemzähler noch die Logs des Webservers noch die Domain-Konfigurationen. Die Oberfläche läuft als gewöhnlicher Benutzer und hat auf nichts Zugriff außer auf eine einzige Datenbank.
Dazwischen liegt SQLite. Metriken leben fünfunddreißig Tage, Fehler sieben. Das ist kein Archiv, sondern ein Fenster, das zeigt, was sich im letzten Monat verändert hat.
Last, die man ganz sieht
Prozessor, Speicher, Swap, Platte, Ein- und Ausgabe, IOPS, Netz, Prozessanzahl und PHP-Worker — alles auf einem Bildschirm, mit einem Zeitraum von dreißig Minuten bis dreißig Tagen. Wo es eine harte Grenze gibt, zeigt sie eine gestrichelte Linie: nicht „viel oder wenig“, sondern wie viel bis zur Decke bleibt.
Websites werden am DNS vorbei abgefragt
Jede Domain wird einmal pro Minute geprüft — die Anfrage geht aber direkt an die IP des Servers, nicht über das öffentliche DNS. Eine Kleinigkeit mit großen Folgen: Antwortet eine Website über IP, aber nicht über ihren Namen, liegt das Problem nicht an der Website, sondern am DNS-Eintrag. Das Panel unterscheidet das und sagt es offen.
Was sich nicht im Minutentakt ändert, wird getrennt und seltener geprüft: DNS alle Viertelstunde, Zertifikate alle sechs Stunden. Die Tabelle zeigt Antwortcode, Antwortzeit, Erreichbarkeit über vierundzwanzig Stunden, Zertifikatslaufzeit und Fehlerzahl.
Fehler ohne das Rauschen
Das Webserver-Log wird fortlaufend gelesen: das Panel merkt sich, wo es stehen geblieben ist, und liest die Datei nach einer Rotation nicht neu ein. Das Entscheidende liegt aber im Filter.
Absichtlich geschlossene Domains schreiben jede Minute „Zugriff verweigert“ ins Log — das ist der funktionierende Schutz, keine Störung. Einträge der eigenen Überwachung sind ebenfalls keine Fehler. Warnungen und Hinweise zählen nicht als Ausfall. Ohne diese Bereinigung wird die Fehlerliste zu einem Strom, in den niemand mehr hineinsieht.
Geld neben den Metriken
Ein Server fällt nicht nur durch Last aus — manchmal durch die Rechnung. Deshalb zeigt das Panel den Monatsverkehr als Anteil der Quote, die Speicherkosten mit Prognose bis Monatsende und die API-Kosten aufgeschlüsselt nach Modell. Die Prognose rechnet mit dem tatsächlichen Tempo, nicht mit dem Monatsdurchschnitt.
Eine öffentliche Seite getrennt vom Panel
Was der Betreiber sieht und was man Kunden zeigen kann, sind zwei verschiedene Dinge. Das Panel steht hinter einem Passwort, daneben liegt eine öffentliche Statusseite: neunzig Tage Erreichbarkeitsbalken, mittlere Antwortzeit und eine Zeile oben — läuft oder nicht.
Updates ohne Zugriff auf fremde Server
Wir haben kein SSH auf die Server der Kunden und sollen es auch nicht haben. Die Verbindung läuft deshalb andersherum: einmal täglich meldet sich die Installation bei unserem Panel, bestätigt ihre Lizenz und holt ein Update, falls eines vorliegt.
Die Lizenz ist signiert und wird bei jeder Anfrage offline geprüft, nicht durch eine Rückfrage bei uns — fällt unser Server aus, laufen die Kundenpanels weiter. Für einen längeren Ausfall ist ein Puffer von zwei Wochen vorgesehen: unsere Störung darf fremde Installationen nicht abschalten.
Kleine Updates installieren sich selbst, große auf Knopfdruck. Aus unserem Panel lässt sich eine Version erzwungen ausrollen, aber nur auf Installationen, deren Code bereits einen Empfänger für diesen Befehl enthält. Das ist eine ehrliche Grenze der Architektur, und sie ist in der Oberfläche sichtbar.
Projektablauf
Unter der Haube
Sammler
Zeitgesteuertes PHP als Root, Lesen der Systemzähler, Domainabfrage direkt an der IP, fortlaufendes Log-Lesen mit gemerkter Position. Speicher: SQLite — Metriken 35 Tage, Fehler 7.
Panel
Keine externen Bibliotheken: Diagramme werden serverseitig in SVG gezeichnet. Rollen für Administrator und Betrachter, die öffentliche Statusseite als eigene Schicht.
Produkt
Mit Ed25519 signierte Lizenzen, Offline-Prüfung bei jeder Anfrage, täglicher Check-in, zwei Wochen Puffer. Das Update holt sich die Installation selbst — SSH beim Kunden ist nicht nötig.
Das Ergebnis
Das Panel, das wir für uns selbst geschrieben haben, läuft heute auf acht Installationen, fünf davon auf Kundendomains. Es verhält sich auf einem VPS mit vollem Zugriff genauso wie auf Shared Hosting, wo die Hälfte der Metriken unerreichbar ist: im zweiten Fall zeigt es einfach nicht, was es nicht wissen kann, statt Nullen zu zeichnen.
Und die wichtigste Architekturentscheidung erwies sich als richtig: in der ganzen Zeit hat kein Update den Zugang zu einem fremden Server verlangt.



