Monitoring mit Portainer

Ich hatte während meiner Untersuchungen zur Systemstabilität festgestellt, dass der Raspberry Pi sehr unerfreulich reagiert, wenn ihm der Arbeitsspeicher ausgeht. Als eine Maßnahme habe ich Ressourcen-Limits definiert -- aber auf welche Werte soll man diese setzen? Um diese Frage zu klären habe ich Portainer installiert. Mit Portainer lassen sich unter anderem die Container-Statistiken grafisch darstellen, so ein bisschen wie der Task-Manager unter Windows.

Portainer selbst kann auch als Docker-Container installiert werden, bedarf aber einer etwas unüblichen Konfiguration: um mit dem Docker-Service auf dem Host "reden" zu können, muss der Socket als Volume eingebunden werden. Dies geschieht zum Beispiel mit dieser docker-compose.yaml:

services:
  app:
    image: portainer/portainer-ce:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - data:/data
    ports:
      - 9443:9443
volumes:
  data: {}

Nach dem Starten des Containers steht der Service auf Port 9443 (HTTPS) zur Verfügung. Zunächst muss ein Passwort für das Admin-Konto angelegt werden, danach wird die Umgebung ausgewählt, mit der Portainer arbeiten soll. In diesem Fall ist das "Get Started" auf der linken Seite. Wenn dies geschafft ist, stehen bereits Informationen über die laufenden Container, Netzwerke, Volumes usw. zur Verfügung.

Mit Portainer könnte man hier sogar neue Images runterladen, Container starten und ganze Stacks verwalten. Portainer eignet sich somit auch hervorragend für Docker-Einsteiger, die einfach mal etwas rumprobieren wollen, ohne sich mit der Syntax von Compose-Dateien oder ellenlangen Befehlszeilen auseinanderzusetzen.

In meinem Fall ist aber eher die Container-Statistik von Bedeutung, und dort allen voran der Bedarf an Arbeitsspeicher. Zu dieser Ansicht gelangt man z.B. über "Containers" -> portainer-app-1 -> "Stats". Zunächst ist die Anzeige leer, weil Portainer die Daten nur abfragt, solange die jeweilige Seite offen ist. Wie oft aktualisiert wird kann über eine Dropdown-Box ausgewählt werden, Default ist alle 5 Sekunden. Die Anzeige skaliert automatisch, d.h. wenn der überblickte Zeitraum größer wird rutschen die Stützpunkte der Kurven weiter zusammen. Durch Bewegen des Mauszeigers über einen solchen Stützpunkt (bzw. in die Fläche darunter) wird der genaue Messwert als Tooltipp eingeblendet.

Die Idee besteht nun darin, die Statistik eines bestimmten Dienstes aufzurufen, damit die Werte aufgezeichnet werden. Während die Werte fortgeschrieben werden, kann der Dienst ausgiebig "gequält" werden. Mit etwas Glück entsteht dabei ein Eindruck, wie hoch der Bedarf an Arbeitsspeicher in einem plausiblen Einsatzszenario ist. Diese Information kann dann als Grundlage für die Definition des Grenzwerts dienen (zum Beispiel beobachtetes Maximum * 1,5).

Von der Sache her könnte man so auch Obergrenzen für die CPU-Nutzung finden, aber ich hatte bisher nicht das Gefühl, dass hier ein Engpass besteht. Auf der anderen Seite kann ich mir jedoch gut vorstellen, dass die CPU-Nutzung viel stärker von anderen Betriebsparametern abhängt als der Speicherbedarf, und spätestens beim Umstieg auf einen anderen Rechner hinfällig ist (da in Prozenten ausgedrückt).

Portainer selbst werde ich nach der Versuchsphase wahrscheinlich wieder deaktivieren, weil der Dienst bereits ca. 45 MB Arbeitsspeicher verschlingt und für den normalen Betrieb keinen Zweck erfüllt. Umgekehrt ist er auch schnell wieder gestartet, wenn die Konfigurationsdateien erhalten bleiben. Für diese habe ich übrigens ein "normales" Volume auf dem Host-System gewählt, damit ich zum einen Portainer auch während der Backups laufen lassen kann, zum anderen fasst Portainer auch regelmäßig auf sein Volume und würde damit die Festplatte vom Einschlafen abhalten, wenn das Volume dort läge.

Update: leider scheint genau die Anzeige des Arbeitsspeichers in Portainer fehlerhaft zu sein. Die angezeigten Werte haben z.B. bei Filebrowser nichts mit dem zu tun, das docker stats berichtet: laut Portainer saugt sich Filebrowser bis zur definierten Grenze von z.B. 400 MB voll und verharrt dort, während das Kommandozeilen-Programm einen Anstieg von 25 auf 42 MB anzeigt, der nach einiger Zeit wieder zurück geht. Das macht Portainer für meinen Anwendungszweck im Moment leider vollkommen unbrauchbar. :-(


Zurück zur Hauptseite