Lernen Sie die Grundlagen von Grafana Loki kennen, einem mandantenfähigen Protokollaggregationssystem.
In einer Produktionsumgebung sind Ausfallzeiten nicht akzeptabel. Dies kann zu einem massiven Verlust an Geschäftseinnahmen und Reputation führen. Wenn Sie jedoch über ein ordnungsgemäßes Protokollierungs- und Überwachungssystem verfügen, wissen Sie, wie Sie solche Szenarien debuggen, die zu Ausfallzeiten führen.
Es hilft, Kosten zu sparen und Probleme zu identifizieren, die in Zukunft auftreten könnten.
Heutzutage verwendet eine Organisation jede Größe DevOps Prinzipien und Werkzeuge. Container und Kubernetes sind die beliebtesten. Und die Überwachung eines solchen Systems erfolgt sehr effizient mit Prometheus. Aber wo Prometheus hinkt, ist der Protokollierungsteil. Es gibt kein zentrales Protokollierungssystem, und hier kommt Loki ins Spiel.
What is Grafana Loki?
Grafana Loki ist ein mandantenfähiges Protokollaggregationssystem, das von Grafana im Jahr 2018 gestartet und unter der Apache 2.0-Lizenz veröffentlicht wurde. Dieses System wurde entwickelt, indem man sich von Prometheus inspirieren ließ. Es wird hauptsächlich bei Cloud-Anbietern und Tools wie Prometheus und Grafana verwendet.
Loki ähnelt dem ELK / EFK-Stack, ist jedoch einfacher einzurichten und mit besseren Funktionen zu betreiben. Loki indiziert nicht den Inhalt des Protokolls, sondern Zeitstempel und eine Reihe von Beschriftungen für einen Protokolldatenstrom. Dadurch wird der Index kleiner, was die Operationen vereinfacht und letztendlich die Kosten senkt.
Loki Benefits
Nachfolgend sind die Vorteile der Verwendung von Loki in Ihrem Stapel aufgeführt:
- Da nur Metadaten indexiert werden, ist Loki sehr kostengünstig. Das Ausführen von Indizes für die Volltextverarbeitung erfordert größere RAM-Instanzen, die sehr teuer sind. Das Speichern von Protokollen auf Objekten, die wie S3 gespeichert sind, macht es auch sehr billiger.
- Es unterstützt die Mandantenfähigkeit mithilfe der Mandanten-ID, sodass die Daten der Mandanten separat gespeichert werden.
- Sie können Loki lokal für kleine Operationen ausführen oder es einfach horizontal für große Operationen horizontal skalieren.
- Es verwendet den Dynamo-Stil, um die Quorumkonsistenz für Lese- und Schreibvorgänge sicherzustellen.
- Es ist standardmäßig so konfiguriert, dass 3 Replikate von Protokollen vorhanden sind, um das Risiko von Prozessabstürzen und abrupten Exits zu vermeiden, bei denen die Protokolle verloren gehen. Ja, es würde einige zusätzliche Kosten verursachen, aber nicht so hoch, dass die Integrität der Daten kritischer ist.
- Einfach mit beliebten Tools wie Kubernetes, Prometheus und Visualisierung in Grafana zu verbinden.
Loki Architecture

Die Loki-Architektur besteht aus drei Komponenten: Abschlussball, Loki und Grafana.
Promtail ist ein Agent, der auf jedem Knoten installiert werden muss, auf dem Ihre Anwendungen oder Dienste ausgeführt werden. Die Hauptverantwortung von Promtail besteht darin, das Ziel zu ermitteln, die Beschriftungen an die von den Pods kommenden Lo-Streams anzuhängen und diese Protokolle an die Loki-Instanzen zu senden. Der Agent promtail beendet die Protokolle aus dem lokalen Dateisystem und überträgt die Protokolle an den zentralen Server von Loki. Danach können Sie Ihre Protokolle mit abfragen Grafana.
Loki Use Cases
Im Folgenden finden Sie die gängigen Anwendungsfälle für die Verwendung eines Protokollierungssystems wie Loki.
- Business Intelligence: Dies ist ein immergrüner Anwendungsfall. Das Erstellen umsetzbarer Erkenntnisse aus Protokolldaten kann immer sehr nützlich sein. Loki kann Ihnen helfen, Protokolldaten zu verstehen und Sie in die Lage versetzen, neue Strategien für das Unternehmenswachstum zu entwickeln. Beispielsweise können Ihnen die Protokolldaten einer Organisation dabei helfen, die Konversionsraten eines Werbekanals zu ermitteln.
- Monitoring: Prometheus wird in der Industrie häufig zur Überwachung verwendet. Aber Sie können viele Dinge identifizieren, indem Sie Ihre Protokolle mit Tools wie Loki überwachen. Es kann Ihnen helfen, die Fehlerraten auf Ihrer Website zu überwachen, indem es die Protokolle durchgeht und Warnungen sendet, sobald der Schwellenwert überschritten wird.
- Debugging und Fehlerbehebung: Loki kann dem DevOps-Team mit schnellen Antworten helfen, z. B. wann die App abgestürzt ist, der Grund für den Absturz, der letzte Status vor dem Absturz usw.
- Cybersicherheit: In den letzten Jahren haben Cyberangriffe auf E-Commerce-Portale exponentiell zugenommen. Mit Hilfe von Loki können Sie die Protokolle überprüfen, um Bedrohungen oder Probleme oder böswillige Aktivitäten im System Ihres Unternehmens zu identifizieren. Wenn der Hack erfolgreich war, könnte Loki für das Forensik-Team immer noch hilfreich sein, um zu verstehen, was im System im Detail passiert ist. Es wird ihnen helfen, die Hacker zurückzuverfolgen.
- Kundenbindung: Um die Branchenvorschriften einzuhalten, müssen die Organisationen ihre Audit-Protokolle bis zu 7 Jahre aufbewahren. Die lokalen Behörden können die Protokolle jederzeit prüfen. Loki kann Ihre Überwachungsprotokolle sicher speichern.
Installing Loki and Promtail
Lassen Sie uns schnell herausfinden, wie Protokolle auf Grafana installiert und visualisiert werden. In dieser Demonstration werde ich die generische Konfiguration verwenden, mit der die Protokolle entfernt werden /var/log/*log
Gehen Sie zum Loki veröffentlicht Seite, scrollen Sie nach unten zu Assets, hier finden Sie mehrere Loki- und Promtail-Pakete. Laden Sie das Loki-Paket entsprechend dem von Ihnen verwendeten System herunter. Laden Sie keine Cli- oder Kanarienvogel-Loki-Pakete herunter. Ich lade herunter loki-linux-amd64.zip und promtail-linux-amd64.zip für mein Ubuntu-System.
Extrahieren Sie nach Abschluss des Downloads die Dateien von Loki und Promtail und legen Sie sie in einem einzigen Verzeichnis ab.
geekflare@geekflare:~$ mkdir loki
geekflare@geekflare:~$ mv loki-linux-amd64 promtail-linux-amd64 loki
geekflare@geekflare:~$ cd loki/
geekflare@geekflare:~/loki$ ls
loki-linux-amd64 promtail-linux-amd64
Laden Sie jetzt die generische Konfigurationsdatei von herunter Loki und Abschlussball.
geekflare@geekflare:~/loki$ wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
--2021-04-30 12:00:51-- https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1832 (1.8K) [text/plain]
Saving to: ‘loki-local-config.yaml’
loki-local-config.yaml 100%[===============================================================================================>] 1.79K --.-KB/s in 0s
2021-04-30 12:00:51 (16.6 MB/s) - ‘loki-local-config.yaml’ saved [1832/1832]
geekflare@geekflare:~/loki$ wget https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml
--2021-04-30 12:05:07-- https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml
Resolving github.com (github.com)... 13.234.210.38
Connecting to github.com (github.com)|13.234.210.38|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘promtail-local-config.yaml’
promtail-local-config.yaml [ <=> ] 109.16K --.-KB/s in 0.002s
2021-04-30 12:05:08 (66.8 MB/s) - ‘promtail-local-config.yaml’ saved [111779]
geekflare@geekflare:~/loki$ ls
loki-linux-amd64 loki-local-config.yaml promtail-linux-amd64 promtail-local-config.yaml
Führen Sie den folgenden Befehl mit der Loki-Konfigurationsdatei aus, um Loki zu starten. Dadurch wird Loki gestartet und die Loki-Protokolle im Terminal angezeigt.
geekflare@geekflare:~/loki$ ./loki-linux-amd64 -config.file=loki-local-config.yaml
level=info ts=2021-04-30T16:08:37.990311491Z caller=main.go:130 msg="Starting Loki" version="(version=2.2.1, branch=HEAD, revision=babea82e)"
level=info ts=2021-04-30T16:08:37.990856871Z caller=server.go:229 http=[::]:3100 grpc=[::]:9096 msg="server listening on addresses"
level=info ts=2021-04-30T16:08:37.991613443Z caller=shipper_index_client.go:100 msg="starting boltdb shipper in 0 mode"
level=info ts=2021-04-30T16:08:37.992568288Z caller=mapper.go:38 msg="cleaning up mapped rules directory" path=/tmp/loki/rules-temp
level=error ts=2021-04-30T16:08:37.992623632Z caller=mapper.go:42 msg="unable to read rules directory" path=/tmp/loki/rules-temp err="open /tmp/loki/rules-temp: no such file or directory"
level=info ts=2021-04-30T16:08:37.993520927Z caller=table_manager.go:171 msg="uploading tables"
level=info ts=2021-04-30T16:08:37.993941099Z caller=module_service.go:59 msg=initialising module=store
level=info ts=2021-04-30T16:08:37.994011839Z caller=module_service.go:59 msg=initialising module=memberlist-kv
level=info ts=2021-04-30T16:08:37.99412775Z caller=module_service.go:59 msg=initialising module=server
level=info ts=2021-04-30T16:08:37.994379648Z caller=module_service.go:59 msg=initialising module=ingester
level=info ts=2021-04-30T16:08:37.994415984Z caller=ingester.go:241 msg="recovering from checkpoint"
Führen Sie den folgenden Befehl mit der Promtail-Konfigurationsdatei aus, um Promtail zu starten. Promtail ist erforderlich, um die Protokolle in Loki zu erhalten.
geekflare@geekflare:~/loki$ ./promtail-linux-amd64 -config.file=promtail-local-config.yaml
level=info ts=2021-04-30T16:35:52.775998059Z caller=server.go:229 http=[::]:9080 grpc=[::]:42557 msg="server listening on addresses"
level=info ts=2021-04-30T16:35:52.776283661Z caller=main.go:112 msg="Starting Promtail" version="(version=2.2.1, branch=HEAD, revision=babea82e)"
level=info ts=2021-04-30T16:35:57.776226323Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}"
ts=2021-04-30T16:35:57.776902427Z caller=log.go:124 level=info msg="Seeked /var/log/fontconfig.log - &{Offset:11055 Whence:0}"
level=info ts=2021-04-30T16:35:57.776983546Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/auth.log
level=info ts=2021-04-30T16:35:57.777009023Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/fontconfig.log
ts=2021-04-30T16:35:57.777094698Z caller=log.go:124 level=info msg="Seeked /var/log/lastlog - &{Offset:0 Whence:0}"
ts=2021-04-30T16:35:57.777712594Z caller=log.go:124 level=info msg="Seeked /var/log/apport.log - &{Offset:0 Whence:0}"
ts=2021-04-30T16:35:57.778200383Z caller=log.go:124 level=info msg="Seeked /var/log/alternatives.log - &{Offset:456 Whence:0}"
ts=2021-04-30T16:35:57.780467419Z caller=log.go:124 level=info msg="Seeked /var/log/syslog - &{Offset:56911 Whence:0}"
level=info ts=2021-04-30T16:35:57.780646032Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/kern.log
level=info ts=2021-04-30T16:35:57.781289004Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}"
level=info ts=2021-04-30T16:35:57.787770104Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/grafana/grafana.log
ts=2021-04-30T16:35:57.782276009Z caller=log.go:124 level=info msg="Seeked /var/log/grafana/grafana.log - &{Offset:0 Whence:0}"
Visualize Log using Loki and Grafana
Grafana bietet integrierte Unterstützung für Loki. Loki ist bereits in den Datenquellen von Grafana vorhanden.
Schritt 1: Gehen Sie zu Grafana-Konfigurationen und klicken Sie auf "Datenquellen".

Schritt 2: In Datenquellen können Sie die Quelle nach Name oder Typ durchsuchen.

Schritt 3: Suche mit dem Namen Loki. Sie können sehen, dass diese Datenquelle bereits in Grafana vorhanden ist. Klicken Sie auf Auswählen.

Schritt 4: Geben Sie den Namen ein, den Sie der Datenquelle geben möchten, und geben Sie ihn ein http://localhost:3100
(Ändern Sie dies in Server-IP, wenn Loki auf einem anderen Server als Grafana ausgeführt wird) in der URL, da wir Loki auf Port 3100 gestartet haben.

Klicken Sie unten auf die Schaltfläche Testen und Speichern. Wenn Sie die Loki-Einrichtung korrekt durchgeführt haben, wird die folgende Meldung in einem grünen Feld angezeigt.

Schritt 5: Klicken Sie links auf die Registerkarte Erkunden. Wählen Sie Loki aus der Dropdown-Liste der Datenquellenauswahl. Jetzt möchte ich die Aktivität von Grafana-Protokollen visualisieren. Dazu müssen Sie die Abfrage hinzufügen <em>{filename="/var/log/grafana/grafana.log"}</em>
im Protokollbrowser. Die grünen Balken unten sind Einträge von Ereignissen in der Protokolldatei.

Sie können den Zeitraum auswählen, für den die Visualisierung im Dashboard angezeigt werden soll, und Sie können auch das Aktualisierungsintervall der Abfrage festlegen, nach dem die Abfrage erneut ausgeführt wird. Um weitere Details der Protokolle anzuzeigen, scrollen Sie nach unten und klicken Sie auf einen der Protokolleinträge. Daraufhin werden alle Arten von Informationen zum Protokoll angezeigt.

Sieht wunderschön aus, nicht wahr?
Es ging also nur darum, loszulegen. Ich würde Ihnen dringend empfehlen, das folgende Webinar-Video zu lesen, in dem die Beobachtbarkeit mit Loki erläutert wird.
Fazit
Ein verteiltes System besteht aus vielen Anwendungen oder Mikrodiensten, von denen jede Tonnen von Protokollen enthält. Sie würden einen kostengünstigen Weg brauchen, um Sammeln Sie die Protokolle, lagere sie und nutze sie dann. Loki ist eine perfekte Lösung für solche Fälle. Tatsächlich können Sie rund 75% Ihrer Protokollierungs- und Überwachungskosten reduzieren, indem Sie Loki in Ihre Produktionsumgebung integrieren.
Loki ist auch über erhältlich Grafana-WolkeProbieren Sie es aus, wenn Sie den Installationsprozess nicht durchführen möchten.
Als nächstes lernen Sie kennen Grafana Tempo.