Wenn du ein großes Logfile analysierst, möchtest du oft nicht alles sehen, sondern nur die relevanten Zeilen.
Dafür ist grep das Standard-Tool: Es durchsucht Text nach Mustern und gibt nur die passenden Zeilen aus.
Mit Regex wird es noch flexibler – du kannst damit auch komplexe Muster erkennen.

🔹 Grundlagen von grep

Syntax:

grep MUSTER datei

Beispiele:

  • Alle Zeilen mit „ERROR“:
    grep "ERROR" syslog
  • Suche unabhängig von Groß-/Kleinschreibung:
    grep -i "error" syslog
  • Zeilennummern mit ausgeben:
    grep -n "ssh" auth.log

🔹 Negative Suche mit -v

Manchmal willst du gerade die Zeilen sehen, die nicht ein bestimmtes Muster enthalten:

grep -v "INFO" server.log

👉 Zeigt alles außer den INFO-Meldungen.

🔹 Kontext anzeigen (-A, -B, -C)

  • 3 Zeilen nach dem Treffer:
    grep -A 3 "ERROR" syslog
  • 2 Zeilen vor dem Treffer:
    grep -B 2 "ERROR" syslog
  • 1 Zeile davor und danach:
    grep -C 1 "ERROR" syslog

🔹 Reguläre Ausdrücke mit grep

Mit -E (oder egrep) kannst du erweiterte Regex nutzen.

  • Alle Zeilen, die mit einer Zahl beginnen:
    grep -E "^[0-9]" syslog
  • Nur Zeilen mit Statuscode 404 oder 500:
    grep -E "404|500" access.log
  • Nur Zeilen mit IP-Adressen:
    grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" access.log

👉 Regex macht Suchmuster sehr flexibel.

🔹 Beispiel: SSH-Logins analysieren

Datei: /var/log/auth.log

  • Nur fehlgeschlagene Logins:
    grep "Failed password" auth.log
  • Nur erfolgreiche Logins (egal ob Passwort oder Key):
    grep "Accepted" auth.log
  • Alle SSH-Meldungen (Groß-/Kleinschreibung egal):
    grep -i "ssh" auth.log

🔹 grep in Kombination mit tail

Logs live überwachen, aber nur bestimmte Ereignisse sehen:

tail -f syslog | grep "ERROR"

👉 Damit siehst du nur neue Fehler, die währenddessen entstehen.

🔹 Übungen

1. Öffne /var/log/syslog und finde:

  • alle „error“-Meldungen (case-insensitive).
  • alle Meldungen, die nicht „info“ enthalten.

2. Suche in /var/log/auth.log:

  • alle fehlgeschlagenen Login-Versuche.
  • alle erfolgreichen Logins.
  • Bonus: nur die letzten 20 davon (mit tail).

3. Nimm ein Apache-Access-Log (/var/log/apache2/access.log):

  • Finde alle 404-Fehler.
  • Finde nur die IPs, die solche Fehler verursacht haben.

✅ Zusammenfassung

grep filtert Logs nach Mustern.

  • Mit -i, -n, -v, -A/-B/-C kannst du die Suche verfeinern.
  • Mit Regex (-E) lassen sich komplexe Muster beschreiben (IP-Adressen, Statuscodes, Wortgrenzen).
  • Mit tail -f | grep bekommst du Live-Filterung.

👉 Im nächsten Kapitel lernst du, wie du mit sed Logs bereinigst – z. B. Kommentare, Timestamps oder unnötige Informationen entfernst.

 

📚 Inhaltsverzeichnis

👉 Log-Analyse Kapitel 1: Logs im Terminal lesen – cat, less, tail & grep
👉 Log-Analyse Kapitel 2: Filtern mit grep und regulären Ausdrücken
👉 Log-Analyse Kapitel 3: Logs bereinigen mit sed – inkl. Mehrdatei-Änderungen
👉 Log-Analyse Kapitel 4: Logs analysieren mit awk
👉 Log-Analyse Kapitel 5: Logs kombinieren mit grep, sed, awk, sort, uniq & cut
👉 Log-Analyse Kapitel 6: Praxisprojekt – Apache-/Nginx-Access-Logs analysieren
👉 Log-Analyse Kapitel 7: Praxisprojekt – Systemlogs analysieren (auth.log & journalctl)

⭐ Bonus-Kapitel

👉 Log-Analyse Kapitel 8 (Bonus): Eigene Auswertungs-Skripte für Logs schreiben
👉 Log-Analyse Kapitel 9 (Bonus): Logs visualisieren mit CSV & gnuplot