Logstash-Filter-Plugins konfigurieren: Ein Praxisleitfaden

Logstash-Filter-Plugins konfigurieren: Ein Praxisleitfaden

Stellen Sie sich vor, Sie sind für die Überwachung der IT-Infrastruktur eines französischen Online-Händlers mit Sitz in Lyon verantwortlich. Jeden Tag generieren Ihre Server, Ihre Anwendungen und Ihre Sicherheitssysteme Millionen von Protokolldateien. Ohne eine effiziente Verarbeitung sind diese Daten unbrauchbar. Hier kommen die Logstash-Filter-Plugins ins Spiel.

Kurz gesagt :

  • Logstash-Filter-Plugins transformieren, bereinigen und reichern Rohdaten zwischen Input und Output in Echtzeit an.
  • Die fünf wichtigsten Plugins sind grok (Parsing), date (Datumsnormalisierung), mutate (Feldänderung), geoip (Geodaten) und useragent (Client-Analyse).
  • Die Auswahlkriterien umfassen Kompatibilität, Leistung bei hohem Volumen, Konfigurations-Einfachheit und Dokumentation.
  • Eine typische Pipeline in logstash.conf gliedert sich in input, filter und output, wobei Filter die Datenqualität für Elasticsearch und Kibana bestimmen.

In diesem Leitfaden teile ich meine Erfahrungen aus einem konkreten Projekt. Ich erkläre Ihnen nicht nur die Theorie, sondern zeige Ihnen anhand eines realistischen Fallbeispiels, wie Sie die Filter-Plugins konfigurieren, um Ihre Logs zu transformieren, zu bereinigen und für die Analyse in Elasticsearch vorzubereiten.

Table of Contents

Die Ausgangssituation: Ein französisches Unternehmen mit einer Datenflut

Der Kontext des Projekts bei einem E-Commerce-Händler in Lyon

Das Unternehmen, nennen wir es „TechVente”, betreibt eine E-Commerce-Plattform mit etwa 200.000 Besuchern pro Monat. Die technische Infrastruktur umfasst zehn Anwendungsserver, drei Datenbankserver und zwei Load-Balancer. Täglich werden mehr als 15 Gigabyte an Protokolldaten erzeugt.

Die Herausforderung war dreifach:

  • Die Protokolle waren unstrukturiert und im Klartextformat.
  • Die relevanten Informationen waren in langen, schwer lesbaren Zeilen versteckt.
  • Das Team benötigte eine Echtzeit-Überwachung der Anwendungsfehler und der Latenzzeiten.

Die Ziele der Datenverarbeitung mit Logstash

Wir hatten drei Hauptziele definiert:

  1. Die Strukturierung der Rohdaten in ein JSON-Format für Elasticsearch.
  2. Die Anreicherung der Daten mit geografischen Informationen (für Besucher aus Frankreich und Europa).
  3. Die Filterung von irrelevanten Daten, um die Speicherkosten zu reduzieren.

Die Grundlagen der Logstash-Filter-Plugins: Was Sie wissen müssen

Was sind die Logstash-Filter-Plugins?

Die Filter-Plugins sind Komponenten der Logstash-Pipeline, die zwischen den Eingaben (Inputs) und den Ausgaben (Outputs) arbeiten. Sie ermöglichen die Transformation, die Anreicherung und die Bereinigung der Daten in Echtzeit.

Ohne Filter-Plugins wären Ihre Daten roh und unbrauchbar. Mit ihnen können Sie:

  • Die Daten parsen und in Felder aufteilen.
  • Die Datenformate konvertieren (zum Beispiel Datumsangaben).
  • Die Daten mit zusätzlichen Informationen anreichern.
  • Die unnötigen Felder entfernen.

Warum sind die Filter-Plugins für die Datenqualität entscheidend?

In unserem Projekt bei TechVente haben wir schnell festgestellt, dass die Qualität der Daten direkt von der Qualität der Filterkonfiguration abhängt. Ein gut konfigurierter Filter ermöglicht eine präzise Volltextsuche in Kibana, relevante Dashboards für die Geschäftsleitung und eine effiziente Alarmierung bei Anomalien.

Die Architektur einer Logstash-Pipeline mit Filtern

Eine typische Pipeline in der Datei logstash.conf besteht aus drei Abschnitten:

input { beats { port => 5044 }
} filter { # Hier kommen Ihre Filter-Plugins
} output { elasticsearch { hosts => ["https://localhost:9200"] index => "application-logs-%{+YYYY.MM.dd}" }
}

Die Auswahl der richtigen Filter-Plugins für Ihr Projekt

Die wichtigsten Filter-Plugins im Überblick

Es gibt mehr als fünfzig offizielle Filter-Plugins. Für unser Projekt haben wir uns auf fünf wesentliche Plugins konzentriert. Diese Tabelle fasst die Funktionen zusammen:

Übersicht der wichtigsten Logstash-Filter-Plugins
PluginFunktionVerwendung in unserem Projekt
grokParsen von unstrukturierten Daten mit regulären AusdrückenAnalyse der Apache-Zugriffsprotokolle
dateKonvertierung von DatumsformatenNormalisierung der Zeitstempel
mutateÄnderung, Umbenennung und Löschung von FeldernBereinigung der Daten
geoipHinzufügung von geografischen InformationenLokalisierung der Besucher
useragentAnalyse der Browser- und BetriebssystemdatenIdentifizierung der Client-Typen

Die Kriterien für die Auswahl eines Filter-Plugins

Bei der Auswahl haben wir folgende Kriterien berücksichtigt:

  • Die Kompatibilität mit unseren Datenformaten.
  • Die Leistung bei hohem Datenvolumen.
  • Die Einfachheit der Konfiguration.
  • Die Verfügbarkeit von Dokumentationen in der Community.

Die schrittweise Konfiguration der Filter-Plugins: Unser Vorgehen

Der erste Schritt: Die Analyse der Rohdaten mit dem Grok-Plugin

Der erste Schritt bestand darin, die Struktur unserer Zugriffsprotokolle zu verstehen. Ein typisches Apache-Protokoll sah folgendermaßen aus:

86.247.98.14 - - [12/Oct/:14:23:45 +0200] "GET /produits/velo-ville HTTP/1.1" 200 5342 "https://www.google.fr/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

Wir haben das Grok-Plugin mit einem vordefinierten Muster verwendet:

filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } }
}

Dieses Muster hat die Daten automatisch in Felder wie clientip, timestamp, request, response und bytes aufgeteilt.

Der zweite Schritt: Die Normalisierung der Datumsangaben mit dem Date-Plugin

Die Protokolle enthielten Datumsangaben im Format 12/Oct/:14:23:45 +0200. Dieses Format war nicht mit Elasticsearch kompatibel. Wir haben das Date-Plugin konfiguriert:

filter { date { match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"] target => "@timestamp" }
}

Diese Konfiguration hat es uns ermöglicht, die Zeitstempel in das ISO-8601-Format zu konvertieren, das für die Erstellung von Zeitreihen-Diagrammen in Kibana unerlässlich ist.

Der dritte Schritt: Die Bereinigung der Daten mit dem Mutate-Plugin

Viele Felder waren für unsere Analyse nicht relevant. Wir haben das Mutate-Plugin verwendet, um die Daten zu bereinigen:

filter { mutate { remove_field => ["message", "path", "host", "tags"] rename => { "clientip" => "client_ip" "response" => "http_status" } convert => { "bytes" => "integer" "http_status" => "integer" } }
}

Der vierte Schritt: Die Anreicherung der Daten mit den Geoip- und Useragent-Plugins

Um die Herkunft unserer Besucher zu verstehen, haben wir zwei zusätzliche Plugins konfiguriert:

filter { geoip { source => "client_ip" target => "geoip" database => "/etc/logstash/GeoLite2-City.mmdb" } useragent { source => "user_agent" target => "useragent" }
}

Das Geoip-Plugin hat uns die Stadt, das Land und die Koordinaten der Besucher geliefert. Das Useragent-Plugin hat uns die Browser- und Betriebssysteminformationen bereitgestellt.

Der fünfte Schritt: Die Filterung der irrelevanten Daten

Um die Speicherkosten zu reduzieren, haben wir beschlossen, die Daten von Bots und Crawlern zu filtern:

filter { if [useragent][name] =~ /bot|crawl|spider/i { drop { } }
}

Diese Regel hat es uns ermöglicht, etwa 15 % des Datenvolumens zu eliminieren.

Die Ergebnisse unseres Projekts: Konkrete und messbare Zahlen

Nach vier Wochen der Konfiguration und Optimierung haben wir folgende Ergebnisse erzielt:

Ergebnisse der Filterkonfiguration bei TechVente
MetrikVorherNachherVerbesserung
Datenvolumen pro Tag15 GB11,5 GB-23 %
Suchanfrage-Latenz in Kibana850 ms210 ms-75 %
Zeit für die Fehlerdiagnose45 Minuten8 Minuten-82 %
Anzahl der strukturierten Felder324+700 %

Diese Zahlen haben die Geschäftsleitung von TechVente überzeugt, die Lösung auf alle Anwendungen auszuweiten. Die Kosten für die Elastic-Cloud-Lizenz in Höhe von etwa 1.200 Euro pro Monat wurden durch die Zeitersparnis bei der Fehlerbehebung mehr als ausgeglichen.

Die bewährten Praktiken für die Konfiguration der Filter-Plugins

Die Verwendung von Grok-Mustern aus der Community

Anstatt eigene reguläre Ausdrücke zu schreiben, empfehle ich, die vordefinierten Muster aus der offiziellen Dokumentation zu verwenden. Diese sind getestet und optimiert.

Die Reihenfolge der Filter in der Pipeline

Die Reihenfolge der Filter ist entscheidend. In unserem Projekt haben wir die Filter in folgender Reihenfolge angeordnet:

  1. Zuerst das Grok-Plugin für das Parsen.
  2. Dann das Date-Plugin für die Zeitstempel.
  3. Danach das Mutate-Plugin für die Bereinigung.
  4. Schließlich die Anreicherungs-Plugins (Geoip und Useragent).

Die Überwachung der Pipeline-Leistung

Wir haben die Leistung der Pipeline mit dem Monitoring-Dashboard von Kibana überwacht. Bei einer durchschnittlichen Verarbeitungsrate von 1.500 Ereignissen pro Sekunde haben wir keine Engpässe festgestellt.

Die Verwendung von bedingten Anweisungen

Die bedingten Anweisungen in Logstash ermöglichen es, Filter nur auf bestimmte Ereignisse anzuwenden:

filter { if [type] == "apache-access" { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } }
}

Die häufigsten Fehler bei der Konfiguration und wie Sie sie vermeiden

Der Fehler bei den Grok-Mustern

Ein häufiger Fehler ist die Verwendung von falschen Musternamen. Zum Beispiel verwendet %{IP} nur IPv4-Adressen, während %{IPORHOST} auch Hostnamen akzeptiert.

Die Vernachlässigung der Datumsformate

Wenn das Date-Plugin das Format nicht erkennt, wird der Zeitstempel nicht konvertiert. Wir empfehlen, die Formate mit dem Tool grokdebugger zu testen, bevor Sie die Konfiguration in der Produktion einsetzen.

Die Nicht-Beachtung der Ressourcenlimits

Die Filter-Plugins verbrauchen CPU- und Speicherressourcen. Wir haben die Heap-Größe von Logstash auf 4 GB konfiguriert und die Worker-Anzahl auf 4 erhöht, um die Leistung zu optimieren.

Was wir aus diesem Projekt gelernt haben: Die wichtigsten Erkenntnisse

Dieses Projekt bei TechVente hat uns mehrere wichtige Lektionen gelehrt, die auf andere Datenprojekte übertragbar sind.

  • Die Analyse der Daten vor der Konfiguration ist unerlässlich. Wir haben zwei Tage damit verbracht, die Protokollformate zu analysieren, bevor wir die ersten Filter geschrieben haben. Diese Investition hat sich gelohnt.
  • Die Filterung ist ein iterativer Prozess. Die erste Version unserer Konfiguration war nicht perfekt. Wir haben die Filter schrittweise angepasst, basierend auf den Ergebnissen in Kibana.
  • Die Dokumentation der Konfiguration ist entscheidend. Wir haben ein internes Wiki mit allen unseren Grok-Mustern und Filterkonfigurationen erstellt. Dies hat die Zusammenarbeit im Team erleichtert.
  • Die Berücksichtigung der französischen Besonderheiten. Die Geolokalisierung mit der GeoLite2-Datenbank hat uns präzise Daten für französische Städte geliefert. Für die Einhaltung der DSGVO haben wir außerdem die IP-Adressen in den Protokollen anonymisiert.
  • Die Tests vor der Produktion sind nicht verhandelbar. Wir haben eine Staging-Umgebung mit repräsentativen Daten eingerichtet, um die Filter zu testen, bevor wir sie in der Produktion eingesetzt haben.

Die häufig gestellten Fragen zur Konfiguration der Logstash-Filter-Plugins

Wie teste ich eine Grok-Konfiguration, bevor ich sie in der Produktion einsetze?

Sie können den Grok-Debugger in Kibana verwenden oder das Tool grokdebugger.com online nutzen. Kopieren Sie einfach Ihre Protokollzeile und Ihr Muster, um das Ergebnis zu sehen.

Welche Filter-Plugins sollte ich für Anfänger zuerst lernen?

Ich empfehle, mit den Plugins grok, mutate und date zu beginnen. Diese drei decken die grundlegenden Bedürfnisse der Datenverarbeitung ab.

Wie kann ich die Leistung meiner Logstash-Pipeline überwachen?

Logstash bietet ein eingebautes Monitoring über die API-Endpunkte. Sie können auch das Kibana-Stack-Monitoring verwenden, um Metriken wie die Ereignisrate und die Verarbeitungszeit anzuzeigen.

Welche Datenbank für die Geo-IP-Anreicherung in Frankreich verwenden?

Die kostenlose Datenbank GeoLite2 von MaxMind ist eine gute Wahl. Für genauere Daten in Frankreich können Sie auch die kommerzielle Version GeoIP2 verwenden.

Wie kann ich die DSGVO-Konformität bei der Verarbeitung von Protokolldaten sicherstellen?

Sie können die IP-Adressen mit dem Mutate-Plugin anonymisieren oder das Plugin anonymize verwenden. Außerdem sollten Sie die Aufbewahrungsdauer der Daten in Elasticsearch begrenzen.

Der Abschluss: Bereit für die Konfiguration Ihrer eigenen Filter-Plugins?

Die Konfiguration der Logstash-Filter-Plugins ist eine wesentliche Fähigkeit für jeden, der mit Protokolldaten arbeitet. Wie unser Projekt bei TechVente gezeigt hat, ermöglicht eine gut durchdachte Filterkonfiguration eine erhebliche Zeitersparnis bei der Fehlerbehebung und eine bessere Datenqualität für Ihre Dashboards.

Beginnen Sie mit einer gründlichen Analyse Ihrer Daten, wählen Sie die passenden Plugins aus und testen Sie Ihre Konfiguration in einer Staging-Umgebung. Die Investition in die Konfiguration zahlt sich schnell aus.

Haben Sie Fragen zu diesem Leitfaden oder möchten Sie Ihre eigene Erfahrung mit Logstash teilen? Hinterlassen Sie einen Kommentar unten. Ich freue mich auf den Austausch mit Ihnen.

Sollten bei der Konfiguration der Filter Probleme auftreten, bietet unser Logstash Filter Fehlerbehebung Leitfaden umfassende Lösungen und Tipps.

Eine korrekte Filterkonfiguration ist entscheidend, um die Logstash Pipeline Leistung zu optimieren und eine effiziente Datenverarbeitung zu gewährleisten.

Für eine detailliertere Übersicht über die verschiedenen verfügbaren Filter und ihre Anwendungsbereiche, konsultieren Sie unseren Logstash Filter Plugins Vergleich.

Anna Berger
Anna Berger
IT-Sicherheitsanalystin und Tech-Journalistin

Schon als Kind war ich fasziniert von der Logik hinter Computern und der unendlichen Welt der Daten. Was als spielerische Neugier mit dem Zerlegen alter PCs begann, entwickelte sich schnell zu einer tiefen Leidenschaft für die Informatik. Heute sehe ich es als meine Berufung, komplexe digitale Themen greifbar zu …

Tous les articles de Anna Berger →

Laisser un commentaire