Die Struktur der Netzwerk-Management-Cloud
Die Netzwerk-Management-Cloud besteht auf mehreren Komponenten. Jeder der Komponenten erfüllt eine Aufgabe für das Gesamtsystem.
Der / die Cloud-Server
Das Cloud-System ist die zentrale Komponente der Netzwerk-Management-Cloud und das "Herz" des Systems, indem der Benutzer seine Geräte überwacht, steuert und konfiguriert. Aktuell und für die ersten Tests basiert der Cloud-Server (ab jetzt einfach Server genannt) auf einem LAMP (Linux, Apache, Mysql, PHP)-System, dass Daten von den Clients (der/den Komponenten auf den zu überwachenden und zu konfigurierenden Systemen) empfängt, auswertet und anzeigt. Anders herum ermöglicht der Server es dem Benutzer, Einstellungen an den Clients zu verändern. Der Server hält diese Veränderungen für die Clients bereit, bis diese die Änderungen abrufen und auf dem/den Clients umsetzen.
Der Server wiederum besteht aus mehreren Komponenten:
- Einer MySQL- bzw. MariaDB-Datenbank, in der alle Daten abgelegt und bereitgestellt werden.
- Einem Apache2-Webserver, der die Cloud-Website bereitstellt.
- PHP-Scripte, die über den Apache2-Server angesprochen werden und die die empfangenen Daten (als JSON-Arrays und -Objekte) bearbeiten, in der SQL-Datenbank ablegen und dem Benutzer per MQTT über Websocktes in den Browser zu Anzeige injizieren.
- Einem Nginx-Proxy, der dynamische URLs generiert und Zugriffe auf diese URLs an Scripte und Programme im (Server-)System bzw. über verschlüsselte SSH-Känäle an den Client weiterleitet.
- Mosquitto als MQTT-System, über die die serverseitigen PHP-Scripte mit den Javascripten im Browser des Benutzers kommunizieren.
- Der Secure-Shell (SSH) mit der ich verschlüsselte Verbindungen erstelle.
- Einem Open-Source-Tool mit dem Namen ttyd, dass eine Shell im Browser erstellen kann.
Die Clientprogramme / Scripte, die in den zu überwachenden / zu konfigurierenden Geräten ausgeführt werden
Aktuell (und noch aus der Testphase) bestehen die Clientprogramme aus PHP-Scripten die über den Cron-Daemon zyklich gestartet werden. Diese Skripte senden, mit der Hilfe von Curl, Informationen an die serverseitigen PHP-Scripte oder rufen Konfigurationsänderungen aus dem Server ab. Dabei führen die Clientskripte aktuell noch Shell-Kommandos aus und bedienen sich an der Ausgabe der Shell-Befehle, welche sie filtern und in ein JSON-Format umarbeiten, um die Informationen an den Server zu übertragen.
Wenn die Client-Skripte neue Informationen an den Server senden, melden die serverseitigen Skripte dies per MQTT an den Mosquitto-Broker. Der Broker informiert dann die Browsersessions der Benutzer, die aktuell am Broker registriert sind und generiert die Updates für die DOM-Elemente in den Browsersessions.
Die Benutzerskripte der Cloud-Website, dargestellt und ausgeführt im Browser des Benutzers
Der Apache-Webserver liefert als Cloud-Server eine Website aus, in der diverse Javascripte aktiv sind. Für die DOM-Modifikation setze ich auf jQuery. Wenn der Benutzer die Cloud-Website aufruft wird er zur Anmeldung mit Benutzernamen und Passwort aufgefordert, wodurch eine WebSession erstellt wird. Nach erfolgreicher Anmeldung werden über AJAX-Abfragen die Daten zu dem Benutzer, dessen Projekten und Client-Geräten aus dem SQL-Server abgerufen und angezeigt. Gleichzeitig werden aus den aus der Datenbank gelieferten Projekt- und Gerätedaten Anfragen an den Mosquitto-Broker generiert und gestellt, damit die in der DOM-Ebene des Browsers angezeigten Informationen dann Updates erhalten, wenn diese bereitstehen.