Einführung
Willkommen zu diesem praktischen Lab zum Thema Loki-Konfiguration. Loki ist ein horizontal skalierbares, hochverfügbares, mandantenfähiges Log-Aggregationssystem, das von Prometheus inspiriert wurde. Es wurde entwickelt, um sehr kosteneffizient und einfach zu betreiben zu sein.
In diesem Lab konzentrieren wir uns auf den vollständigen, grundlegenden Workflow zum Sammeln und Anzeigen von Logs. Wir werden drei Schlüsselkomponenten verwenden:
- Loki: Der Hauptserver, der für die Speicherung und Verarbeitung von Logs verantwortlich ist.
- Promtail: Ein Agent, der lokale Log-Dateien erkennt und diese an eine Loki-Instanz sendet.
- Grafana: Eine Visualisierungsplattform, mit der wir uns mit Loki verbinden, um unsere Logs zu erkunden und abzufragen.
Diese Laborumgebung hat die Loki- und Grafana-Container bereits für Sie gestartet. Ihre Aufgabe ist es, Promtail so zu konfigurieren und auszuführen, dass es Systemprotokolle an Loki sendet, und diese dann in Grafana zu visualisieren.
Promtail Docker Image für die Log-Erfassung ziehen
In diesem Schritt laden Sie das offizielle Docker-Image für Promtail herunter. Promtail ist der Agent, der für das Auffinden von Log-Dateien und das Senden ihres Inhalts an Loki verantwortlich ist. Wir werden es als Docker-Container ausführen, um unser Setup sauber und isoliert zu halten.
Führen Sie den folgenden Befehl in Ihrem Terminal aus, um das Promtail-Image von Docker Hub zu ziehen.
docker pull grafana/promtail
Sie sehen eine Ausgabe, die den Download-Fortschritt für jede Schicht des Images anzeigt. Nach Abschluss steht das Image auf Ihrem lokalen Rechner zur Verfügung.
Using default tag: latest
latest: Pulling from grafana/promtail
Digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status: Downloaded newer image for grafana/promtail
docker.io/grafana/promtail
Nachdem wir nun das Image haben, können wir im nächsten Schritt mit der Erstellung einer Konfigurationsdatei dafür fortfahren.
Erstellen von promtail.yml zum Scraping von Systemprotokollen
In diesem Schritt erstellen Sie eine Konfigurationsdatei für Promtail. Diese YAML-Datei teilt Promtail mit, wo sich der Loki-Server befindet und welche Log-Dateien er überwachen soll. Alle Ihre Arbeiten sollten im Verzeichnis ~/project durchgeführt werden.
Erstellen Sie zunächst mit dem nano-Editor eine neue Datei mit dem Namen promtail.yml.
nano promtail.yml
Kopieren Sie nun die folgende Konfiguration und fügen Sie sie in den nano-Editor ein.
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: varlogs
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*.log
Lassen Sie uns diese Konfiguration aufschlüsseln:
server: Konfiguriert den eigenen Webserver von Promtail, der in diesem Lab nicht verwendet wird.positions: Gibt eine Datei an, in der Promtail den zuletzt gelesenen Ort in jeder Log-Datei aufzeichnet, damit er beim Neustart keine alten Logs erneut sendet.clients: Definiert die Adresse der Loki-Instanz. Wir verwendenhttp://loki:3100, da sowohl Promtail als auch Loki im selben Docker-Netzwerk laufen undlokider Containername ist.scrape_configs: Dies ist der Kernabschnitt. Wir definieren einenjobnamensvarlogs, der alle Dateien im Verzeichnis/var/log/durchsucht, die auf.logenden.
Nachdem Sie den Inhalt eingefügt haben, speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, dann Y und schließlich Enter drücken.
Promtail Container ausführen und auf Loki verweisen
In diesem Schritt starten Sie den Promtail-Container unter Verwendung der gerade erstellten Konfigurationsdatei. Der Befehl wird sowohl Ihre Konfigurationsdatei als auch das Log-Verzeichnis des Hosts in den Container einbinden (mounten).
Führen Sie den folgenden docker run-Befehl aus, um Promtail zu starten:
docker run -d --name promtail --network monitoring-net -v $(pwd)/promtail.yml:/etc/promtail/config.yml -v /var/log:/var/log grafana/promtail -config.file=/etc/promtail/config.yml
Hier ist eine Erklärung der Flags des Befehls:
-d: Führt den Container im Detached-Modus (im Hintergrund) aus.--name promtail: Weist dem Container einen Namen zur einfachen Referenzierung zu.--network monitoring-net: Verbindet den Container mit demselben Netzwerk wie Loki und Grafana.-v $(pwd)/promtail.yml:/etc/promtail/config.yml: Bindet Ihre lokalepromtail.ymlan der erwarteten Stelle in den Container ein.-v /var/log:/var/log: Bindet das/var/log-Verzeichnis des Hosts in den Container ein, damit Promtail die Log-Dateien lesen kann.-config.file=/etc/promtail/config.yml: Teilt dem Promtail-Prozess innerhalb des Containers mit, welche Konfigurationsdatei er verwenden soll.
Nach Ausführung des Befehls gibt Docker die eindeutige ID des neuen Containers aus. Sie können mit dem Befehl docker ps überprüfen, ob der Container läuft.
docker ps
Sie sollten promtail, loki und grafana in der Liste der laufenden Container sehen.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
... grafana/promtail "/usr/bin/promtail -c…" A few seconds ago Up a few seconds 0.0.0.0:9080->9080/tcp promtail
... grafana/grafana "/run.sh" About a minute ago Up About a minute 0.0.0.0:8080->3000/tcp grafana
... grafana/loki "/usr/bin/loki -conf…" About a minute ago Up About a minute 0.0.0.0:3100->3100/tcp, 9095/tcp loki
Loki als Datenquelle in Grafana hinzufügen
In diesem Schritt konfigurieren Sie Grafana so, dass es Loki als Datenquelle verwendet. Dadurch können Sie die Logs abfragen und visualisieren, die Promtail an Loki sendet.
Bitte befolgen Sie diese Anweisungen sorgfältig:
Aufgrund der Reverse-Proxy-Einstellungen der LabEx VM wechseln Sie zur Desktop-Oberfläche, klicken Sie auf den Firefox-Browser in der oberen linken Ecke und geben Sie
http://localhost:8080in die Adressleiste ein. Sie sollten die Grafana-Anmeldeseite sehen.Melden Sie sich bei Grafana an. Verwenden Sie den Benutzernamen
adminund das Passwortadmin. Möglicherweise werden Sie aufgefordert, das Passwort zu ändern; für das Lab können Sie dies überspringen.Klicken Sie im linken Menü auf das Symbol Connections (sieht aus wie ein Stecker oder Verbinder).
Klicken Sie auf der Seite "Connections" auf Data sources.
Klicken Sie auf der Seite "Data sources" auf die Schaltfläche Add new data source.
Wählen Sie aus der Liste der verfügbaren Datenquellentypen Loki aus.
Geben Sie im Suchfeld
Lokiein und klicken Sie auf die angezeigte Loki-Datenquellenoption.Sie werden zur Konfigurationsseite der Loki-Datenquelle weitergeleitet. Geben Sie im Feld URL unter dem Abschnitt HTTP die folgende Adresse ein:
http://loki:3100Wir verwenden
lokials Hostnamen, da die Grafana- und Loki-Container sich im selben Docker-Netzwerk (monitoring-net) befinden und Docker die DNS-Auflösung zwischen Containern im selben Netzwerk ermöglicht.Scrollen Sie nach unten und klicken Sie auf die Schaltfläche Save & test.

Wenn alles korrekt konfiguriert ist, sehen Sie ein grünes Banner mit der Meldung "Data source is working". Sie haben Grafana nun erfolgreich mit Ihrer Loki-Instanz verbunden.
Grundlegende Logs in der Grafana Explore-Ansicht abfragen
In diesem letzten Schritt verwenden Sie die "Explore"-Ansicht von Grafana, um eine einfache Abfrage auszuführen und die Logs anzuzeigen, die Promtail aus Ihrer Umgebung sendet.
Navigieren Sie in der Grafana UI zur linken Seitenleiste und klicken Sie auf das Kompass-Symbol (Explore).
Oben links auf der Explore-Seite sehen Sie ein Dropdown-Menü zur Auswahl der Datenquelle. Falls es noch nicht ausgewählt ist, wählen Sie Loki.
Sie sehen ein Eingabefeld namens "Log browser". Hier schreiben Sie Ihre LogQL-Abfragen.
Klicken Sie auf die Schaltfläche "Code", um zum Code-Editor zu wechseln.
Geben Sie die folgende Abfrage in das Eingabefeld ein:
{job="varlogs"}Diese LogQL-Abfrage wählt alle Log-Streams aus, die das Label
jobmit dem Wertvarlogshaben. Dieses Label haben wir in unsererpromtail.yml-Datei definiert.Drücken Sie Shift+Enter oder klicken Sie auf die blaue Schaltfläche Run query auf der rechten Seite des Bildschirms.

Nach Ausführung der Abfrage sollten im Hauptfenster unterhalb des Abfrage-Editors Logzeilen erscheinen. Sie sehen Logs aus verschiedenen Dateien in /var/log. Dies bestätigt, dass Promtail erfolgreich Logs erfasst und an Loki sendet und Grafana diese abfragen kann.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben erfolgreich eine grundlegende Logging-Pipeline mit Loki, Promtail und Grafana konfiguriert.
In diesem Lab haben Sie gelernt, wie man:
- Docker-Container für Log-Verarbeitungstools wie Promtail zieht und ausführt.
- Eine Promtail-Konfigurationsdatei erstellt, um einen Loki-Server anzugeben und Log-Scraping-Jobs zu definieren.
- Docker-Networking nutzt, um Dienste (Promtail, Loki und Grafana) zu verbinden.
- Loki als Datenquelle innerhalb der Grafana-Benutzeroberfläche hinzufügt.
- Eine einfache LogQL-Abfrage in der Explore-Ansicht von Grafana ausführt, um Ihre Logs zu finden und zu inspizieren.
Dieses Setup bildet die Grundlage für ein leistungsstarkes, skalierbares und kosteneffizientes Log-Aggregationssystem. Von hier aus könnten Sie fortgeschrittenere LogQL-Abfragen, Log-Parsing und das Einrichten von Alarmen (Alerts) in Grafana basierend auf dem Log-Inhalt erkunden.



