Access-Logs von Webservern gehören zu den häufigsten Logdateien, mit denen Administratoren arbeiten.
Sie verraten dir:

  • wer (IP-Adresse) deine Seite besucht hat,
  • was (Pfad) angefragt wurde,
  • wann (Datum/Uhrzeit) es passiert ist,
  • und wie erfolgreich (Statuscode) die Anfrage war.

In diesem Kapitel führen wir eine vollständige Analyse durch.

🔹 Aufbau eines Access-Logs

Beispielzeile (Apache-Log):

192.168.1.10 - - [24/Sep/2025:14:22:15 +0200] "GET /index.html HTTP/1.1" 200 532
  • $1 → IP-Adresse
  • $4 → Zeitstempel (Datum & Uhrzeit)
  • $6 → HTTP-Methode
  • $7 → Pfad (angeforderte Seite)
  • $9 → Statuscode
  • $10 → Größe der Antwort in Bytes

🔹 Top 10 Besucher-IPs

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

Ausgabe:

120 203.0.113.42
 80 192.168.1.10
 45 10.0.0.5

👉 Zeigt die aktivsten Clients.

🔹 Häufigste Seitenaufrufe

awk '{print $7}' access.log | sort | uniq -c | sort -nr | head

Ausgabe:

200 /index.html
150 /about.html
 75 /contact.html

👉 Welche Inhalte sind am beliebtesten?

🔹 Statuscode-Übersicht

awk '{print $9}' access.log | sort | uniq -c | sort -nr

Ausgabe:

400 200
 50 404
 10 500

🔹 Fehler-IPs finden (404 & 500)

awk '$9 ~ /404|500/ {print $1}' access.log | sort | uniq -c | sort -nr | head

Ausgabe:

25 203.0.113.42
15 192.168.1.10

👉 Praktisch, um mögliche Angreifer oder Bots zu identifizieren.

🔹 Traffic pro Stunde

Zeitstempel steckt in $4[24/Sep/2025:14:22:15
Wir holen uns die Stunde:

awk -F: '{print $2":00"}' access.log | sort | uniq -c | sort -nr

Ausgabe:

100 14:00
 80 13:00
 30 15:00

👉 So erkennst du Spitzenzeiten des Traffics.

🔹 Durchschnittliche Antwortgröße

awk '{sum+=$10; count++} END {print "Durchschnitt:", sum/count}' access.log

Ausgabe:

Durchschnitt: 487

👉 Gibt Aufschluss über typische Antwortgrößen.

🔹 Kombinierte Pipeline: „Top 10 Fehlerseiten“

awk '$9 ~ /^4|^5/ {print $7}' access.log \
| sort | uniq -c | sort -nr | head

Ausgabe:

30 /notfound.html
15 /login.php
 8 /config.php

👉 Hier siehst du, welche Seiten besonders häufig Fehler auslösen.

🔹 Übungen

  1. Finde die Top 5 IPs, die die meisten 404-Fehler erzeugt haben.
  2. Erstelle eine Liste der meistbesuchten 10 Seiten.
  3. Berechne die durchschnittliche Größe nur erfolgreicher Anfragen (Status 200).
  4. Bonus: Analysiere Requests pro Tag (Datumsteil aus $4 extrahieren).

✅ Zusammenfassung

  • Access-Logs enthalten IP, Zeit, Methode, Pfad, Statuscode und Größe.
  • Mit awk kannst du Top-IPs, Seiten und Statuscodes einfach berechnen.
  • Kombinationen mit sort, uniq und Regex machen detaillierte Analysen möglich.
  • Ein Admin kann so Traffic-Muster erkennen und Fehlerquellen oder Angreifer finden.

👉 Im nächsten Kapitel (7) wenden wir die Methoden auf Systemlogs an – z. B. auth.log für Loginversuche oder journalctl-Ausgaben.

 

📚 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