Server-Logfiles analysieren

access.log einer Webseite analysieren

Als Betreiber eines Onlineshops oder als Mitarbeiter im E-Commerce sind Sie ständig auf der Suche nach Wegen, um Ihren Shop effizient, sicher und kundenfreundlich zu gestalten. In einigen Fällen ist es notwendig, sich das access.log, also die Protokoll-Datei, die die Zugriffe auf die Webseite festhält, genauer anzuschauen bzw. diese einmal grob auszuwerten. Mit dieser Anleitung möchten wir Ihnen einige Tricks, Kniffe und Werkzeuge, so wie sie auch von unseren Administratoren täglich genutzt werden, mit an die Hand geben, um dieses Protokoll selbständig auswerten zu können.

Alles, was die dazu benötigen, ist:

  • Eine Webseite auf einem Server von uns.
  • Einen Shell-Benutzer.
  • Eine Tasse Tee/Kaffee oder ein anderes Getränk Ihrer Wahl (was natürlich nicht zwingend notwendig ist).
  • Eine Prise Enthusiasmus.

Auch wenn Sie sich nicht als IT-Experte betrachten, können grundlegende Kenntnisse in der Logfile-Analyse von großem Nutzen sein:

  1. Sicherheit: Logfiles helfen Ihnen, ungewöhnliche Aktivitäten zu erkennen, die auf Sicherheitsrisiken wie Hacking-Versuche oder unerlaubte Zugriffe hindeuten könnten. Für den Schutz Ihres Online-Geschäfts und Ihrer Kunden ist dies von entscheidender Bedeutung.
  2. Fehlerbehebung: Logfiles enthalten Informationen, die bei der Diagnose und Behebung von Problemen auf Ihrer Website helfen können, wie z.B. fehlerhafte Links oder Seitenfehler.
  3. Benutzerverhalten und -analytik: Diese Daten können Ihnen helfen, das Verhalten Ihrer Besucher besser zu verstehen. Sie sehen, welche Seiten am beliebtesten sind und wie sich die Nutzer auf Ihrer Website bewegen, was Ihnen wertvolle Einblicke für Marketing- und Vertriebsstrategien bietet.

1. Grundlegende Shell-Kommandos

Eine Shell ist eine Benutzeroberfläche, die es Ihnen ermöglicht, mit Ihrem Server über Textbefehle zu kommunizieren. Um Shell-Kommandos nutzen zu können, stellen Sie sicher, dass Sie Zugriff auf die Shell Ihres Servers haben, z.B. über SSH. Voraussetzung dafür ist ein Shell-Benutzer. Wie Sie sich via Kommandozeile an Ihrem Webspace anmelden, erfahren Sie in einer anderen Anleitung.


1

Wo finde ich das access.log meiner Webseite?

Logfiles sind Dateien, in denen Aktivitäten auf Ihrem Server aufgezeichnet werden. Jeder Webspace hat auf unseren Servern ein eigenes access.log. Dieses Log finden Sie entweder direkt unter /log (Shell-Benutzer im Jailkit) oder unter ../../log aus dem Startverzeichnis eines Shell-Benutzers ohne Jailkit. Im ISPConfig Ihres Servers finden Sie unter Webseiten => Shell-Benutzer => Benutzername => Chroot Shell, ob Sie einen Shell-Benutzer mit oder ohne Jailkit haben.
Auf dem Linux-Dateisystem können Sie mit dem Befehl cd durch die Ordner navigieren.

cd ../../log    ## für Shell-Benutzer ohne Jailkit (aus dem Startverzeichnis)
cd /log/        ## für Shell-Benutzer mit Jailkit

Weiterführende Informationen zum cd-Befehl finden Sie z.B. auf HowtoForge.



2

Logfiles auflisten

Verwenden Sie den Befehl ls, um die Dateien anzeigen zu lassen. Eine sortierte Liste finden Sie, wenn Sie beispielsweise ls -lah verwenden. Unter Umständen finden Sie einige .log, .log.1 und .log.*.gz-Dateien. Die aktuellsten Daten befinden sich immer im access.log, welche wir auch für die weiteren Beispiele verwenden werden.
Das access.log enthält immer das Protokoll des aktuellen Tages. Im access.log.1 befindet sich in der Regel das Protokoll des Vortags. Die Dateien mit der Endung .log.*.gz sind gzip-komprimierte Dateien. In diesem einfachen Teil werden wir nur die .log-Dateien behandeln.

ls            ## listet die Inhalte des Verzeichnisses in alphabetischer Reihenfolge auf.
ls -lah       ## listet die Inhalte des Verzeichnisses in alphabetischer Reihenfolge auf, einschließlich versteckter Dateien, und zeigt detaillierte Informationen in einer für Menschen leicht verständlichen Form an.

Weiterführende Informationen zum ls-Befehl finden Sie auf HowtoForge.



3

Die ersten Zeilen ausgeben lassen mit head

Da access.log-Dateien einfache Text-Dateien sind, können Sie deren Inhalt mit sehr einfachen Mitteln ausgeben lassen.

head access.log          ## gibt die ersten 10 Zeilen der Datei aus.
head -n20 access.log     ## gibt die ersten 20 Zeilen der Datei aus. Der Wert für -nXX kann frei angepasst werden.

Weiterführende Informationen zum head-Befehl finden Sie auf HowtoForge.



4

Die letzten Zeilen ausgeben lassen mit tail

tail access.log           ## gibt die letzten 10 Zeilen der Datei aus.
tail -n 20 logfile.log    ## gibt die letzten 20 Zeilen der Datei aus. Der Wert für -nXX kann frei angepasst werden.

Weiterführende Informationen zum tail-Befehl finden Sie auf HowtoForge.



5

access.log in Echtzeit überwachen

tail -f access.log          ## gibt die letzten 10 Zeilen der Datei aus und zeigt in Echtzeit weitere, dazukommende Einträge an.
tail -f -n20 access.log     ## gibt die letzten 20 Zeilen der Datei aus und zeigt in Echtzeit weitere, dazukommende Einträge an.

## Die Ausgabe kann durch Drücken von STRG+C beendet werden.


6

Das gesamte Log ausgeben lassen mit cat|zcat

Mit den Anwendungen cat oder zcat lässt sich das gesamte Log ausgeben. zcat kann gzip-komprimierte Dateien (z.B. xxxx.log.gz) ausgeben.

cat access.log                 ## gibt das gesamte Log aus.
zcat yyyymmdd-access.log.gz    ## gibt den Inhalt einer komprimierten Log-Datei im .gz-Format aus, ohne die Datei zuvor manuell dekomprimieren zu müssen.

Weiterführende Informationen zum cat-Befehl sowie zum zcat-Befehl finden Sie auf HowtoForge.



7

Spezifische Einträge im access.log suchen

Die Anwendung grep sucht nach einem Begriff oder Muster in einer Datei.

grep "error" access.log     ## sucht nach dem Begriff "error" in der Datei access.log.
grep -i "error" access.log  ## sucht nach dem Begriff "error" in der Datei access.log und ignoriert dabei Groß-/Kleinschreibung.
zgrep "error" yyyymmdd-access.log.gz   ## sucht nach dem Begriff "error" in der gzip-komprimierten Datei yyyymmdd-access.log.gz


8

Im access.log blättern

Die Anwendung less können Sie nutzen, um die gesamte Datei zu laden und darin mit den Pfeiltasten oder dem Scrollrad zu blättern.

less access.log

## Zum Verlassen von less drücken Sie einfach die Taste Q auf der Tastatur.


9

access.log spaltenweise, nach Trennsymbol sortiert, mit awk ausgeben lassen

awk ist ein bei Admins beliebtes und sehr mächtiges Werkzeug, mit dem man Inhalte einer Datei verarbeiten kann.

awk '{print$1}' access.log                      ## gibt alle Einträge im access.log aus und filtert dabei nur die erste Spalte, getrennt nach Leerzeichen, wobei $1 die erste Spalte ist. Das Ergebnis ist eine Liste, die alle IP-Adressen enthält, die im access.log enthalten sind.
awk '{print$1" "$2" "$4" "$5}' access.log       ## gibt die IP-Adresse, die aufgerufenen Domainnamen und den Timestamp der Anfrage aus.
awk -F '"' '{print$1}' access.log               ## filtert die Spalten nach " und das Ergebnis ist dabei fast identisch.


10

Befehle kombinieren

Befehle lassen sich ebenfalls kombinieren, um das jeweilige Resultat noch weiter zu verarbeiten. Zum Kombinieren von Befehlen wird | (der Pipe-Operator) genutzt. Man leitet dadurch das Resultat des ersten Kommandos an das nachfolgende Kommando weiter.

tail -n 100 access.log | grep "error"

Durch tail -n 100 logfile.log erhalten wir nur die letzten 100 Zeilen aus dem access.log und das Resultat wird an die Anwendung code>grep weitergegeben, um darin nach dem String error zu suchen.


2. Analyse von IP-Adressen

Die Analyse von IP-Adressen in access.log-Dateien ist ein wichtiger Aspekt der Netzwerksicherheit und des Website-Managements. Sie ermöglicht es Administratoren, den Ursprung des Traffics zu verstehen, potenzielle Sicherheitsbedrohungen zu identifizieren, Zugriffsmuster zu analysieren und das Nutzerverhalten zu verstehen. Durch die Überprüfung der IP-Adressen in den access.log-Dateien können Administratoren feststellen, welche Ressourcen angefragt wurden, Häufigkeit und Herkunft der Anfragen sowie ungewöhnliche oder verdächtige Aktivitäten erkennen. Die Analyse kann auch dazu dienen, geografische Daten zu extrahieren, um die geografische Verteilung der Nutzer zu verstehen, und um DDoS-Angriffe, Scraping oder andere Arten von missbräuchlichem Verhalten zu identifizieren. Werkzeuge und Skripte (wie awk, grep) können dabei helfen, spezifische IP-Adressen oder Muster aus den access.log-Dateien zu extrahieren und zu analysieren.


1

IP-Adressen extrahieren

awk '{print$1}' access.log                            ## gibt alle IP-Adressen im access.log aus.
awk '{print$1}' access.log | sort | uniq -c | sort -n ## gibt eine Liste aller IP-Adressen und deren Häufigkeiten im access.log zurück. Wenn man noch ein | tail dranhängt, dann erhält man nur die 10 häufigsten IP-Adressen aus dem access.log gefiltert.


2

Nach einer spezifischen IP-Adresse im access.log suchen

grep "192.168.1.1" access.log     ## durchsucht die Datei access.log nach Zeilen, die die Zeichenfolge 192.168.1.1 enthalten.
grep -c  "192.168.1.1" access.log ## gibt zurück, wie oft 192.168.1.1 im access.log auffindbar ist.

Dieser Befehl durchsucht die Datei logfile.log nach Zeilen, die die Zeichenfolge „192.168.1.1“ enthalten.

In diesem speziellen Fall sucht grep nach jeder Instanz der IP-Adresse „192.168.1.1“ in der Datei. Jede Zeile, die diese IP-Adresse enthält, wird vollständig auf dem Bildschirm oder im Terminal ausgegeben. Dies ist nützlich, um spezifische Einträge oder Aktivitäten zu finden, die mit dieser IP-Adresse verbunden sind, wie zum Beispiel Zugriffe auf einen Webserver, Fehlermeldungen, Sicherheitsverletzungen oder jegliche andere Log-Einträge, die diese IP-Adresse enthalten könnten.



3

Alle Aufrufe der IP-Adresse mit den meisten Aufrufen ausgeben lassen

grep $(awk '{print$1}' access.log | sort | uniq -c | sort -n | tail -1 | awk '{print$2}') access.log


4

Eindeutige IP-Adressen ausgeben lassen

awk '{print$1}' access.log | sort | uniq         ## gibt die eindeutigen IP-Adressen aus.
awk '{print$1}' access.log | sort | uniq | wc -l ## gibt Anzahl der eindeutigen IP-Adressen aus.

3. Komplexere Befehle zur Auswertung der access.log-Daten

Mit komplexeren Befehlskombinationen können Sie aus den Protokoll-Dateien relativ viele Informationen auslesen.


1

Anzahl der eindeutigen IP-Adressen je Stunde im access.log

logx=access.log; for std in {00..23}; do echo -e "${logx} - Stunde: ${std} - Uniq-IPs: $(zgrep ":${std}:..:.." ${logx} | awk '{print$1}' | sort | uniq | wc -l)"; done; echo -e "Uniq-IPs gesamt in ${logx}:$(zcat -f ${logx} |awk '{print$1}' | sort | uniq | wc -l)\n"


2

Anzahl der eindeutigen IP-Adressen je Stunde in allen access.log Dateien der jeweiligen Webseite

for log in $(ls *access.log* | sort); do for std in {00..23}; do echo -e "${log} - Stunde: ${std} - Uniq-IPs: $(zgrep ":${std}:..:.." ${log} | awk '{print$1}' | sort | uniq | wc -l)"; done; echo -e "Uniq-IPs gesamt in ${log}:$(zcat -f ${log} |awk '{print$1}' | sort | uniq | wc -l)\n"; done


3

Anzahl der Aufrufe je Stunde im access.log

logx=access.log; for std in {00..23}; do echo -e "${log} - Stunde: ${std} - Aufrufe: $(zgrep -c "${std}:..:.." ${log})"; done; echo -e "Aufrufe in ${log} gesamt: $(zcat -f ${log} | wc -l)\n"


4

Anzahl der Aufrufe je Stunde in allen access.log Dateien der jeweiligen Webseite

for log in $(ls *-access.log* access.log | sort); do for std in {00..23}; do echo -e "${log} - Stunde: ${std} - Aufrufe: $(zgrep -c -E "${std}:..:.." ${log})"; done; echo -e "Aufrufe in ${log} gesamt: $(zcat -f ${log} | wc -l)\n"; done


5

Details zu den 25 meisten IP-Adressen im access.log ausgeben lassen

Achtung: Hierzu ist ein Shell-Benutzer ohne Jailkit notwendig.

Es werden einige, auf dem Server vorhandene Werkzeuge genutzt und miteinander verkettet, um daraus Informationen der 25 häufigsten IP-Adressen aus dem access.log zu extrahieren.

log="access.log" && for ip in $(cut -d ' ' -f 1 ${log} | sort | uniq -c | sort -n | tail -n25 | awk '{print$2}'); do 
echo -e "\n===========================
IP: ${ip}
ReverseIP: $(dig -x ${ip} +short)
Aufrufe Gesamt: $(grep ${ip} -c ${log})
$(for x in GET POST HEAD PUT; do xn=$(grep ${ip} ${log}| grep -c "${x} "); [[ ${xn} != "0" ]] && echo -e "- ${x}: ${xn}\n UserAgents:\n$(grep ${ip} ${log} | grep "${x} "| cut -d' ' -f12- | sort | uniq -c | sort -n)\n"; done)
Gehoert zu:
$(whois ${ip} | awk '/org-name:|OrgName:|netname:|role:/{$1=""; print$0}' | sed -e 's/^[ \t]*//')
===========================\n"; done

Abschließende Hinweise

  • Diese komplexeren Befehle erfordern ein gewisses Maß an technischem Wissen und zusätzlichen Ressourcen.
  • Datenschutz und Sicherheit der Daten sollten stets berücksichtigt werden, insbesondere im Hinblick auf die Verarbeitung von personenbezogenen Daten wie IP-Adressen.

Geschafft! Sie haben das access.log Ihrer Webseite analysiert.

Finden Sie den passenden Tarif

Unser Tarifberater hilft Ihnen dabei, das passende Paket zu finden. Bei Fragen berät Sie unser Sales-Team sehr gerne unter +49 (0) 4131 / 22 78 1-25 oder sales@timmehosting.de.

Bitte beachten Sie: Der Tarifberater dient nur der groben Orientierung. Ihr tatsächlicher Bedarf kann durch den Ressourcenbedarf Ihrer Anwendung(en), tageszeitabhängige/saisonale/aktionsbedingte Schwankungen des Besucheraufkommens, geplantes Wachstum und weitere Faktoren von der Empfehlung abweichen.

  • 1
  • 2
  • 3
  • 4
  • 5

Was möchten Sie hosten?

Möchten Sie einen oder mehrere Shops hosten? (Eine Multishop-Installation gilt als ein Shop.)

Möchten Sie eine oder mehrere Websites hosten? (Eine Multisite-Installation gilt als eine Website.)

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Web Hosting

Zu den ScaleServer Paketen Zu den Web Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Shop Hosting

Zu den ScaleServer Paketen Zu den Shop Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed vServer oder ScaleServer

Zu den Managed vServer Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed Server oder ScaleServer

Zu den Managed Server Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen unsere

Timme Cloud 2.0

Zur Timme Cloud 2.0