© Liashko/Shutterstock.com
Entwickler Magazin
Nutzung des ELK-Stacks für zentralisiertes Logging mit Docker

Logging leicht gemacht

Logausgaben sind immer noch eine wichtige Quelle für Informationen über Anwendungen. Durch Docker entstehen sehr viele Container, die alle Loginformationen schreiben. Dabei geht schnell der Überblick verloren, wenn die Daten in unterschiedlichen Dateien landen. Genau dafür gibt es aber Werkzeuge, die helfen können - beispielsweise den ELK-Stack mit Elasticsearch zum Speichern der Daten, logstash für die Verarbeitung der Logs und Kibana für die interaktive Analyse.

Eberhard Wolff


Das Schreiben von Logdateien ist einfach zu implementieren: Jede Programmiersprache kann Informationen in Dateien oder die Standardausgabe schreiben. Die Informationen können sehr einfach ausgewertet werden. Solange nur die Informationen einzelner Server analysiert werden sollen, sind typische Werkzeuge wie zum Beispiel grep vollkommen ausreichend. Wenn das System aber komplexer wird und über mehrere Server verteilt ist, reicht dieser Ansatz nicht mehr aus. Die Daten liegen auf den Servern verstreut, und man wird sich kaum auf jedem Server einloggen wollen, um die Informationen zusammenzusammeln. Nur mit einer gemeinsamen Sicht auf die Daten aller Server können die Abläufe wirklich nachvollzogen werden. Durch die Nutzung von Docker wird dieses Problem sogar noch größer: Die Teile der Anwendung sind auf Docker-Container verteilt. Da die Container sehr leichtgewichtig sind, gibt es meistens auch deutlich mehr davon als klassische Server. Jeder Container gibt Informationen aus, und alle diese Informationen müssen gesammelt und ausgewertet werden.

Mit dem Befehl docker logs können die Logausgaben eines laufenden Docker-Containers ausgelesen werden. So gibt Docker Zugriff auf die Standardausgabe des Prozesses, der in dem Container läuft, was für einfache Systeme ausreichend ist. Mit diesem Mechanismus verringert Docker die Komplexität gegenüber Lösungen wie syslogd, die auf Ebene des Betriebssystems für die Verarbeitung von Logs bereitstehen. Daten aus der Standardausgabe auslesen ist der einfachste denkbare Ansatz. Aber das Korrelieren von Informationen über verschiedene Docker-Container wird trotzdem schnell zu einer Herausforderung. Außerdem können bei einem Produktionssystem die Docker-Container auf verschiedenen physischen Hosts verteilt werden. Das hätte natürlich zur Folge, dass man sich auf den verschiedenen Hosts einloggen und dort jeweils die Logdateien mit docker logs abholen müsste, was schlicht und ergreifend zu aufwändig wäre. Hinzu kommt, dass Logdateien nicht nur durchsucht werden sollen. Statistiken sind ebenso nützlich. Viele Informationen über den Zugriff auf Websites stammen letztendlich aus Logdateien. Ebenso sind grafische Auswertungen interessant. Letztendlich können Logdaten die Quelle für das komplette Reporting über die Anwendungen sein.

ELK-Stack als Lösung

Um Logdaten aus verschiedenen Systemen zu konsolidieren, gibt es verschiedene Lösungen. Schon lange am Markt ist Splunk [1]: Eine kommerzielle Lösung, die sich mittlerweile als gen...

Entwickler Magazin
Nutzung des ELK-Stacks für zentralisiertes Logging mit Docker

Logging leicht gemacht

Logausgaben sind immer noch eine wichtige Quelle für Informationen über Anwendungen. Durch Docker entstehen sehr viele Container, die alle Loginformationen schreiben. Dabei geht schnell der Überblick verloren, wenn die Daten in unterschiedlichen Dateien landen. Genau dafür gibt es aber Werkzeuge, die helfen können - beispielsweise den ELK-Stack mit Elasticsearch zum Speichern der Daten, logstash für die Verarbeitung der Logs und Kibana für die interaktive Analyse.

Eberhard Wolff


Das Schreiben von Logdateien ist einfach zu implementieren: Jede Programmiersprache kann Informationen in Dateien oder die Standardausgabe schreiben. Die Informationen können sehr einfach ausgewertet werden. Solange nur die Informationen einzelner Server analysiert werden sollen, sind typische Werkzeuge wie zum Beispiel grep vollkommen ausreichend. Wenn das System aber komplexer wird und über mehrere Server verteilt ist, reicht dieser Ansatz nicht mehr aus. Die Daten liegen auf den Servern verstreut, und man wird sich kaum auf jedem Server einloggen wollen, um die Informationen zusammenzusammeln. Nur mit einer gemeinsamen Sicht auf die Daten aller Server können die Abläufe wirklich nachvollzogen werden. Durch die Nutzung von Docker wird dieses Problem sogar noch größer: Die Teile der Anwendung sind auf Docker-Container verteilt. Da die Container sehr leichtgewichtig sind, gibt es meistens auch deutlich mehr davon als klassische Server. Jeder Container gibt Informationen aus, und alle diese Informationen müssen gesammelt und ausgewertet werden.

Mit dem Befehl docker logs können die Logausgaben eines laufenden Docker-Containers ausgelesen werden. So gibt Docker Zugriff auf die Standardausgabe des Prozesses, der in dem Container läuft, was für einfache Systeme ausreichend ist. Mit diesem Mechanismus verringert Docker die Komplexität gegenüber Lösungen wie syslogd, die auf Ebene des Betriebssystems für die Verarbeitung von Logs bereitstehen. Daten aus der Standardausgabe auslesen ist der einfachste denkbare Ansatz. Aber das Korrelieren von Informationen über verschiedene Docker-Container wird trotzdem schnell zu einer Herausforderung. Außerdem können bei einem Produktionssystem die Docker-Container auf verschiedenen physischen Hosts verteilt werden. Das hätte natürlich zur Folge, dass man sich auf den verschiedenen Hosts einloggen und dort jeweils die Logdateien mit docker logs abholen müsste, was schlicht und ergreifend zu aufwändig wäre. Hinzu kommt, dass Logdateien nicht nur durchsucht werden sollen. Statistiken sind ebenso nützlich. Viele Informationen über den Zugriff auf Websites stammen letztendlich aus Logdateien. Ebenso sind grafische Auswertungen interessant. Letztendlich können Logdaten die Quelle für das komplette Reporting über die Anwendungen sein.

ELK-Stack als Lösung

Um Logdaten aus verschiedenen Systemen zu konsolidieren, gibt es verschiedene Lösungen. Schon lange am Markt ist Splunk [1]: Eine kommerzielle Lösung, die sich mittlerweile als gen...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang