Willkommen » Blog » Status-Panel — Server- und Website-Überwachung, die zum Produkt wurde
CRM Monitoring / Eigenprodukt

Status-Panel — Server- und Website-Überwachung, die zum Produkt wurde

Seganiko
Kunde Seganiko
Branche Monitoring / Eigenprodukt
Typ CRM
Verwendete Technologien PHP, SQLite, handgezeichnete SVG-Diagramme, Ed25519-Lizenzen, Update-Kanal, Profile für VPS und Shared Hosting
Kontext

Die Herausforderung

Überwachung dort betreiben, wo sie kein Recht hat zu existieren: auf Shared Hosting, ohne Root, ohne Systemzähler und ohne SSH, um ein Update auf den Server des Kunden zu bringen.
Unser Ansatz

Was wir geliefert haben

Ein Root-Sammler, getrennt von der Oberfläche, SQLite dazwischen, Diagramme von Hand in SVG. Domains werden direkt an der IP abgefragt, damit sich ein DNS-Ausfall von einem Website-Ausfall unterscheiden lässt, Logs werden fortlaufend durch einen Rauschfilter gelesen. Auf der Produktseite: signierte Lizenzen mit Offline-Prüfung, zwei Wochen Puffer und Updates, die sich die Installation selbst holt.
Projektdetails

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.

Status-Panel: Kacheln für Prozessor, Speicher, Platte und Erreichbarkeit der Websites

Die obere Reihe beantwortet „ist alles in Ordnung?“ in einer Sekunde. Der Rest beantwortet „was genau“.

Worum es geht

  • Produkt: Eigenentwicklung von Seganiko
  • Zweck: Überwachung eines Servers und seiner Websites
  • Installationen: acht, fünf davon auf Kundendomains
  • Umgebungen: VPS und Shared Hosting

Ziele

  • Den Zustand von Server und Websites so zeigen, dass er ohne Anleitung lesbar ist.
  • Dort laufen, wo Systemmetriken schlicht nicht verfügbar sind.
  • Kundeninstallationen ohne Zugriff auf deren Server aktualisieren.
  • Eine echte Störung vom Rauschen in den Logs unterscheiden.

Was drinsteckt

  • Ein Sammler, der zeitgesteuert als Root läuft.
  • Ein Panel ohne externe Bibliotheken: Diagramme werden in SVG gezeichnet.
  • Signierte Lizenzen und ein Update-Kanal.
  • Kostenmodule: Speicher, API, Datenverkehr.

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.

Warum keine Diagrammbibliothek: das Panel muss schnell und über eine schwache Verbindung öffnen, und jede Fremdbibliothek bedeutet ein paar hundert Kilobyte mehr und eine Abhängigkeit mehr, die sich eines Tages falsch aktualisiert. Alle Diagramme werden von Hand in SVG gezeichnet.

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.

Diagrammraster: Platte, Systemlast, PHP-Worker, Swap, IOPS, Netz

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.

Website-Tabelle: Antwortcode, Antwortzeit, Erreichbarkeit über 24 Stunden, DNS, SSL und Fehler

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.

Kostenblöcke: Cloudflare R2 und OpenAI API mit Prognose bis Monatsende

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.

Öffentliche Statusseite mit neunzig Tagen Erreichbarkeitsverlauf

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

1
Phase 1
Sammler
Systemmetriken, Domainabfrage am DNS vorbei, Zertifikatsprüfung, fortlaufendes Lesen der Logs mit Rauschfilter.
2
Phase 2
Panel
SVG-Diagramme ohne Bibliotheken, eingezeichnete Grenzen, Zeitraumwahl, Website-Tabelle und eine öffentliche Statusseite getrennt von der privaten.
3
Phase 3
Produkt
Signierte Lizenzen mit Offline-Prüfung, Update-Kanal, ein Mutterpanel mit Releases und Installationen, zwei Umgebungsprofile.
4
Phase 4
Shared Hosting
Ein Profil, in dem Systemmetriken schlicht fehlen, während Erreichbarkeit, DNS, Zertifikate und Fehler bleiben. Wird bei der Installation durch eine Probe erkannt.

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.


Ein ähnliches Projekt?

Lassen Sie uns Ihre Ziele besprechen.

Kostenloses Angebot anfordern →
Fragen?

Besprechen wir
Ihr Projekt.

Erstes Gespräch kostenlos und unverbindlich.