Docker-Logs analysieren

Container von oben

Auch Dienste in Containern muss der Administrator überwachen. Docker liefert die nötigen Hilfsmittel, um Loginformationen erst einmal aus Containern zu extrahieren. Der Workshop beschreibt, wie es von dort aus mithilfe von Fluentbit in die Loganalyse mit Elasticsearch und Kibana weitergeht.
Das Bereitstellen von Anwendungen ist eine zentrale Administrationsaufgabe und Fehler hierbei fallen Mitarbeitern wie Kunden unmittelbar auf. Eine wichtige ... (mehr)

In den letzten Ausgaben berichteten wir bereits ausführlich über das Thema Loganalyse mit dem ELK-Stack [1]. Jetzt geht es darum, die "EFK"-Variante dieses Software-Stacks für die Loganalyse in containerisierten Umgebungen zu nutzen.

Logging via Daemon

Bei virtuellen Maschinen fällt es vergleichsweise einfach, die Logs einzusammeln und auszuwerten. Sie brauchen nur einen passenden Log-Collector wie eines der Beats-Tools [2] auf dem System zu installieren. Das Tool versendet die Loginformationen dann an einen Parser wie Logstash.

In Umgebungen mit Containern wird das Ganze schon etwas schwieriger. Natürlich könnte der Administrator hier denselben Weg gehen. Das Dockerfile, das den Inhalt eines Containers beschreibt, bekäme dann die Installations- und Konfigurationsanweisungen für den Logshipper-Client, sodass dieser im Container neben der Applikation liefe. Das verkompliziert jedoch das Container-Setup und macht darüber hinaus die Container "fetter", da sie neben der eigentlichen Applikation auch noch den Logshipper betreiben müssten. Zum Glück geht es einfacher.

Der Docker-Daemon selbst bringt Funktionen für das Logshipping mit. Per Vorgabe sendet Docker seine eigenen und die Logs der Container an den Logdienst des Hosts. Über die Logoptionen kann Docker jedoch alle oder Logs einzelner Container an andere Ziele verschicken. Zu den Standard-Logtreibern gehören unter anderem Journald, Syslog, Files, Json oder Fluentd. Im ELK-Workshop haben wir bereits über Fluentd und seinen kleinen Bruder Fluentbit berichtet. Mit Hilfe dieser Dienste können Administratoren nun die Logs mehrerer Container qualifizieren und an eine Elasticsearch-Instanz zur weiteren Analyse schicken.

Plattform vorbereiten

Für den Workshop braucht es einen Docker-Host mit den aktuellen Tools "docker" und "docker-compose". Wir setzten für diesen Workshop eine Fedora-30-Distribution ein, aber Debian oder andere Derivate funktionieren ebenso. Wer möchte, kann das Ganze auch auf einem Windows-System mit dem Docker-Desktop für Windows laufen lassen. Das System benötigt dafür lediglich den Hyper-V-Dienst, in dem der Docker-Desktop automatisch eine Linux-VM für die Container erstellt. Alle beschriebenen Kommandos laufen dann in der PowerShell unter Windows.

Um Logs an Elasticsearch weiterzuleiten, bedarf es natürlich der passenden EK-Instanz – Elasticsearch und Kibana, in diesem Fall ohne "L" für Logstash. Dazu könnten Sie eine bestehende Instanz aus dem bereits erwähnten Workshop verwenden. In diesem Artikel setzen wir "EK" per Docker-Compose zusammen mit Fluentbit auf.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023