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