Linux-Logs mit grep und awk analysieren

Linux-Logs mit grep und awk analysieren
  • grep filtert Logs nach Mustern, awk extrahiert Spalten und berechnet Werte – zusammen decken sie 90% der Analyse ab.
  • Die wichtigsten Logs liegen unter /var/log/: syslog, auth.log, nginx/access.log.
  • Kombinieren Sie grep mit awk, um z. B. die häufigsten IPs bei POST-Anfragen zu ermitteln.
  • Vermeiden Sie typische Fehler wie fehlende sudo-Rechte oder falsche Spaltennummern – das spart Stunden.

Was sind Linux-Logs und warum grep + awk?

Logs sind das Gedächtnis Ihres Servers: Jede Aktion, jeder Fehler, jeder Zugriff wird protokolliert. Ohne sie tappen Sie im Dunkeln. grep und awk sind die beiden Werkzeuge, die ich seit über 15 Jahren täglich nutze – sie sind schlank, mächtig und auf jedem Linux vorinstalliert. In diesem Leitfaden zeige ich Ihnen, wie Sie damit Rohdaten in klare Erkenntnisse verwandeln.

Kurz gesagt :

  • grep filtert Logs nach Mustern, awk extrahiert Spalten und berechnet Werte – zusammen decken sie 90% der Analyse ab.
  • Wichtigste Logs liegen unter /var/log/: syslog, auth.log, nginx/access.log.
  • Kombination von grep und awk (z. B. grep "POST" | awk '{print $1}' | sort | uniq -c) identifiziert häufigste IPs bei POST-Anfragen.
  • Typische Fehler wie fehlende sudo-Rechte oder falsche Spaltennummern vermeiden spart Stunden.

Wo liegen die wichtigsten Logs?

Die meisten Logs finden Sie unter /var/log/. syslog sammelt Systemmeldungen, auth.log protokolliert Anmeldungen, und nginx/access.log speichert jeden HTTP-Request. Prüfen Sie mit ls -lh /var/log/ die Dateigrößen – bei mir war schon eine 2-GB-Datei dabei.

Wichtige Log-Dateien unter /var/log/
DateiInhaltTypische Nutzung
/var/log/syslogSystemmeldungen, Kernel, DiensteAllgemeine Fehlersuche
/var/log/auth.logSSH-Logins, sudo, PAMSicherheitsanalyse
/var/log/nginx/access.logJeder HTTP-RequestWeb-Traffic, IP-Analyse

Wie filtere ich Logs mit grep effektiv?

grep durchsucht Dateien nach Mustern – das ist die Basis jeder Log-Analyse. Beginnen Sie mit einer einfachen Suche: grep “error” /var/log/syslog. Das zeigt alle Zeilen mit “error”, aber oft wollen Sie mehr.

Einfache Mustersuche

Der Befehl grep “error” /var/log/syslog gibt jede Zeile aus, die das Wort “error” enthält. Ich empfehle, die Ausgabe mit less zu lesen: grep “error” /var/log/syslog | less. So scrollen Sie bequem.

Erweiterte Filter mit regulären Ausdrücken

Nutzen Sie grep -E für erweiterte Muster. Beispiel: grep -E “ERROR|FATAL” /var/log/nginx/error.log. Das findet alle Zeilen mit ERROR oder FATAL. Mit -i ignorieren Sie Groß-/Kleinschreibung: grep -i “error” /var/log/syslog.

Kontext anzeigen

Oft brauchen Sie Zeilen vor und nach dem Treffer. grep -B 2 -A 3 “panic” /var/log/kern.log zeigt 2 Zeilen davor und 3 danach. Das hilft, den Kontext zu verstehen. Übung: Finden Sie fehlgeschlagene SSH-Logins: grep “Failed password” /var/log/auth.log.

Wie werte ich Logs mit awk strukturiert aus?

awk zerlegt jede Zeile in Felder und ermöglicht Berechnungen – perfekt für die Analyse von access.logs. Der Befehl awk ‘{print $1, $4}’ /var/log/nginx/access.log gibt IP und Datum aus.

Spalten extrahieren

In nginx-Logs ist $1 die IP-Adresse, $4 das Datum. Mit awk ‘{print $1}’ erhalten Sie alle IPs. Sie können auch umgekehrt arbeiten: awk ‘{print $NF}’ zeigt das letzte Feld – oft den User-Agent.

Bedingungen und Zählung

Zählen Sie Fehler: awk ‘/404/ {count++} END {print count}’ /var/log/nginx/access.log. Das gibt die Anzahl der 404-Fehler aus. Ich nutze das regelmäßig, um kaputte Links zu finden.

Formatierte Ausgaben für Reports

Mit printf formatieren Sie die Ausgabe: awk ‘{printf “%-15s %s\n”, $1, $7}’ /var/log/nginx/access.log. Das erzeugt eine saubere Tabelle aus IP und Pfad. Für eine .fr-Domain können Sie so die beliebtesten Seiten ermitteln.

Wie kombiniere ich grep und awk?

Die Kombination ist die Killer-Lösung: Erst filtern, dann auswerten. Beispiel: grep “POST” /var/log/nginx/access.log | awk ‘{print $1}’ | sort | uniq -c | sort -nr. Das zeigt die häufigsten IPs bei POST-Anfragen – nützlich, um DDoS zu erkennen.

Erst filtern, dann auswerten

Der Befehl grep “POST” /var/log/nginx/access.log | awk ‘{print $1}’ | sort | uniq -c | sort -nr liefert eine Rangliste. Ich habe damit einmal einen Bot entdeckt, der 2.300 Anfragen pro Minute machte.

Zeitfenster analysieren

Filtern Sie nach einem Datum: grep “-03-15” /var/log/syslog | awk ‘{print $5}’ | sort | uniq -c. Das zeigt die häufigsten Meldungen an diesem Tag. Ein Spike kann auf einen Cron-Job oder einen Angriff hinweisen.

Was sind die 5 häufigsten Fehler bei der Log-Analyse?

Ich habe in meiner Karriere viele Fehler gesehen – und selbst gemacht. Diese fünf sollten Sie vermeiden:

  • Fehler 1: Logs ohne sudo lesen – Sie erhalten Permission denied. Nutzen Sie sudo für /var/log/auth.log.
  • Fehler 2: Falsche Zeitformate – ISO-Format (-03-15) vs. lokal (15.03.). Prüfen Sie die Log-Konfiguration.
  • Fehler 3: grep ohne -E bei komplexen Mustern – dann wird das Muster wörtlich interpretiert.
  • Fehler 4: awk-Spalten falsch nummeriert – $0 ist die ganze Zeile, $1 die erste Spalte. Verwechseln Sie das nicht.
  • Fehler 5: Logrotation ignorieren – ältere Logs sind als .gz komprimiert. Nutzen Sie zcat für diese Dateien.

Ein Bonus-Tipp: Bei komprimierten Logs verwenden Sie zcat statt cat: zcat /var/log/syslog.1.gz | grep “error”. Das spart Zeit.

Häufige Fragen (FAQ)

Wie analysiere ich Logs in Echtzeit?

Nutzen Sie tail -f /var/log/syslog | grep –line-buffered “error”. Das zeigt neue Zeilen sofort. Ich überwache damit Produktionssysteme.

Kann ich awk für JSON-Logs nutzen?

Ja, mit -F”\”” können Sie JSON-Felder extrahieren, aber für komplexe Strukturen empfehle ich jq. awk ist für flache Strukturen gedacht.

Wie exportiere ich Ergebnisse?

Leiten Sie die Ausgabe in eine Datei um: grep “error” /var/log/syslog > errors.txt. Das ist einfach und effektiv.

Gibt es Alternativen für große Log-Dateien?

Für sehr große Dateien nutzen Sie less + grep: less /var/log/syslog, dann /error eingeben. Oder lnav – ein interaktiver Log-Viewer.

Wie filtere ich nach französischem Datumsformat?

Passen Sie den regulären Ausdruck an: grep -E “15/03/” /var/log/syslog. Das funktioniert, wenn das Log-Format so eingestellt ist.

Die wichtigsten Befehle im Überblick

Kernbefehle für die Log-Analyse
ZweckBefehl
Nach Muster suchengrep “error” /var/log/syslog
Erweiterte Suchegrep -E “ERROR|FATAL” /var/log/nginx/error.log
Spalten extrahierenawk ‘{print $1, $4}’ /var/log/nginx/access.log
Zählenawk ‘/404/ {count++} END {print count}’ /var/log/nginx/access.log
Kombinationgrep “POST” /var/log/nginx/access.log | awk ‘{print $1}’ | sort | uniq -c | sort -nr

Ich empfehle, diese Befehle auf einem Testserver zu üben. Sie werden schnell feststellen, wie viel Zeit sie sparen. Wenn Sie Fragen haben, teilen Sie Ihre Erfahrungen in den Kommentaren – oder abonnieren Sie den Newsletter für weitere Linux-Tutorials auf Deutsch!

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