Auslastung eines Containers unter Docker auslesen (CPU + RAM)

Zur Analyse und zur Überprüfung der Leistung unseres Docker-Servers kann es praktisch sein, die aktuelle CPU-Auslastung und den Arbeitsspeicher von einzelnen Containern auszulesen. Dafür bietet die beliebte Plattform für Containerisierung unter Linux ausgezeichnete Möglichkeiten für Abfragen über das Terminal (CLI).

Warum es sinnvoll sein kann, die Ressource-Nutzung von Containern auszulesen

In manchen Fällen kann es vorkommen, dass unser Hostsystem mit der Containerisierung-Plattform „Docker“ sehr ausgelastet ist oder manche Anwendungen und Dienste, die in einem isolierten Container laufen, nicht die erhoffte Performance aufweisen. Zugriffe erfolgen verzögert oder die Zuverlässigkeit lässt zu wünschen übrig. Dann müssen wir den Übeltäter ausfindig machen und den Container unter Docker optimieren oder einen einfachen Neustart durchführen. Wir können auf Befehle und Parameter zurückgreifen, die uns die aktuelle Auslastung von CPU und RAM in Prozent ausgeben. Mithilfe der CPU-Auslastung  

Inhaltsverzeichnis: Die RAM und CPU-Auslastung von einem Docker-Container im Terminal ausgeben

Überwachung und Überprüfung der RAM- und CPU-Auslastung von Docker-Containern mit dem Stats-Befehl

Unter Docker gibt es den Status-Befehl, mit dessen Hilfe wir bestimmte Statistiken, wie die RAM- und CPU-Auslastung eines laufenden Containers auslesen und über das Terminal ausgeben lassen können. Auf Wunsch können wir die Formatierung und die Ausgabe noch mit Parametern, die wir mit dem Befehl übergeben, individuell anpassen.

Mit dem folgenden Befehl öffnen wir eine Hilfsübersicht mit einer Auflistung von allen verfügbaren Unterbefehlen von Stats unter Docker:

docker stats --help

Mit diesem Basisbefehl können wir die Auslastung (CPU+RAM) von allen laufenden Containern unter Docker auflisten:

docker stats

Beispielausgabe:

CONTAINER ID NAME          CPU %  MEM USAGE / LIMIT MEM % NET   I/O           PIDS
cb40a0f56aba ubuntu/nginx 3.77% 74.9 MiB / 7.900GiB 0.95% 726B / 0B 3
bb3fc12db4a4 jellyfin 9.81% 203.4 MiB / 7.900GiB 2.57% 9.96KB / 0MB 5
709245430f57 nextcloud 6.07% 2819.6 MiB / 7.900GiB 35.69% 16M / 0MB 7
f6950c795d7e truenas-webui 2.98% 344.6 MiB / 7.900GiB 4.36% 1.02MB / 0MB 9

Wir haben auch die Möglichkeit, uns ausschließlich die Auslastung von gestoppten Container anzeigen zu lassen. Das ist in der Regel weniger sinnvoll für die Heranziehung der CPU- und Arbeitsspeicherlast, aber um grundlegende Informationen über alle Docker-Container zu erhalten, kann der Befehl praktisch sein.

Ausschließlich nicht laufende Container ausgeben:

docker stats --no-stream

Alle laufenden und gestoppten Docker-Container ausgeben:

docker stats --no-stream -a

Manchmal benötigen wir ausschließlich Informationen von einem bestimmten Container. Isolierte Informationen über die aktuelle Auslastung können wir mithilfe der Container ID abrufen:

docker stats 709245430f57

Beispielausgabe:

CONTAINER ID NAME      CPU % MEM USAGE  / LIMIT    MEM %  NET I/O   PIDS
709245430f57 nextcloud 6.07% 2819.6 MiB / 7.900GiB 35.69% 16M / 0MB 7

Den Status-Befehl mit Parametern für die Filterung von bestimmten Werten erweitern

Häufig wird der Status-Befehl bei der Erstellung von Skripts zur Überwachung von Diensten und Anwendungen, die in einem Container laufen, verwendet. In der Praxis eignet sich dann zwar meistens die Installation einer Container-Management-Software, wie Portainer oder Rancher, allerdings reicht es oftmals auch einfach und unkompliziert.

Wir können den Status-Befehl unter Docker auch mit Parametern und Argumenten erweitern, um nur bestimmte Informationen zu erhalten. 

Ausschließlich den Prozentsatz der aktuellen CPU-Auslastung ausgeben:

docker stats --format "{{.Container}} {{.CPUPerc}}" --no-stream

Beispielausgabe:

cb40a0f56aba 3.77%
bb3fc12db4a4 9.81%
709245430f57 6.07%
f6950c795d7e 2.98%

RAM- und CPU-Auslastung als Prozentsatz ausgeben:

docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemPerc}}"

Beispielausgabe:

CONTAINER ID  CPU %  MEM %
cb40a0f56aba 3.77% 0.95%
bb3fc12db4a4 9.81% 2.57%
709245430f57 6.07% 35.69%
f6950c795d7e 2.98% 4.36%

Abschließende Worte und Empfehlungen für die Überwachung von Container unter Docker

In diesem kleinen Tutorial habe ich euch den Status-Befehl für die Auflistung der Ressourcen-Auslastung für Container unter Docker mit Beispielen erklärt. Es kann nützlich sein, die Prozessor- und Speicherauslastung eines Docker-Containers im Auge zu behalten und die Containerumgebung zu überwachen.

Tipp: Möchten wir diese Werte in regelmäßigen Abständen automatisch abfragen und an einem bestimmten Ort für das Monitoring ausgeben, können wir ein Crontab erstellen und die Ausgabe mittels echo z. B. in eine HTML-Datei umlenken. Für größere Umgebungen würde ich dann aber zu einer vernünftigen Softwarelösung raten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert