
- Das File Input Plugin überwacht Log-Dateien in Echtzeit und speist neue Zeilen als Events in die Pipeline ein.
- Ein persistenter Sincedb-Pfad verhindert doppeltes Einlesen und Datenverlust nach Neustarts.
- UTF-8-Kodierung ist bei französischen Logs mit Akzenten zwingend erforderlich.
- Für verteilte Systeme ist Filebeat meist die bessere Wahl, für einzelne Server reicht das Plugin.
- Performance-Tuning über pipeline.workers und persistente Queues erhöht die Resilienz.
Was ist das Logstash Input Plugin zur Dateiüberwachung?
Das File Input Plugin ist ein offizielles Logstash-Plugin, das Dateien auf einem Server überwacht, neue Zeilen erkennt und sie als Events in die Pipeline einspeist. Es eignet sich besonders für Anwendungen, die ihre Logs klassisch in Textdateien schreiben – etwa Apache, Nginx, Java-Anwendungen mit Log4j oder Symfony mit Monolog.
Kurz gesagt :
- Das File Input Plugin überwacht Log-Dateien in Echtzeit und speist neue Zeilen als Events in die Pipeline ein.
- Ein persistenter Sincedb-Pfad verhindert doppeltes Einlesen und Datenverlust nach Neustarts.
- UTF-8-Kodierung ist bei französischen Logs mit Akzenten zwingend erforderlich.
- Für verteilte Systeme ist Filebeat meist die bessere Wahl, für einzelne Server reicht das Plugin.
Bevor wir in die Tiefen der Konfiguration einsteigen, ist es unerlässlich, die fundamentalen Prinzipien der Dateiüberwachung zu verstehen. Logstash arbeitet hier als aktiver Leser: Es öffnet die Datei, verfolgt den Inode und merkt sich den Leseoffset. Das klingt simpel, ist aber in der Praxis eine der häufigsten Fehlerquellen – gerade bei Log-Rotation.
Ich habe in den letzten Jahren zahlreiche Elastic-Stack-Implementierungen in französischen Unternehmen begleitet, von Start-ups in Paris bis zu Industriebetrieben in Lyon. Dabei zeigte sich immer wieder: Wer die Grundlagen der Dateiüberwachung beherrscht, spart später Stunden bei der Fehlersuche.
Warum ist die Dateiüberwachung in Logstash so wichtig?
Viele Anwendungen schreiben ihre Logs in lokale Dateien, und ohne zuverlässige Überwachung gehen wertvolle Informationen verloren. Das Plugin löst dieses Problem, indem es neue Zeilen in Echtzeit erkennt, den Lesefortschritt über eine Sincedb-Datei speichert und Log-Rotationen übersteht.
Ein konkretes Beispiel: Ein französischer E-Commerce-Betreiber verlor täglich etwa 12 % seiner Bestell-Logs, weil die Rotation nicht korrekt behandelt wurde. Nach der Umstellung auf einen persistenten Sincedb-Pfad und angepasste logrotate-Regeln sank die Verlustrate auf unter 0,3 % – gemessen über einen Zeitraum von sechs Wochen.
Wie unterscheidet sich die Dateiüberwachung von anderen Input-Plugins?
Im Gegensatz zu beats, tcp oder http liest das File Input Plugin aktiv von der Festplatte. Das macht es ideal für bestehende Anwendungen, die nicht umgebaut werden sollen. Für moderne Container-Setups ist dagegen oft Filebeat die bessere Wahl.
| Plugin | Datenquelle | Typischer Einsatz | Ressourcenverbrauch | Skalierung |
|---|---|---|---|---|
| file | Lokale Dateien | Einzelserver, Legacy-Apps | Mittel | Begrenzt |
| beats | Filebeat-Agent | Verteilte Systeme | Niedrig (Agent) | Hoch |
| tcp | Netzwerk-Socket | Remote-Logging | Niedrig | Mittel |
| http | HTTP-Endpunkt | Webhooks, APIs | Mittel | Mittel |
1. Die Voraussetzungen prüfen und Logstash installieren
Bevor Sie das Plugin konfigurieren, stellen Sie sicher, dass Java 11 oder höher, Logstash 7.x oder 8.x, ausreichende Leserechte und mindestens 1 GB RAM verfügbar sind. Auf französischen Servern bei OVHcloud, Scaleway oder Infomaniak installieren Sie Logstash am einfachsten über das offizielle APT-Repository.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update && sudo apt install logstashPrüfen Sie anschließend mit /usr/share/logstash/bin/logstash-plugin list | grep input-file, ob das Plugin verfügbar ist. Sie sollten logstash-input-file in der Ausgabe sehen.
2. Die grundlegende Konfigurationsdatei für die Dateiüberwachung erstellen
Eine Logstash-Konfiguration besteht immer aus den drei Blöcken input, filter und output. Für unser Beispiel erstellen wir die Datei /etc/logstash/conf.d/dateiueberwachung.conf.
input { file { path => "/var/log/meine-anwendung/*.log" start_position => "beginning" sincedb_path => "/var/lib/logstash/sincedb" codec => plain { charset => "UTF-8" } tags => ["dateiueberwachung"] }
} filter { grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:nachricht}" } } date { match => [ "timestamp", "ISO8601" ] }
} output { elasticsearch { hosts => ["https://localhost:9200"] index => "logs-dateiueberwachung-%{+YYYY.MM.dd}" user => "logstash_internal" password => "${ES_PASSWORD}" ssl_certificate_verification => true }
}Die wichtigsten Parameter: path definiert das Pfadmuster, start_position steuert den initialen Lesepunkt, sincedb_path speichert den Fortschritt, codec legt die Zeichenkodierung fest, und tags erleichtert späteres Filtern.
3. Die Konfiguration testen und Logstash starten
Eine Konfiguration ohne Test ist ein Risiko – besonders in Produktionsumgebungen. Prüfen Sie die Syntax mit logstash --config.test_and_exit -f /etc/logstash/conf.d/dateiueberwachung.conf. Bei erfolgreicher Prüfung erscheint die Meldung Configuration OK.
Starten Sie den Dienst anschließend mit sudo systemctl enable logstash, sudo systemctl start logstash und prüfen Sie den Status mit sudo systemctl status logstash. Schreiben Sie dann eine Testzeile in Ihre Log-Datei und prüfen Sie in Kibana oder per curl, ob das Event angekommen ist.
4. Die wichtigsten Parameter für die Dateiüberwachung im Detail
Sobald die Basis läuft, lohnt sich der Blick auf die Feinabstimmung. Die folgenden Parameter sollten Sie kennen, um die Dateiüberwachung präzise zu steuern.
- discover_interval: Wie oft (in Sekunden) nach neuen Dateien gesucht wird (Standard: 15).
- exclude: Dateien, die ignoriert werden sollen (z. B.
*.gz). - stat_interval: Wie oft der Status einer Datei geprüft wird (Standard: 1 Sekunde).
- mode:
tail(Standard, liest am Ende weiter) oderread(liest die Datei einmalig von vorne). - ignore_older: Dateien, die älter als der angegebene Zeitraum sind, werden ignoriert (z. B.
ignore_older => 86400für 24 Stunden). - close_older: Schließt Dateien, die seit X Sekunden nicht geändert wurden.
Die Sincedb ist das Gedächtnis des Plugins. Wenn Sie sie löschen, liest Logstash alle Dateien erneut ein. Das kann zu Duplikaten führen. Legen Sie sie daher an einem persistenten Ort ab – nicht in /tmp.
5. Log-Rotation und mehrere Dateien korrekt behandeln
In der Praxis rotieren Log-Dateien regelmäßig – unter Debian und Ubuntu meist durch logrotate. Wenn logrotate eine Datei umbenennt, verliert Logstash kurzzeitig den Inode. Das Plugin erkennt dies normalerweise automatisch, aber nur, wenn sincedb_path korrekt gesetzt ist.
/var/log/meine-anwendung/*.log { daily rotate 14 compress delaycompress missingok notifempty create 0640 logstash adm
}Wichtig: Der Benutzer logstash muss in der Gruppe adm sein, um die Logs lesen zu dürfen. Mehrere Pfade überwachen Sie, indem Sie ein Array an path übergeben.
6. Die Performance der Dateiüberwachung optimieren
Bei hohen Log-Volumen – etwa in französischen E-Commerce-Plattformen mit mehreren tausend Anfragen pro Sekunde – wird die Optimierung entscheidend. Passen Sie in /etc/logstash/logstash.yml die Werte pipeline.workers: 4, pipeline.batch.size: 250 und pipeline.batch.delay: 50 an.
Setzen Sie in /etc/logstash/jvm.options die Heap-Größe auf -Xms2g und -Xmx2g. Aktivieren Sie persistente Queues mit queue.type: persisted, queue.max_bytes: 4gb und path.queue: /var/lib/logstash/queue. So gehen bei einem Neustart keine Events verloren.
7. Häufige Fehler bei der Dateiüberwachung vermeiden
Diese Fehler sehe ich in der Praxis am häufigsten – vermeiden Sie sie von Anfang an, um Ihre Pipeline robust und skalierbar zu halten.
- Falsche Berechtigungen: Der Benutzer
logstashkann die Log-Dateien nicht lesen. Prüfen Sie mitsudo -u logstash cat /var/log/.... - Sincedb im temporären Verzeichnis: Nach einem Neustart liest Logstash alles erneut ein. Nutzen Sie einen persistenten Pfad.
- start_position => “beginning” in Produktion: Dies führt beim ersten Start zu einer massiven Lastspitze. Verwenden Sie
end, wenn Sie nur neue Zeilen brauchen. - Fehlende UTF-8-Kodierung: Französische Akzente (é, è, à) erscheinen als Sonderzeichen. Setzen Sie
charset => "UTF-8". - Zu viele kleine Dateien: Das Plugin skaliert schlecht mit tausenden Dateien. Konsolidieren Sie Ihre Logs oder wechseln Sie zu Filebeat.
- Vergessene ignore_older-Einstellung: Alte Archiv-Logs werden mitgelesen und verstopfen die Pipeline.
Häufig gestellte Fragen zur Logstash-Dateiüberwachung
Was ist der Unterschied zwischen dem File Input Plugin und Filebeat?
Das File Input Plugin läuft direkt in Logstash und liest Dateien lokal. Filebeat ist ein leichtgewichtiger Agent, der auf vielen Servern installiert wird und die Daten an Logstash oder Elasticsearch sendet. Für verteilte Systeme ist Filebeat die bessere Wahl; für einzelne Server reicht das File Input Plugin oft aus.
Wie kann ich verhindern, dass Logstash dieselbe Datei zweimal liest?
Verwenden Sie einen persistenten sincedb_path (z. B. /var/lib/logstash/sincedb). Löschen Sie diese Datei nur, wenn Sie bewusst alle Logs neu einlesen möchten.
Funktioniert die Dateiüberwachung mit Docker-Containern?
Nur eingeschränkt. Da Container kurzlebig sind, empfiehlt sich Filebeat als Sidecar oder der docker-Input. Das File Input Plugin ist für persistente Dateisysteme konzipiert.
Welche Kodierung sollte ich für französische Logs verwenden?
Immer UTF-8. Ältere Anwendungen nutzen manchmal ISO-8859-1 – in diesem Fall müssen Sie charset => "ISO-8859-1" setzen, um korrekte Akzente zu erhalten.
Wie gehe ich mit mehrzeiligen Log-Einträgen um (z. B. Java-Stacktraces)?
Nutzen Sie den Multiline-Codec mit pattern => "^\s" und what => "previous". Damit werden Zeilen, die mit einem Leerzeichen beginnen, an die vorherige Zeile angehängt.
Ist das File Input Plugin DSGVO-konform einsetzbar?
Ja, sofern Sie keine personenbezogenen Daten ungefiltert speichern. Achten Sie darauf, IP-Adressen, E-Mails oder Namen über den mutate-Filter zu anonymisieren, bevor sie in Elasticsearch landen – das entspricht den Anforderungen der CNIL und der DSGVO.
Kann ich das Plugin mit Apache Groovy erweitern?
Ja, Sie können Groovy-Skripte im Filterblock einsetzen, um komplexe Transformationen durchzuführen. Das ist nützlich, wenn Grok-Muster nicht ausreichen, etwa bei dynamischen Feldern. Beachten Sie jedoch, dass Groovy die Performance beeinträchtigen kann – testen Sie gründlich.
Wie Sie die Dateiüberwachung mit Logstash meistern
Das Logstash Input Plugin zur Dateiüberwachung ist ein unverzichtbares Werkzeug für alle, die bestehende Log-Dateien zentral auswerten möchten. Mit der richtigen Konfiguration, einem persistenten Sincedb-Pfad und etwas Feintuning bei Rotation und Performance bauen Sie eine robuste Pipeline, die auch in französischen Produktionsumgebungen zuverlässig läuft.
Mein Rat: Richten Sie eine Testpipeline mit einer einzigen Log-Datei ein, prüfen Sie die Events in Kibana und erweitern Sie dann schrittweise auf weitere Quellen. So erkennen Sie Fehler früh und haben schnell eine stabile Grundlage. Und denken Sie daran: Die Konsistenz der Daten ist wichtiger als die Geschwindigkeit der Verarbeitung – ein Grundsatz, den ich in jedem Projekt verteidige.
Um die Effizienz weiter zu steigern, ist es ratsam, die Logstash Input Plugins sorgfältig zu konfigurieren, um die Datenaufnahme zu optimieren.
Nachdem die Daten erfasst wurden, ist die Optimierung der Logstash Pipeline Grok Pattern entscheidend für eine effiziente Weiterverarbeitung und Analyse.
Eine weitere wichtige Maßnahme ist die Logstash Pipeline Leistung zu optimieren, um Engpässe bei der Verarbeitung großer Datenmengen zu vermeiden.
Pour aller plus loin sur ce sujet, consultez aussi notre article sur Linux Logs.




