Erste Schritte mit Grafana Loki

Veröffentlicht: 2021-05-01

Lernen wir die Grundlagen von Grafana Loki, einem mandantenfähigen Protokollaggregationssystem, kennen.

In einer Produktionsumgebung sind Ausfallzeiten inakzeptabel. Dies kann zu einem massiven Verlust von Geschäftseinnahmen und Reputation führen. Wenn Sie jedoch über ein geeignetes Protokollierungs- und Überwachungssystem verfügen, wissen Sie, wie Sie solche Szenarien, die zu Ausfallzeiten führen, beheben können.

Es hilft, Kosten zu sparen und Probleme zu identifizieren, die in der Zukunft auftreten könnten.

Heutzutage verwendet jede Unternehmensgröße DevOps-Prinzipien und -Tools. Container und Kubernetes sind die beliebtesten. Und die Überwachung eines solchen Systems erfolgt mit Prometheus sehr effizient. Aber wo Prometheus hinkt, ist der Teil der Protokollierung. Es bietet kein zentralisiertes Protokollierungssystem, und hier kommt Loki ins Spiel.

Was ist Grafana Loki?

Grafana Loki ist ein mandantenfähiges Log-Aggregation-System, das 2018 von Grafana 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 mit Tools wie Prometheus und Grafana verwendet.

Loki ähnelt dem ELK/EFK-Stack, ist jedoch einfacher einzurichten und mit besseren Funktionen zu bedienen. Loki indiziert nicht den Inhalt des Logs, sondern indiziert Zeitstempel und eine Reihe von Labels für einen Log-Stream. Dadurch wird der Index kleiner, was die Operationen vereinfacht und letztendlich die Kosten senkt.

Loki-Vorteile

Im Folgenden sind die Vorteile der Verwendung von Loki in Ihrem Stapel aufgeführt:

  • Da nur Metadaten indiziert 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 in Objektspeichern wie S3 macht es auch sehr billiger.
  • Es unterstützt die Mandantenfähigkeit durch die Verwendung von TenantID, sodass die Daten der Mandanten separat gespeichert werden.
  • Sie können Loki für kleine Operationen lokal ausführen oder für große Operationen einfach horizontal skalieren.
  • Es verwendet den Dynamo-Stil, um die Quorumkonsistenz für Lese- und Schreibvorgänge sicherzustellen.
  • Es ist standardmäßig so konfiguriert, dass es über 3 Replikate von Protokollen verfügt, um das Risiko von Prozessabstürzen und abrupten Beendigungen, bei denen die Protokolle verloren gehen, zu vermeiden. Ja, es würde einige zusätzliche Kosten verursachen, aber nicht so hoch, die Integrität der Daten ist wichtiger.
  • Einfach mit gängigen Tools wie Kubernetes, Prometheus und Visualisierung in Grafana zu verbinden.

Loki-Architektur

loki architektur - geekflare

Die Loki-Architektur besteht aus drei Komponenten – Promtail , Loki und Grafana .

Promtail ist ein Agent, der auf jedem Knoten installiert werden muss, auf dem Ihre Anwendungen oder Dienste ausgeführt werden. Die Hauptaufgabe von Promtail besteht darin, das Ziel zu entdecken, die Labels an die Lo-Streams anzubringen, die von den Pods kommen, und diese Protokolle an die Loki-Instanzen zu übertragen. Der Agent-Promtail verfolgt die Protokolle aus dem lokalen Dateisystem und überträgt die Protokolle an Lokis zentralen Server. Danach können Sie Ihre Logs mit Grafana zurückfragen.

Loki-Anwendungsfälle

Im Folgenden sind die beliebtesten Anwendungsfälle für die Verwendung eines Protokollierungssystems wie Loki aufgeführt.

  • Business Intelligence: Dies ist ein immergrüner Anwendungsfall, bei dem es immer sehr nützlich sein kann, aus Protokolldaten umsetzbare Erkenntnisse zu gewinnen. Loki kann Ihnen helfen, Protokolldaten zu verstehen und Sie in die Lage zu versetzen, neue Strategien für das Geschäftswachstum zu entwickeln. Durch Protokolldaten einer Organisation können Sie beispielsweise die Konversionsraten eines Werbekanals ermitteln.
  • Überwachung: Prometheus wird in der Industrie häufig zur Überwachung eingesetzt. 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 Sie die Protokolle durchgehen und Warnungen senden, sobald der Schwellenwert überschritten wird.
  • Debugging und Fehlerbehebung: Loki kann dem DevOps-Team mit einigen schnellen Antworten helfen, z. B. wann die App abgestürzt ist, der Grund für den Absturz, der letzte Status vor dem Absturz usw.
  • Cyber ​​Security: In den letzten Jahren haben die Cyber-Angriffe auf E-Commerce-Portale exponentiell zugenommen. Mit Hilfe von Loki können Sie die Protokolle überprüfen, um Bedrohungen, Probleme oder böswillige Aktivitäten im System Ihres Unternehmens zu identifizieren. Wenn der Hack erfolgreich war, könnte Loki dem Forensik-Team dennoch hilfreich sein, um zu verstehen, was im System im Detail vor sich ging. Es wird ihnen helfen, die Hacker zurückzuverfolgen.
  • Compliance: Um die Branchenvorschriften einzuhalten, müssen die Organisationen ihre Audit-Logs bis zu 7 Jahre lang aufbewahren. Die lokalen Behörden können die Protokolle jederzeit überprüfen. Loki kann Ihre Audit-Logs sicher speichern.

Loki und Promtail installieren

Lassen Sie uns schnell herausfinden, wie Sie Protokolle auf Grafana installieren und visualisieren. In dieser Demonstration verwende ich die generische Konfiguration, die die Protokolle von /var/log/*log

Gehen Sie zur Loki-Release-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 Canary-Loki-Pakete herunter. Ich lade loki-linux-amd64.zip und promtail-linux-amd64.zip für mein Ubuntu-System herunter.

Nachdem der Download abgeschlossen ist, extrahieren Sie die Dateien von Loki und Promtail und legen Sie sie in einem einzigen Verzeichnis ab.

 [email protected]:~$ mkdir loki [email protected]:~$ mv loki-linux-amd64 promtail-linux-amd64 loki [email protected]:~$ cd loki/ [email protected]:~/loki$ ls loki-linux-amd64 promtail-linux-amd64

Laden Sie nun die generische Konfigurationsdatei von Loki und Promtail herunter.

 [email protected]:~/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]
 [email protected]:~/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]
 [email protected]:~/loki$ ls loki-linux-amd64 loki-local-config.yaml promtail-linux-amd64 promtail-local-config.yaml

Um Loki zu starten, führen Sie den folgenden Befehl mit der Loki-Konfigurationsdatei aus. Dadurch wird Loki gestartet und die Loki-Protokolle im Terminal angezeigt.

 [email protected]:~/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"

Um Promtail zu starten, führen Sie den folgenden Befehl mit der Promtail-Konfigurationsdatei aus. Promtail ist erforderlich, um die Protokolle in Loki zu übertragen.

 [email protected]:~/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}"

Log mit Loki und Grafana visualisieren

Grafana bietet integrierte Unterstützung für Loki. Loki ist bereits in den Datenquellen von Grafana präsent.

Schritt 1: Gehen Sie zu Grafana-Konfigurationen und klicken Sie auf „Datenquellen“.

grafana

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

Aufbau

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

loki hinzufügen

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

Loki-Datenquelle

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

speichern und testen

Schritt 5: Klicken Sie auf die Registerkarte Erkunden auf der linken Seite. Wählen Sie Loki aus der Dropdown-Liste der Datenquellenauswahl aus. Nun möchte ich die Aktivität von Grafana-Protokollen visualisieren. Dazu müssen Sie im Log Browser die Abfrage {filename=“/var/log/grafana/grafana.log“} hinzufügen . Die grünen Balken darunter sind Einträge von Ereignissen in der Protokolldatei.

Grafana-Protokoll

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

Detailprotokoll

Sieht wunderschön aus, nicht wahr?

Das war also alles, um loszulegen. Ich würde Ihnen dringend raten, sich das folgende Webinar-Video anzusehen, in dem die Beobachtbarkeit mit Loki erklärt wird.

Fazit

Ein verteiltes System besteht aus vielen Anwendungen oder Microservices, von denen jeder Tonnen von Protokollen hat. Sie benötigen eine kostengünstige Möglichkeit, die Protokolle zu sammeln, zu speichern und dann zu verwenden. Loki ist eine perfekte Lösung für solche Fälle. Tatsächlich können Sie durch die Integration von Loki in Ihre Produktionsumgebung rund 75 % Ihrer Protokollierungs- und Überwachungskosten reduzieren.

Loki ist auch über die Grafana Cloud verfügbar, es wäre gut, es auszuprobieren, wenn Sie den Installationsprozess nicht durchlaufen möchten.

Als nächstes lernen Sie Grafana Tempo kennen.