Oh wild, schon fast ein Jahr her, seitdem der letzte Beitrag entstanden ist! Asche auf mein Haupt. Dafür gibt’s dieses Mal etwas zum Anschauen: die CyberMap. Immer wieder, wenn ich Menschen erzählen möchte, was wir bei Frachtwerk tun, klingt insbesondere der Bereich Betrieb sehr abstrakt und trocken. Früher konnte man Besuch stolz wie Oskar durch gängeweise Server in Rechenzentren führen. Klar, die Server gibt es immer noch, nur gehören sie mittlerweile der Cloud. Wie lässt sich also eine Infrastruktur darstellen, die nur virtuell existiert?
Informationen & Darstellung
Bei der Erarbeitung der Visualisierung war mir wichtig, die unterschiedlichen Ebenen einzubeziehen:
- Sites (also alle Orte, an denen Server stehen)
- Networks (einzelne Netzsegmente, in die das Gesamtnetz aufgeteilt ist)
- Hosts (virtuelle Server, auf denen Docker oder K8s läuft)
- Stacks (da der Fokus auf docker-compose liegt)
- Container (als kleinste operative Einheit)
Außerdem sollte das Ergebnis zwar seriös, aber durchaus verspielt und nicht zu nüchtern daherkommen. Nüchterne Listen an Servern gibt es von Prometheus, Nagios, PRTG, Zabbix, checkmk, Cacti, Icinga und wie sie alle heißen schon genug – aber damit lassen sich Menschen auch nur bedingt begeistern…
Und eine gewisse Form der Live-Visualisierung wäre auch ganz nett, um ein Gefühl von lebendiger Infrastuktur zu bekommen.
Datenquellen
Bei Frachtwerk haben wir Informationen auf drei Ebenen: Infrastrukturkonfigurationen im LDAP, Live-Daten in Zabbix und natürlich die docker-compose-Informationen sowie docker stats auf den jeweiligen Hosts.
Da mir das Einsammeln von Daten von allen Hosts aus Sicht der IT-Sicherheit zu kritisch war (dafür hätte das Tool entweder SSH-Zugang zu allen Hosts gebraucht oder ich hätte ein Stück Software auf alle Hosts ausrollen müssen oder per ansible-Playbook einsammeln müssen), habe ich mich dazu entschieden, mich mit den Informationen aus Zabbix zu begnügen.
Ergebnis

Das Ergebnis ist eine kleine Tron-ähnliche Landschaft, die die ganze Infrastruktur (hier im Bild meine eigene Infrastruktur) zeigt. Hosts, Stacks und Container sind über „Straßen“ miteinander verbunden, auf denen animierte Leuchtkugeln die Menge des Traffics zeigen. Die Daten werden alle 60 Sekunden aktualisiert (schneller aktualisiert Zabbix sie auch nicht), die Höhe der Objekte zeigt die Art (Container am flachesten, Stacks höher, Hosts am höchsten).

Zusätzlich zu den Kugeln zeigen aufsteigende Partikel die CPU-Last der jeweiligen Objekte an. Die Farbe zeigt, ob in Zabbix Warnungen vorliegen – und falls ja, in welcher Warnstufe.

Einmal ganz rausgezoomt (Wolken müssen natürlich auch sein) zeigt sich schön organisch, wie eine digitale Infrastruktur aussehen könnte – und schon wird die ganze digitale Schönheit schon ein Stückchen greifbarer! 🙂
Größte Schwierigkeit dabei ist, eine sinnvolle automatische Anordnung hinzubekommen:
- Hosts sollten möglichst dicht an ihren Stacks und diese wiederum an ihren Containern sitzen
- unterschiedliche Sites sollten idealerweise als eigene „Inseln“ erkennbar sein, nicht zusammengehörende Objekte sollten sich also idealerweise etwas abstoßen
- Wege sollten sich möglichst wenig kreuzen
- Objekte dürfen nicht auf Wegen platziert sein
Entstanden ist pro Ebene jeweils ein Parameter, wie sehr Objekte dieser Ebene eigene Kind-Objekte abstoßen sowie ein Parameter, wie sehr nicht-verwandte Objekte abgestoßen werden sollen. Ein paar Versuche zeigen, dass die Wahl der Parameter extrem von der Größe der Infrastruktur abhängen…

Aus den ganzen Zabbix-Daten ist zusätzlich noch ein Reiter „Insights“ entstanden, außerdem habe ich noch einen Abgleich mit GHCR bzw. Docker Hub implementiert, um prüfen zu können, ob die verwendeten Images aktuell sind.
Aber wie sieht nun eigentlich eine Frachtwerk-Infrastruktur mit über 1.300 Containern aus? In etwa so:



Die Darstellung von individuellen Live-Partikeln wird in dieser Größenordnung gar nicht mehr so einfach – im nächsten Schritt hoffe ich sehr, dass der große Screen im Büro die Darstellung noch mitmacht… Aber grundsätzlich bin ich schonmal sehr zufrieden, Menschen dadurch ein bisschen mehr Einblicke in unsere Infrastruktur geben zu können! 🙂