Previous article
Artikeleinzelansicht Next article

Webserver-Logdatei

Veröffentlicht am in Kategorie Technik

Eine Logdatei (auch Protokolldatei genannt) enthält das automatisch geführte Protokoll bestimmter Aktionen von Prozessen auf einem Computersystem. Prinzipiell werden alle Aktionen mitgeschrieben, die für eine spätere Untersuchung erforderlich sind oder sein könnten. Die HTTP Access Logs der Webserver nutzen das sogenannte Combined Log Format, es ist wie folgt aufgebaut.

[Client IP-Adresse]
[RFC 1413 Identität]
[HTTP Benutzername]
[Datum/Uhrzeit]
″[HTTP Anfrage]″
[HTTP Statuscode]
[übertragene Bytes]
″[HTTP Referrer]″
″[HTTP User Agent]″

Der Datensatz befindet sich in einer Zeile. Die Felder sind durch Leerzeichen getrennt. Felder, die Leerzeichen enthalten, befinden sich zwischen doppelt hochgestellte Anführungszeichen. Felder ohne Wert werden durch einen Bindestrich dargestellt.

Beispíel für einen Datensatz

183.121.143.32 – – [18/Mar/2003:08:04:22 +0200] ″GET /images/logo.jpg HTTP/1.1″ 200 512 ″http://www.wikipedia.org/″ ″Mozilla/5.0 (X11; U; Linux i686; de-DE;rv:1.7.5)″

Erläuterung des Beispiels

Feld Wert Erläuterung
IP-Adresse 183.121.143.32 IP-Adresse des anfordernden Hosts
Unbelegt vorgesehen für RFC-1413-Identität, die jedoch standardmäßig (-) nicht ermittelt wird
Wer Ggf. Nutzername aus einer HTTP-Authentifizierung, sonst „-“
Wann [18/Mar/2003:08:04:22 +0200] Zeitstempel (Datum, Uhrzeit, Zeitverschiebung)
Was ″GET /images/logo.jpg HTTP/1.1″ Anforderung, eines Bildes, Übertragungsprotokoll
Ok 200 HTTP-Statuscodes (200=Erfolgreiche Anfrage)
Wie viel 512 Ggf. Menge der gesendeten Daten (Byte), sonst (z. B. bei Umleitungen) ″-“
Woher ″http://www.wikipedia.org/“ Von welcher Internetseite (URI) wird angefordert
Womit ″“Mozilla/5.0 (X11; U; Linux i686; de-DE; rv:1.7.6)“ Mit welchem Webbrowser/Betriebssystem/Oberfläche

HTTP-User-Agent-String

Der User Agent String in HTTP enthält Namen, Version und Kommentar zu einer oder mehreren Komponenten des Clients. Diese haben jeweils folgenden Aufbau:

Name/Version (Kommentar)

Der Kommentar ist optional, sein Inhalt nicht weiter normiert. Viele Browserprogramme bringen darin mehr oder minder menschenlesbare Informationen zum Betriebssystem und sogar zur Hardwareplattform unter, auf der sie laufen. Andere verzichten vollständig darauf.

Log rotation (en.wikipedia)

In information technology, log rotation is an automated process used in system administration in which log files are compressed, moved (archived), renamed or deleted once they are too old or too big. New incoming log data is directed into a new fresh file at the same location. The main purpose of log rotation is to restrict the volume of the log data to avoid overflowing the record store, while keeping the log files small enough so viewers can still open them. In Linux log rotation is typically performed using the logrotate command.The command can be used to email logs to a systems administrator after log rotation. Dated logs may also be compressed.

Logrotate (wiki.ubuntuusers)

Damit Logdateien nicht unbeschränkt wachsen und irgendwann die Festplatte belegen, wird bei der Installation eines Linux Systems meistens das Werkzeug „logrotate“ installiert. Bei „logrotate“ handelt es sich nicht um einen Dienst oder Service, sondern um ein Skript, das über mitinstallierte cron-Einträge regelmäßig ausgeführt wird. Logrotate wurde entwickelt, um die Verwaltung von Logdateien zu vereinfachen. Die Dateien können automatisch komprimiert, gelöscht oder per Mail verschickt werden. Logrotate kann dies täglich, wöchentlich, monatlich durchführen oder wenn eine Logdatei eine vorgegebene Größe überschreitet. Üblicherweise wird Logrotate einmal am Tag aktiv.

Am Beispiel des „Syslogs“ kann man sehen, wie logrotate arbeitet. Man sieht acht Dateien. Die aktuelle „syslog“, die unkomprimierte „syslog.0“ vom Vortag und die „syslog“-Dateien der sechs Tage davor, die in der Zwischenzeit komprimiert wurden. Am achten Tag werden dann die Logdateien gelöscht.

-rw-r—– 1 root adm 82484 2006-10-15 00:29 syslog
-rw-r—– 1 root adm 163497 2006-10-14 13:06 syslog.0
-rw-r—– 1 root adm 23503 2006-10-13 01:30 syslog.1.gz
-rw-r—– 1 root adm 36587 2006-10-12 11:18 syslog.2.gz
-rw-r—– 1 root adm 38361 2006-10-11 02:47 syslog.3.gz
-rw-r—– 1 root adm 97953 2006-10-10 17:53 syslog.4.gz
-rw-r—– 1 root adm 46201 2006-10-09 11:05 syslog.5.gz
-rw-r—– 1 root adm 35665 2006-10-06 17:21 syslog.6.gz

Das eben aufgeführte Beispiele ist auf „access.log“ zu übertragen.

Komplette Ausgabe
cat access.log
zcat access.log.2.gz

Teilweise Ausgabe
head -n access.log
tail -n access.log

Blättern

less access.log

Spalten selektieren
nach awk'{print
die gewünschten Felder $1, $2 usw. angeben
Trennzeichen mit double quotes definieren
Der Wert des „User-Agent“ ist auf viele Felder verteilt

Beispiel
Einzelne Spalten (hier nur eine Zeile) ausgeben
Trennzeichen ist: Leerzeichen + Semikolon + Lerrzeichnen
Kommando
awk ‚{print$1" ; "$4" ; "$5" ; "$7" ; "$12$13$14$15$16$17$18$19}‘ access.log | head -1
Ausgabe
193.131.39.94 ; [25/Aug/2024:00:00:33 ; +0200] ; /wp-includes/js/thickbox/loadingAnimation.gif ; "Mozilla/5.0(X11;Ubuntu;Linuxx86_64;rv:109.0)Gecko/20100101Firefox/115.0"

Quellen und weiterführende Informationen
https://de.wikipedia.org/wiki/Logdatei
https://de.wikipedia.org/wiki/User_Agent
https://en.wikipedia.org/wiki/Log_rotation
https://wiki.ubuntuusers.de/Logdateien/#Logrotate


Kommentar schreiben (Keine Registrierung erforderlich)

Kunibert freut sich über Kommentare und Fragen. Um den möglichen Missbrauch der Kommentarfunktion zu erschweren, ist die Beantwortung einer Frage erforderlich. Kunibert bedankt sich für das Verständnis!

Die Mailadresse wird nicht veröffentlicht.

 

Die automatische Benachrichtigung kann - sofern gewünscht, auch nach dem Absenden diese Kommentares - in den Benachrichtigung selber, jederzeit selbständig deaktiviert werden.