Nachdem wir in den letzten Kapiteln Logs lesen, filtern und bereinigen konnten, geht es nun einen Schritt weiter: Wir wollen Daten analysieren.
Mit awk kannst du Logdateien in Spalten zerlegen und daraus Werte zählen, summieren oder vergleichen.

🔹 Grundlagen von awk

  • awk behandelt jede Zeile als Datensatz.
  • Standardmäßig wird nach Whitespace (Leerzeichen/Tab) getrennt.
  • Spalten heißen $1, $2, $3 usw.
  • Aktionen stehen in {}.

Beispiel:

awk '{print $1}' access.log

👉 Gibt die erste Spalte (meist IP-Adressen) aus.

🔹 Felder im Apache-Access-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 (beginnt mit [)
  • $6 → HTTP-Methode ("GET)
  • $7 → Pfad (/index.html)
  • $9 → Statuscode (200)
  • $10 → Größe (532)

👉 Damit kannst du z. B. die häufigsten Fehler oder IPs zählen.

🔹 Häufigste IPs ermitteln

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

👉 So findest du die „Top-IPs“, die am meisten Anfragen stellen.

🔹 Statuscodes zählen

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

Ausgabe (Beispiel):

120 200
 15 404
  5 500

👉 Zeigt: Die meisten Anfragen waren erfolgreich (200), einige waren Fehler (404, 500).

🔹 Meistbesuchte Seiten finden

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

Ausgabe:

80 /index.html
20 /about.html
15 /contact.html

👉 Zeigt, welche Seiten am beliebtesten sind.

🔹 Requests pro Stunde zählen

Der Zeitstempel steht in $4: [24/Sep/2025:14:22:15

Nur die Stunde extrahieren:

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

Ausgabe:

30 13:00
50 14:00
20 15:00

👉 So siehst du, wann der meiste Traffic war.

🔹 Durchschnittswerte berechnen (z. B. Antwortgröße)

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

Ausgabe:

Durchschnitt: 487

👉 Berechnet die durchschnittliche Größe der Antworten.

🔹 Beispiel: Nur Fehlerzugriffe auswerten

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

Ausgabe (gekürzt):

12 203.0.113.42 404
 5 203.0.113.42 500
 3 10.0.0.5     404

👉 Zeigt, welche IPs die meisten Fehler erzeugt haben.

🔹 Übungen

1. Zähle in einem Apache-Log:

  • Häufigste IP-Adresse
  • Häufigster Statuscode
  • Meistbesuchte Seite

2. Berechne die durchschnittliche Antwortgröße ($10).

3. Bonus: Finde heraus, wie viele Requests pro Tag stattfanden (Tipp: Datum aus $4 extrahieren).

✅ Zusammenfassung

  • awk verarbeitet Logs spaltenweise.
  • $1, $9, $7 sind besonders interessant in Webserver-Logs (IP, Statuscode, Pfad).
  • In Kombination mit sort | uniq -c kannst du schnell Häufigkeiten berechnen.
  • Mit awk-Ausdrücken lassen sich Summen, Durchschnitte und Muster (Regex) berechnen.

👉 Im nächsten Kapitel lernst du, wie man sed, grep, awk und weitere Tools kombiniert, um Logs noch präziser auszuwerten.

 

📚 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