Docker-Log-Plugin, Loki und Docker-Container-Protokollierung

Docker-Log-Plugin, Loki und Docker-Container-Protokollierung
20/12/2023

Heutzutage spielt die Containerisierung eine Schlüsselrolle bei der schnellen und effizienten Bereitstellung von Anwendungen. Mit diesem wachsenden Trend kommen neue Herausforderungen, und eine davon ist die effiziente Überwachung und Protokollierung von Docker-Containern. In diesem Blogbeitrag konzentrieren wir uns auf eine der bekanntesten Lösungen für das Logging in Containern - das Loki-Plugin für Docker.

Warum wird in Docker protokolliert?

Die Protokollierung ist nicht nur für die Diagnose und Fehlererkennung wichtig, sondern auch für die Leistungs- und Sicherheitsüberwachung. In Docker-Containern, in denen Anwendungen isoliert ausgeführt werden, ist das Protokollmanagement entscheidend für die Aufrechterhaltung von Transparenz und Betriebseffizienz.

Loki: Revolutionäre Protokollierung für Docker

Loki, entwickelt von Grafana, bietet einen innovativen Ansatz für das Container-Logging. SeineFähigkeit, Logs von Docker-Containern effizient zu sammeln und zu speichern,bringt verbesserte Skalierbarkeit und einfaches Log-Management in moderneContainer-Umgebungen.

In den folgenden Abschnitten gehen wir näher auf die Installation desLoki-Plugins, die Konfiguration des Log-Treibers in der docker-compose.yml und praktische Beispiele ein, wie Loki die Analyse und Arbeit mit Logsvereinfacht. Entdecken wir gemeinsam, wie Loki das Logging vonDocker-Containern effizienter und übersichtlicher macht.

Was ist Loki und seine Vorteile

Loki ist ein Open-Source-System zum Sammeln, Speichern und Abrufen von Logs in Container-Umgebungen. Loki wurde im Hinblick auf geringe Ressourcenintensität und Effizienz entwickelt und stellt eine Alternative zu herkömmlichen Log-Management-Systemen dar. Seine Integration mit Docker ermöglicht eine effiziente Protokollverfolgung und -analyse direkt von der Containerbasis aus.

Die Vorteile von Loki für die Docker-Protokollierung:

  • Skalierbarkeit: Loki ist für Skalierbarkeit optimiert, d.h. es kann problemlos eine große Menge an in Containern erzeugten Protokollen verarbeiten.
  • Effizienz der Lagerung: Mit seinem architektonischen Ansatz, der indizierte Datenblöcke verwendet, minimiert Loki die Speicheranforderungen, was für Umgebungen mit mehreren Containern von entscheidender Bedeutung ist.
  • Abruf und Filterung: Mit Loki können Benutzer ausgefeilte Abfragen und Filter in den Protokollen durchführen, so dass sie die benötigten Informationen schnell finden und analysieren können.
  • Einfache Integration mit Docker: Loki lässt sich problemlos in Docker-Container integrieren, was den Konfigurationsprozess und die Integration in bestehende Container-Infrastrukturen vereinfacht.
  • Grafische Schnittstelle: Loki arbeitet mit der Grafana-Plattform, die die Visualisierung von Protokollen ermöglicht und die Protokollverfolgung und -analyse mit interaktiven Diagrammen und Dashboards erleichtert.

Im nächsten Kapiteln dieses Blogs werden wir die Installation des Loki-Plugins für Docker und praktische Beispiele für seine Verwendung genauer unter die Lupe nehmen. Loki bietet eine moderne Lösung für die Protokollierung in Containern, die es uns ermöglicht, Protokolle in der dynamischen Umgebung von Docker-Containern besser zu verstehen und zu verwalten.

Loki-Plugin-Installation mit Docker-Plugin

1. Laden Sie das Loki-Plugin herunter und installieren Sie es:

Verwenden Sie den Befehl docker plugin install, um das Loki-Plugin zu installieren. Stellen Sie sicher, dass Sie eine Version von Docker installiert haben, die Plugins unterstützt.


docker plugin install grafana/loki-docker-driver:latest --alias loki--grant-all-permissions


Mit diesem Befehl wird das Loki-Plugin heruntergeladen und in Ihrer Docker-Umgebung installiert. Der Parameter --alias definiert einen Alias für die einfache Verwendung in der Protokolltreiberkonfiguration.

2. Das Loki-Plugin muss als Docker-Dienst ausgeführt werden:

Nach der Installation führen Sie das Loki-Plugin als Docker-Dienst aus. Stellen Sie sicher, dass das Plugin auf dem erwarteten Port läuft.

3. Docker-Daemon mit Loki-Treiber:

Starten Sie den Docker-Daemon neu, damit die Änderungen an der Plugin-Konfiguration wirksam werden. Konfigurieren Sie außerdem den Docker-Daemon so, dass er den Loki-Protokolltreiber akzeptiert.


Fügen Sie derDatei eine Konfiguration hinzu, um den Loki Log-Treiber zu aktivieren


4. Speichern Sie Ihre Änderungen und starten Sie den Docker-Daemon neu

Nach dem Neustartsollte der Docker-Daemon bereit sein, denLoki-Protokolltreiber zu verwenden, um Protokolle von Containern zu sammeln.Stellen Sie sicher, dass das Loki-Pluginaktiviert und wie erwartet konfiguriert ist.

Hinzufügen eines Protokolltreibers zu docker-compose.yml

Das Hinzufügen des Loki-Log-Treibers zurDatei docker-compose.yml ist einwichtiger Schritt, um Logs von bestimmten Containern zu erhalten und an dasLoki-System weiterzuleiten. Im Folgenden finden Sie ein Beispiel, wie dieseKonfiguration umgesetzt werden kann:

Hinzufügen des Loki-Log-Treibers für Container:

Fügen Sie in jedem Container, von dem Sie Logs sammeln wollen, eine Konfiguration für den Loki Log-Treiber hinzu. Hier ist ein Beispiel für einen Container namens myapp...

  • loki-URL: Gibt die URL des Loki-Servers an, an den die Protokolle gesendet werden sollen.
  • loki-retries: Anzahl der Wiederholungsversuche im Falle einer fehlgeschlagenen Protokollübermittlung.
  • loki-batch-size: Die maximale Größe eines Stapels von Protokollen, die auf einmal gesendet werden.

Loki-Sucht:

Vergewissern Sie sich, dass Sie Loki im Abschnitt services der Datei docker-compose.ymldefiniert haben, auf die in der Konfiguration des Protokolltreibersverwiesen wird

Nach diesen Änderungen protokolliert der myapp-Containerseine Ereignisse mit demLoki-Protokolltreiber. Loki sammelt dann diese Protokolle und speichert sie inseinem Repository, was eine spätereAnalyse und Überwachung mit der Grafana-Plattform ermöglicht.

Im nächsten Teil des Blogs werden wir uns mit der Konfiguration vonLoki für die Logsammlung befassen und einen genauerenBlick auf praktische Beispiele für denBetrieb von Docker mit aktiviertem Loki-Logging unter Linux werfen.

Loki für die Logsammlung konfigurieren

Nach dem erfolgreichen Hinzufügen des Loki Log-Treibers zur docker-compose.ymlist es nun an der Zeit, Loki so zu konfigurieren, dass es die Logs vonDocker-Containern effizient sammelt und speichert. Die folgenden Schrittewerden Ihnen bei dieser Konfiguration helfen.

Erstellen einer Konfigurationsdatei für Loki:

Erstellen Sie eine Konfigurationsdatei für Loki, die angibt, wo und wie die Protokolle gespeichert werden sollen. Wir zeigen ein Beispiel für die Datei loki-local-config.yaml:

Diese Datei enthält die Konfiguration für Loki Ingester, Chunk Lifecycle und Indexspeicher.

Loki mit einer bestimmten Konfigurationsdatei starten:

docker run -v /path/to/loki-local-config.yaml:/etc/loki/local-config.yaml -p 3100:3100 grafana/loki:latest -config.file=/etc/loki/local-config.yaml
This will start Loki with specific settings for saving logs.

Loki-Verfügbarkeitsprüfung:

Prüfen Sie die Verfügbarkeit von Loki unter http://localhost:3100. Diese Adresse sollte mit der Adresse übereinstimmen, die Sie in der Konfiguration des Protokolltreibers in docker-compose.yml angegeben haben.

Sobald diese Schritte abgeschlossen sind, wird Loki so konfiguriert, dass Logs von bestimmten Containern mit dem Loki Log-Treiber gesammelt werden. Im nächsten Teil des Blogs werden wir einen detaillierten Blick auf Beispiele für den Betrieb von Docker-Containern mit aktivierter Loki-Protokollierung unter Linux werfen.

Beispiele für die Ausführung von Docker mit Protokollierung unter Linux

Bei der Ausführung von Docker-Containern unter Linux mit aktivierter Loki-Protokollierung ist es wichtig, die korrekte Befehlssyntax einzuhalten und spezifische Parameter für den Loki-Protokolltreiber anzugeben. Die folgenden Beispiele zeigen, wie man Docker-Container mit aktivierter Loki-Protokollierung ausführt:

Ein einfaches Beispiel:

Ein simples Beispiel für den Betrieb eines Containers mit aktiviertem Loki-Log-Treiber:

docker run --log-driver=loki --log-opt loki-url="http://loki:3100/loki/api/v1/push" --log-opt loki-retries="5" --log-opt loki-batch-size="100" myapp-image:latest

Verwendung von docker-compose:

Wenn Sie die Datei docker-compose.yml verwenden, fügen Sie die Konfiguration des Loki-Protokolltreibers zu dem jeweiligen Dienst hinzu:

Mit der Einstellung von Umgebungsvariablen:

Beispiel für die Ausführung eines Containers mit aktiviertem Loki-Log-Treiber unter Verwendung der Umgebung.

docker run -e "DOCKER_LOG_DRIVER=loki" -e "DOCKER_LOG_OPTS=loki-url=http://loki:3100/loki/api/v1/push,loki-retries=5,loki-batch-size=100" myapp-image:latest

Diese Beispielekönnen für den Betrieb von Containern mit aktivierter Loki-Protokollierungverwendet werden, was eine effizienteÜberwachung und Protokollierung im Loki-System ermöglicht. Später im Blogwerden wir uns mit der Analyse und Abfrage dieser Protokolle mit Loki undGrafana beschäftigen, um einen tieferen Einblick in das Verhalten unsererAnwendungen in einer containerisierten Umgebungzu erhalten.

Analyse und Abfragen von Protokollen

Angenommen, wir haben Loki erfolgreich eingerichtet, um Logs von unseren Docker-Containern zu sammeln. Schauen wir uns nun an, wie Loki die Analyse und Abfrage der Logs erleichtert. Dazu nutzen wir die Integration mit der Grafana-Plattform, die bequeme und visuell ansprechende Tools für die Arbeit mit Protokollen bietet.

Grafana Dashboard für Loki:

Stellen Sie sicher, dass Grafana neben Loki installiert ist. Erstellen Sie dann ein Grafana-Dashboard, das mit Loki verknüpft wird und relevante Protokollinformationen anzeigt. Grafana-Dashboards können Diagramme, Tabellen und andere Visualisierungselemente enthalten.

Anfrage an Loki:

Loki unterstützt die Abfragesprache PromQL, mit der Sie flexible Abfragen auf Protokollen durchführen können. Beispiele für Abfragen.

  • Alle Fehlermeldungen abrufen: app_level="error"
  • Filterung nach Containe: container_name="myapp"
  • Angabe des Zeitbereichs: time>ago(1h)

Verwendung von Loki-Labels

Loki verwendet Labels, um Logs zu identifizieren und zu kennzeichnen. Das Hinzufügen von Labels bei der Protokollierung erleichtert die Kategorisierung und Filterung von Protokollen nach bestimmten Kriterien.

Warnmeldungen und Ereignisverfolgung:

In Grafana können Sie Alarme für bestimmte Ereignisse oder Trends in Protokollen einrichten. Dies erhöht die Effizienz der Überwachung und Reaktion auf wichtige Änderungen.

Exportieren und teilen Sie Dashboards:

Grafana ermöglicht es Ihnen, die von Ihnen erstellten Dashboards zu exportieren, so dass Sie die Konfiguration und die Protokollanalyse problemlos mit Ihrem Team oder Ihrer Community teilen können.

In diesem Stadium ist Loki mit Grafana integriert und bereit für die Log-Analyse von Docker-Containern. Im nächsten Teil des Blogs werden wir uns auf Best Practices und Tipps für die effektive Nutzung von Loki und Logging in einer Docker-Umgebung konzentrieren.

Bewährte Praktiken und Tipps

Bei der Arbeit mit Loki und der Protokollierung in einer Docker-Umgebung ist es wichtig, Best Practices zu befolgen und Tipps anzuwenden, die die Effizienz und Zuverlässigkeit der Protokollverwaltung verbessern. Hier sind einige Best Practices und Tipps:

  • Optimierung der Lagerung: Behalten Sie die Effizienz des Loki Speichers bei. Sie können zum Beispiel regelmäßig alte Protokolle archivieren oder löschen, um ein unkontrolliertes Datenwachstum zu verhindern.
  • Backup-Konfiguration: Sichern Sie regelmäßig Ihre Loki- und Grafana-Konfigurationsdateien, um das Risiko von Datenverlusten bei unerwarteten Ereignissen zu minimieren.
  • Zentralisierte Konfiguration des Protokolltreibers: Wenn Sie mehrere Container verwalten, können Sie eine zentrale Loki-Protokolltreiber-Konfiguration erstellen und sie für alle Container freigeben.
  • Sicherheitserwägungen: Wenn Sie Loki in einer Produktionsumgebung einsetzen, achten Sie auf die Sicherheit. Erwägen Sie den Einsatz von Verschlüsselungs- und Authentifizierungsmethoden zum Schutz von Protokollen.
  • Verwendung von Loki-Labels: Nutzen Sie Beschriftungen optimal zur Strukturierung und Filterung von Protokollen. Richtig beschriftete Protokolle vereinfachen die Analyse und Verfolgung wichtiger Ereignisse.
  • Loki Leistungsüberwachung: Überwachen Sie regelmäßig die Loki-Leistung, um eine Überlastung zu vermeiden und einen reibungslosen Betrieb der Logsammlung und -speicherung zu gewährleisten.
  • Automatisierung von Aktualisierungen: Halten Sie Loki und andere zugehörige Komponenten auf dem neuesten Stand und nutzen Sie automatische Aktualisierungsverfahren, um neue Funktionen und Fehlerbehebungen zu erhalten.
  • Dokumentation und Schulung: Sicherstellen, dass die Konfiguration, Nutzung und Wartung von Loki und Grafana ordnungsgemäß dokumentiert wird. Lassen Sie das Team ausbilden, um eine effiziente Nutzung dieser Instrumente zu gewährleisten.

Wenn Sie diese bewährten Verfahren und Tipps befolgen, können Sie die Protokolle in Docker-Containern effektiver verwalten und wertvolle Informationen für die Überwachung und Diagnose gewinnen.

Schlussfolgerung und Referenzen

Im letzten Teil unserer Reise durch das Logging in Docker-Containern mit Loki haben wir die wichtigsten Aspekte von der Installation bis zur praktischen Log-Analyse untersucht. Wir erhielten einen tieferen Einblick, wie Loki eine moderne und effiziente Lösung für das Sammeln, Speichern und Analysieren von Protokollen in der Welt der Containerisierung bietet.

Was wir gelernt haben:

  • Loki-Installation: Wir haben herausgefunden, wie wir Loki mit Docker integrieren können, indem wir Docker Compose verwenden und es dann für die Logsammlung konfigurieren.
  • Loki-Konfiguration: Wir haben die wichtigsten Teile der Loki-Konfigurationsdatei untersucht, die sich auf die Sammlung, Speicherung und Verfügbarkeit von Protokollen auswirken.
  • Praktische Anwendung: Wir haben Beispiele für den Betrieb von Docker-Containern mit aktivierter Loki-Protokollierung vorgestellt und gezeigt, wie diese Protokolle zu einem wertvollen Analyseinstrument werden können.
  • Bewährte Praktiken und Tipps: Wir tauschten Best Practices und Tipps für den effektiven Einsatz von Loki und Logging in einer Docker-Umgebung aus.

Links für weitere Studien:

  • Loki-Dokumentation: für ein tieferes Verständnis von Loki und seiner Konfiguration.
  • Grafana-Dokumentation: zur Erweiterung der Log-Analyse mit Visualisierungen in Grafana.
  • PromQL-Dokumentation: für detaillierte Informationen über die PromQL-Abfragen, die Loki verwendet.

Mit diesem Wissensollten Sie in der Lage sein, das Verhalten Ihrer Docker-Container effektiv zuprotokollieren und zu analysieren. Wenn Sie weitere Fragen haben oder eineErweiterung zu einem der spezifischenThemen benötigen, können Sie mich gerne fragen. Ich danke Ihnen für IhreAufmerksamkeit und wünsche Ihnen viel Erfolg bei Ihren Projekten!

Teilen:
Pavel ist ein erfahrener DevOps-Guru und begeisterter SysAdmin, der für Application Life Cycle, Continuous Integration und Continuous Delivery verantwortlich ist, sowohl für Kunden als auch für interne SABO Projekte. Er schult Software-Entwickler in unserem Team und koordiniert alle DevOps-Aktivitäten. Hat immer einen Spruch parat, wechselt unberechenbar ins Polnische und kocht und backt gerne.

Article collaborators

SABO Newsletter icon

SABO NEWSLETTER

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

SABO Mobile IT

Für unsere Kunden aus der Industrie entwickeln wir spezialisierte Software zur Umsetzung von Industry 4.0. IoT, Machine Learning und Künstliche Intelligenz ermöglichen uns, signifikante Effizienzsteigerungen bei unseren Kunden zu erzielen.
Über uns