Docker Monitoring - Überwachung des Docker Hosts

Aus Laub-Home Wiki

Wenn Docker mal mit ein paar Containern läuft, möchte man natürlich auch wissen was denn der Host, auf denen die ganzen Container, Stacks oder Compose Projekte laufen, so macht. Geht es ihm gut, swappt er, läuft die CPU unter Vollast und wenn ja, wer ist dafür verantwortlich. Das genügen Festplattenplatz vorhanden ist, ist ebenfalls sehr wichtig. Ich versuche hier mal ein paar Werkzeuge zusammenzutragen, mit denen man den Docker Host Monitoren kann. Manuell wie Automatisch.

Manuelle Überwachung

Fangen wir einmal mit dem Docker Host selbst an. hier kommt man um das Tool top oder htop nicht herum:

Htop installiert man normalerweise nach. Unter Debian/Ubuntu:

apt install htop

gestartet werden die beiden tools dann so:

# Starten von top
top
# Starten von htop
htop

beide Tools zeigen die aktuelle Auslastung des Systems an. Die Prozesse die oben angezeigt werden, sind die, die gerade Rechenleistung benötigen. Die Load zeigt an, wie ausgelastet das System momentan, vor 5 Minuten und vor 15 Minuten ist, bzw. war. Ein weiterer wichtiger Faktor für Performance ist die RAM und SWAP Auslastung. Im besten Fall ist der SWAP leer. Ist aber auch meist normal, dass ein paar Megabyte im Swap liegen. Hier kann man ggf, den Swappiness-Wert ein wenig anpassen um dies zu verringern oder gar ganz abzuschalten. Die CPU Auslastung sollte ebenfalls nicht am Daueranschlag sein. Beide Tools kann man mittels q für "quit" wieder verlassen.

Als nächstes schauen wir uns die Arbeitsspeicher und Swap Auslastung mal genauer an:

free -lh

Auch hier gilt, am besten kein Swap belegt und ein paar MB frei bei free.

Nun schauen wir mal die Festplatten Auslastung an, mit df:

df -h

Hier sollte bei einem gesunden System überall mindestens 80% frei sein. Möchte man die Übeltäter herausfinden, die die Festplatte gefüllt haben, dann hilft dieser Artikel weiter:

Nun kommen wir zu Docker selbst. Docker bringt einige Werkzeuge mit, mit denen man sich gut und schnell einen Überblick verschaffen kann.

Zunächst wollen wir wissen welche Docker Container laufen und welche ausgeschaltet sind.

docker ps -a

Mit dem folgenden Befehl kann man sich anzeigen lassen wieviel Resourcen, ähnlich wie top, jeder einzelne, laufende Docker Container auf dem System verbraucht.

docker stats --no-stream

lässt man den Schalter --no-stream weg, dann ist es eine Live Analyse. Ich nutze allerdings den Schalter immer, da die Live Ausgabe irgendwie immer ruckelt.


Kommen wir zu den Docker Volumes. Die Verfügbaren Volumes zeigt der folgende Befehl an:

docker volume ls

Möchte man wissen was in den Einzelnen Containern los ist, kann man sich die Logausgabe anschauen

docker logs CONTAINERNAME

Möchte man die Festplattenauslastung von Docker wissen

docker system df

Hier kann man sich sozusagen das /var/log/syslog des Docker Hosts anschauen:

docker system events

und zu guter Letzt alle Informationen zum Docker Host:

docker system info

Automatische Überwachung - Monitoring Tools

Nun möchte man natürlich nicht den Ganzen Tag vor der Konsole sitzen und die Befehle einhacken. Dafür gibt es einige Monitoring Tools für Docker. Ich gehe im Folgenden Artikel auf eines der beliebtesten ein, Prometheus.