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