
- 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.
| Datei | Inhalt | Typische Nutzung |
|---|---|---|
| /var/log/syslog | Systemmeldungen, Kernel, Dienste | Allgemeine Fehlersuche |
| /var/log/auth.log | SSH-Logins, sudo, PAM | Sicherheitsanalyse |
| /var/log/nginx/access.log | Jeder HTTP-Request | Web-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
| Zweck | Befehl |
|---|---|
| Nach Muster suchen | grep “error” /var/log/syslog |
| Erweiterte Suche | grep -E “ERROR|FATAL” /var/log/nginx/error.log |
| Spalten extrahieren | awk ‘{print $1, $4}’ /var/log/nginx/access.log |
| Zählen | awk ‘/404/ {count++} END {print count}’ /var/log/nginx/access.log |
| Kombination | grep “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!




