• Erledigen Sie die Anwendungssicherheit auf die richtige Weise! Erkennen, schützen, überwachen, beschleunigen und mehr…
  • 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 wird jede Größe einer Organisation verwendet 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.

    Was ist 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 Vorteile

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

    • Durch die Indizierung nur von Metadaten 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 Objekten, die wie S3 gespeichert sind, macht es auch sehr viel 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 Quorum-Konsistenz 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 Architektur

    Loki Architektur - Geekflare

    Die Loki-Architektur besteht aus drei Komponenten: Promtail, Lokiund 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 Anwendungsfälle

    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 von verwertbaren Erkenntnissen 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 Geschäftswachstum zu entwickeln. Mithilfe von Protokolldaten einer Organisation können Sie beispielsweise die Conversion-Raten eines Werbekanals ermitteln.
    • Monitoring: Prometheus wird in der Industrie häufig zur Überwachung eingesetzt. Sie können jedoch 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 Benachrichtigungen senden, 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.
    • Internet-Sicherheit: In den letzten Jahren haben die Cyber-Angriffe auf E-Commerce-Portale exponentiell zugenommen. Mithilfe 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 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 aufzuspüren.
    • 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.

    Loki und Promtail installieren

    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 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.

    [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 jetzt die generische Konfigurationsdatei von herunter Loki Promtail.

    [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

    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.

    [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"

    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.

    [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}"

    Visualisieren Sie das Protokoll mit Loki und 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".

    grafana

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

    Konfiguration

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

    füge loki hinzu

    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.

    loki Datenquelle

    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.

    speichern und testen

    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 {Dateiname = ”/ var / log / grafana / grafana.log”} im Protokollbrowser. Die grünen Balken unten sind Einträge von Ereignissen in der Protokolldatei.

    Grafana-Protokoll

    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.

    Detailprotokoll

    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.