Ein Logging-Setup, das skalierbar, sicher und im 21. Jahrhundert sinnvoll ist. Das ist unser Ziel mit unserem Power-Trio:

  • Fluentd: Das Schweizer Taschenmesser der Log-Sammlung (oh, ich meinte das Multi-Tool der Log-Sammlung – wir wollen die Klischee-Polizei nicht verärgern)
  • Vector: Der neue Herausforderer, der Fluentd Konkurrenz macht
  • Loki: Grafanas Antwort auf die Frage: "Was wäre, wenn Logs so cool wie Metriken wären?"

Schritt 1: Abschied von Syslog (Keine Tränen, es ist besser so)

Als erstes müssen wir uns von Syslog verabschieden. Hier ist eine kurze Checkliste, um sicherzustellen, dass Sie bereit für den großen Umzug sind:

  • Inventarisieren Sie alle Ihre Syslog-Quellen
  • Identifizieren Sie benutzerdefinierte Parsing- oder Routing-Regeln
  • Sichern Sie Ihre aktuelle Syslog-Konfiguration (nur für den Fall)
  • Informieren Sie Ihr Team (und vielleicht bestellen Sie etwas Pizza – Veränderungen sind mit Essen besser)

Schritt 2: Fluentd einrichten - Der Alleskönner der Logs

Fluentd ist unser erster Halt auf diesem Logging-Abenteuer. Hier ist, warum es großartig ist:

  • Unterstützt eine Vielzahl von Eingabe- und Ausgabe-Plugins
  • Verarbeitet strukturierte und unstrukturierte Daten wie ein Profi
  • Leichtgewichtig und in C geschrieben (mit Ruby für Plugins)

Lasst uns Fluentd einrichten:


# Installieren Sie Fluentd (angenommen, Sie verwenden ein Debian-basiertes System)
curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-focal-td-agent4.sh | sh

# Starten Sie den Fluentd-Dienst
sudo systemctl start td-agent
Bash

Jetzt konfigurieren wir Fluentd, um Logs von unseren ehemaligen Syslog-Clients zu akzeptieren:



  @type syslog
  port 5140
  tag system



  @type forward
  send_timeout 60s
  recover_wait 10s
  hard_timeout 60s

  
    name loki_server
    host 10.0.0.1
    port 24224
  

XML

Diese Konfiguration weist Fluentd an, Syslog-Nachrichten auf Port 5140 zu empfangen und an unseren Loki-Server weiterzuleiten. Einfach, oder?

Schritt 3: Vector - Der neue Sheriff in der Stadt

Während Fluentd großartig ist, ist Vector der coole Neue, der alle Blicke auf sich zieht. Es ist blitzschnell, verbraucht weniger CPU und Speicher und hat eine Konfiguration, die Sie nicht in den Wahnsinn treibt. Fügen wir Vector zu unserem Mix hinzu:


# Installieren Sie Vector
curl --proto '=https' --tlsv1.2 -sSf https://sh.vector.dev | sh

# Starten Sie Vector
sudo systemctl start vector
Bash

Jetzt konfigurieren wir Vector, um zusammen mit Fluentd zu arbeiten:


[sources.syslog]
type = "syslog"
address = "0.0.0.0:514"
mode = "tcp"

[transforms.parse_syslog]
type = "remap"
inputs = ["syslog"]
source = '''
. = parse_syslog!(.message)
'''

[sinks.loki]
type = "loki"
inputs = ["parse_syslog"]
endpoint = "http://10.0.0.1:3100"
encoding.codec = "json"
labels = {job = "vector_logs"}
TOML

Diese Konfiguration weist Vector an, Syslog-Eingaben zu akzeptieren, sie zu parsen und dann an Loki zu senden. Es ist wie Fluentd, aber mit einem Hauch von "Ich habe gerade fünf Espressos getrunken"-Energie.

Schritt 4: Loki - Wo Logs zu Stars werden

Loki ist das letzte Stück unseres Logging-Puzzles. Es ist wie Prometheus, aber für Logs, und es funktioniert unglaublich gut mit Grafana. Lassen Sie uns es einrichten:


auth_enabled: false

server:
  http_listen_port: 3100

ingester:
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 5m
  chunk_retain_period: 30s

schema_config:
  configs:
  - from: 2020-05-15
    store: boltdb
    object_store: filesystem
    schema: v11
    index:
      prefix: index_
      period: 168h

storage_config:
  boltdb:
    directory: /tmp/loki/index

  filesystem:
    directory: /tmp/loki/chunks

limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h
YAML

Diese Konfiguration richtet Loki so ein, dass es Logs sowohl von Fluentd als auch von Vector akzeptiert. Es ist wie der coole Club, in dem alle Logs abhängen.

Das große Finale: Alles zusammenfügen

Jetzt, da wir alle Teile an ihrem Platz haben, sehen wir uns an, wie diese schöne Logging-Symphonie funktioniert:

  1. Ihre Anwendungen senden Logs entweder an Fluentd oder Vector (oder beide, wir urteilen nicht)
  2. Fluentd und Vector parsen, transformieren und leiten die Logs an Loki weiter
  3. Loki speichert die Logs effizient und macht sie für Abfragen verfügbar
  4. Sie verwenden Grafana, um schöne Dashboards und Alarme basierend auf Ihren Logs zu erstellen

Und so haben Sie sich vom Log-Äquivalent eines Klapphandys zu einem hochmodernen Smartphone entwickelt. Ihre Logs sind jetzt strukturiert, durchsuchbar und tatsächlich nützlich. Außerdem können Sie Ihre Kollegen mit Ausdrücken wie "Log-Aggregation" und "Observability-Pipeline" beeindrucken.

Fazit: Logging in die Zukunft

Der Umstieg von Syslog auf eine moderne, zentralisierte Logging-Lösung mit Fluentd, Vector und Loki mag wie eine gewaltige Aufgabe erscheinen, aber die Vorteile sind es wert. Sie werden eine bessere Leistung, verbesserte Skalierbarkeit und die Fähigkeit haben, die Nadel im Log-Heuhaufen zu finden, wenn Sie sie brauchen.

Denken Sie daran, die Reise von tausend Logs beginnt mit einer einzigen Konfigurationsdatei. Also gehen Sie voran, mutiger Logger, und mögen Ihre Logs immer zu Ihren Gunsten sein!

"Das Einzige, was schlimmer ist, als keine Logs zu haben, ist, Logs zu haben, die man nicht versteht." - Jeder DevOps-Ingenieur jemals

Nun, wenn Sie mich entschuldigen, ich habe einige Logs zu parsen. Viel Spaß beim Logging!