HTTP-Anfragen mit Apache protokollieren: Ein kurzes Tutorial

watch 9m, 47s
views 2

13:09, 27.07.2026

Artikel Inhalt
arrow

  • Grundlagen der Apache-Protokollierung
  • Kategorien von Apache-Protokollen
  • Zugriffsprotokolle
  • Fehlerprotokolle
  • Speicherorte der Protokolldateien
  • Anpassen der Apache-Protokollierungseinstellungen
  • Verwendung der LogLevel-Direktive
  • Benutzerdefinierte Protokollformate festlegen
  • Zuweisung von Log-Spitznamen
  • Protokollierung im JSON-Format
  • Implementierung der Protokollrotation
  • Standard-Protokoll-Einstellungen für virtuelle Hosts
  • Debian, Ubuntu und Linux Mint
  • Tabelle der Standard-Direktiven
  • Tabelle der Standard-Direktiven
  • OpenSUSE
  • Tabelle der Standard-Direktiven
  • Apache-Module für die Protokollierung
  • mod_log_config
  • mod_log_debug
  • mod_log_forensic
  • mod_logio
  • mod_filter
  • mod_unique_id

Grundlagen der Apache-Protokollierung

Die Apache-Protokolleinträge enthalten Informationen zu den Apache-Antworten, Anfragen von anderen Computern und internen Vorgängen auf dem Server. In diesem Leitfaden werden wir die Grundlagen der Protokollierung erörtern, insbesondere die Protokolltypen, ihren Speicherort und sogar ihre Interpretation. Darüber hinaus werden wir einige Informationen zur Modulkonfiguration und zur Einstellung benutzerdefinierter Protokollformate bereitstellen.

Kategorien von Apache-Protokollen

Apache-Protokolle lassen sich in zwei Kategorien einteilen: Fehlerprotokolle und Zugriffsprotokolle.

Zugriffsprotokolle

Die Zugriffsprotokolle enthalten Daten zu Anfragen, die auf den Server zugreifen. Diese Art von Protokoll enthält in der Regel Angaben zur aufgerufenen Webseite, ob die jeweilige Anfrage erfolgreich war und wie lange es dauerte, bis die Anfrage Ergebnisse lieferte.

Fehlerprotokolle

Wie der Name schon sagt, enthalten Fehlerprotokolle Daten zu Fehlern, die bei der Bearbeitung einer bestimmten Anfrage durch den Server aufgetreten sind. Wie bei den Zugriffsprotokollen enthalten sie auch den genauen Zeitpunkt der Anfrage sowie die IP-Adresse. Mithilfe der Fehlerprotokolle werden Sie über aufgetretene Probleme informiert. Wenn beispielsweise die Datei fehlt,

Speicherorte der Protokolldateien

Gemäß der Standardeinstellung erfolgt die Speicherung von Fehler- und Zugriffsprotokollen getrennt auf dem Server. Je nach verwendetem Betriebssystem kann der Speicherort leicht variieren.

Anpassen der Apache-Protokollierungseinstellungen

Apache bietet äußerst flexible Protokollierungseinstellungen, mit deren Hilfe es möglich ist, das Protokollierungsverhalten für jeden virtuellen Host oder global zu konfigurieren. Das Protokollierungsverhalten lässt sich über verschiedene Direktiven ändern. Lassen Sie uns also die gängigsten Direktiven besprechen, nämlich das Protokollformat und die Protokollstufe.  

Verwendung der LogLevel-Direktive

LogLevel wird zur Festlegung der Mindestschweregradstufe von Ereignissen benötigt. Die Schweregradstufe gibt die Wichtigkeit eines bestimmten Ereignisses an und kann variiert werden. Beispielsweise kann die Schweregradstufe als „Trace8“ oder „Emerg“ festgelegt werden. „Emerg“ bezeichnet Ereignisse, die zu einer gewissen Instabilität führen können, und „Trace8“ bezeichnet Trace-Meldungen. Beispielsweise ignoriert „LogLevel crit“ alle Stufen außer „Emerg“, „Alert“ und „Crit“.

Benutzerdefinierte Protokollformate festlegen

Die Anweisung „LogFormats“ ist für die Formatierung und das Layout der Protokollereignisse zuständig. Standardmäßig wird CLF (Common Format) verwendet, Sie können jedoch auch eine spezifische Formatzeichenfolge angeben.

Die Anweisung „CustomLog“ wird auch benötigt, um den Speicherort der Protokolldateien zu ändern. In den meisten Linux-Systemen werden die Protokolle üblicherweise in „var/log/httpd“ oder „var/log/apache2“ geschrieben. Außerdem können Sie die Zeichenfolge nach dem Dateinamen ändern, sodass bestimmte Änderungen nur an der jeweiligen Datei vorgenommen werden.

Die vollständige Liste der Felder finden Sie in der Log-Dokumentation. Um die Serveraktivität zu überwachen und auftretende Probleme sofort zu beheben, sollten Sie die folgenden 5 Felder verwenden:

  1. %T – gibt die für die Bearbeitung der Anfrage aufgewendete Zeit an. Dies ist ein sehr nützliches Feld, da Sie damit die Geschwindigkeit der Website messen können. Um dieselben Ergebnisse zu erhalten, jedoch in Mikrosekunden, sollten Sie anstelle von „T“ den Wert „D“ verwenden.
  2. %>s – mit dieser Option können Sie den Status der Anfrage nach einer internen Weiterleitung überprüfen.
  3. %a – zeigt die IP-Adresse an, von der aus eine Anfrage gestellt wurde. Dadurch lässt sich die Traffic-Aktivität wesentlich einfacher identifizieren.
  4. %{ID}e – „ID“ steht für die Anfrage-ID, was bedeutet, dass jede Anfrage eine eindeutige Kennung besitzt. Dies kann zur Nachverfolgung von Anfragen zwischen dem Webanwendungsserver und Apache verwendet werden.
  5. %U – URL-Pfad, jedoch ohne die zusätzlichen Parameter, wie beispielsweise den Abfrage-String.

Zuweisung von Log-Spitznamen

Die Zuweisung von Log-Spitznamen ist äußerst hilfreich, insbesondere wenn verschiedene Log-Dateien für mehrere virtuelle Hosts verwendet werden. Der zugewiesene Spitzname kann mit der CustomLog-Direktive verwendet werden, sodass die Protokolle im angegebenen Format geschrieben werden. Das bedeutet, dass Sie für verschiedene Protokolldateien spezifische Protokollformate festlegen können und gleichzeitig keine Zeit damit verschwenden, das Format jedes Mal neu zu definieren.

Protokollierung im JSON-Format

Die Speicherung der Protokolle im üblichen Textformat erleichtert die Überprüfung der Dateien erheblich, falls dies erforderlich sein sollte. Natürlich ist ein solches Format für das normale Lesen gut geeignet, doch die Verarbeitung dieser Daten mit Protokollverwaltungstools stellt eine Herausforderung dar, da diese Lösungen ein spezifisches Format verwenden. Zwar verwenden die meisten Verwaltungstools das Standardformat von Apache, doch falls dies nicht der Fall ist, sollten Sie JSON in Betracht ziehen.

JSON ist die Abkürzung für „JavaScript Object Notation“ und eignet sich hervorragend für die Speicherung strukturierter Daten. JSON ist sehr nützlich, da es nahezu jede Datenstruktur und jeden Datentyp speichern kann. Darüber hinaus eignet sich dieses Format hervorragend zur Selbstdokumentation der Informationen. Zu den grundlegenden Typen, die von diesem Format unterstützt werden, zählen Arrays, Zahlen, Zeichenketten, der Nullwert und boolesche Operatoren.

Implementierung der Protokollrotation

Zu den Problemen, die bei Zugriffsprotokollen oder anderen Protokollen auftreten können, gehören übermäßiger Speicherplatzverbrauch oder Schwierigkeiten bei der Verwaltung. Durch die Implementierung der Log-Rotation lassen sich diese Probleme beheben.

Es gibt ein spezielles Programm namens „rotatelogs“, das bei der Rotation von Logs anhand ihrer Größe und des Zeitpunkts helfen kann. Der Standardbefehl „logrotate“ ist ebenfalls eine gute Option, mit der Sie beginnen können. Auf den meisten Linux-Systemen verfügt Apache über eine Konfigurationsdatei.

Die Standardkonfigurationsdatei unter Debian 11 befindet sich in /etc/logrotate.d/apache2. Sie können diese Datei bearbeiten, um die Log-Rotation von Apache anzupassen. Im Folgenden erläutern wir die Bedeutung der einzelnen Abschnitte dieser Konfigurationsdatei:

-        „Missingok“ zeigt keine Fehler an, wenn die Protokolldatei angegeben ist.

-        /var/log/apache2/*.log – bedeutet, dass sich die Konfiguration auf alle Dateien bezieht, die am angegebenen Speicherort auf .log enden. Nach { werden alle Anweisungen für logrotate angegeben, und danach wird } verwendet.

-        „Compress“ bedeutet, dass die rotierten Protokolldateien komprimiert werden.

-        Wenn „daily“ angegeben ist, bedeutet dies, dass die Rotation täglich stattfindet; Sie können diesen Wert auch auf „yearly“, „weekly“ oder „monthly“ ändern.

-        „Rotate 14-“ bedeutet, dass 14 Protokolldateien aufbewahrt werden, während die übrigen gelöscht werden. Bei Verwendung der täglichen Rotation stehen Ihnen somit Protokolle von etwa zwei Wochen zur Verfügung.

-        „Delaycompress“ bedeutet, dass neuere Dateien unkomprimiert bleiben, während die ältesten komprimiert werden.

-        „Notifempty“ – bedeutet, dass alle leeren Dateien nicht rotiert werden.

-        „Sharedscripts“ – Postrotate-Skripte funktionieren erst, wenn alle Protokolle rotiert wurden.

-        Create 640 root adm – bedeutet, dass nach der Rotation Dateien mit den Berechtigungen 640 erstellt werden.

Standard-Protokoll-Einstellungen für virtuelle Hosts

Virtuelle Hosts werden benötigt, um mehrere Websites auf einem Server zu betreiben. Für jeden virtuellen Host können Sie eine separate Protokollierungskonfiguration festlegen. Das bedeutet, dass Sie festlegen können, dass die Protokolle jeder Website in ein separates Verzeichnis geschrieben werden. Oder Sie können sich auch dafür entscheiden, die globale Standardkonfiguration beizubehalten.

Hier ist ein Beispiel, bei dem die Protokolle in die separate Datei „access.log“ geschrieben werden:

<VirtualHost *:80>
 ServerName skills.com (Beispiel-Domain)
 ServerAdmin webmaster@skills.com
 DocumentRoot /var/www/skills.com
 LogLevel info ssl:warn
 ErrorLog /var/www/skills.com/logs/error.log
 CustomLog /var/www/skills.com/logs/access.log example
</VirtualHost>

Debian, Ubuntu und Linux Mint

Auf Debian-Systemen befindet sich die Standardkonfiguration für die Website-Verschlüsselung mit SSL/TLS in /etc/apache2/sites-available/default-ssl.conf, und die VHost-Konfiguration für unverschlüsselte Websites befindet sich in /etc/apache2/sites-available/000-default.conf.

Tabelle der Standard-Direktiven

Einstellung/Direktive

Konfigurationsdatei

Wert/Pfad

AccessLog

/etc/apache2/sites-available/000-default.conf

CustomLog ${APACHE_LOG_DIR}/access/log combined

SUFFIX*

/etc/apache2/envvars

Die bedingte Logik kann in der Konfigurationsdatei überprüft werden

LogLevel

/etc/apache2/apache2.conf

warn

APACHE_LOG_DIR**

/etc/apache2/envvars

Export

=/var/log/apache2$SUFFIX

ErrorLog

/etc/apache2/apache2.conf

ErrorLog${APACHE_LOG_DIR}/error.log

LogFormat

/etc/apache2/apache2.conf

„%v:%p %h %l %u %t“%r“%>s %0 „%{Referer}i“ „%{User-Agent}i““

CustomLog

/etc/apache2/conf-available/other-vhosts-access-log.conf

${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined

Red Hat, Fedora und CentOS

Unter Red Hat und ähnlichen Systemen befinden sich die VHost-Konfigurationsdateien im Verzeichnis /etc/httpd/conf.d, und die Hauptkonfigurationsdatei befindet sich unter /etc/httpd/conf/httpd.conf.

Tabelle der Standard-Direktiven

Direktive

Konfigurationsdatei

Wert/Pfad

LogLevel

/etc/httpd/conf/httpd.conf

warn

AccessLog

/etc/httpd/conf/httpd.conf

/var/log/httpd/access_log

LogFormat (log_config_module)

/etc/httpd/conf/httpd.conf

„%h %l %u %t“%r“%>s %b „%{Referer}i“ „%{User-Agent}i““

ErrorLog

/etc/httpd/conf/httpd.conf

/var/log/httpd/error_log

CustomLog (log_config_module)

/etc/httpd/conf/httpd.conf

„logs/access_log“ combined

LogFormat (geladenes logio_module)

/etc/httpd/conf/httpd.conf

„%h %l %u %t“%r“%>s %b „%{Referer}i“ „%{User-Agent}i“ %l%0“combinedio

OpenSUSE

Im OpenSUSE-System befindet sich die Konfiguration für Websites mit SSL/TLS unter /etc/apache2/default-vhost-ssl.conf und für unverschlüsselte Websites unter /etc/apache2/default-vhost.conf.

Tabelle der Standard-Direktiven

Direktive

Konfigurationsdatei

Wert/Pfad

LogLevel

/etc/apache2/sysconfig.d/global.conf

warn

AccessLog

/etc/apache2/sysconfig.d/global.conf

/var/log/apache2/access_log

LogFormat (log_config_module)

/etc/apache2/mod_log_config.conf

„%h %l %u %t“%r“%>s %b“

ErrorLog

/etc/apache2/httpd.conf

/var/log/apache2/error_log

LogFormat (logio_module)

/etc/apache2/mod_log_config.conf

„%h %l %u %t“%r“%>s %b“%{Referer}i“ „%{User-Agent}i“ %l%0“combinedio

CustomLog (log_config_module)

/etc/apache2/sysconfig.d/global.conf

/var/log/apache2/access_log

combined

LogFormat (mod_ssl)

/etc/apache2/mod_log_config.conf

„%t%h%{SSL_PROTOCOL}x %{SSL_CIPHER}x“%r“ %b“ ssl_commonLogformat“%t %h %{SSL_PROTOCOL}x

%{SSL_CIPHER}x „%r“%b „%{Referer}i“ „%{User-Agent}i““ssl_combined

Apache-Module für die Protokollierung

Es gibt mehrere Module, die erheblich dazu beitragen können, das Protokollierungsverhalten zu ändern. Auf der Grundlage unserer Erkenntnisse aus der Apache-Serverkonfiguration werden wir wichtige Informationen zu den nützlichen Apache-Modulen für die Protokollierung weitergeben.

mod_log_config

Dies ist wahrscheinlich das grundlegendste Modul und eines, das wir in diesem Artikel bereits besprochen haben.

mod_log_debug

Dieses Modul ist möglicherweise nicht in allen Apache-Distributionen enthalten, ist jedoch hilfreich für die Protokollierung von Debug-Meldungen. Beispielsweise kann dieses Modul verwendet werden, um Meldungen von bestimmten Clients zu protokollieren, Ereignisse unter einem bestimmten URL-Pfad zu protokollieren und vieles mehr.

Beispiel:

<Location /path/to/some/directory>
LogMessage "/path/to/directory wurde angefordert von"
${REMOTE_ADDR}
</Location>

mod_log_forensic

Mit diesem Modul ist es möglich, Protokolle vor und nach dem Ablauf einer Anfrage zu erstellen. Nach der Aktivierung dieses Moduls können die Schlüsselwörter verwendet werden, um festzustellen, welche Protokolldatei forensisch ist. Es ist auch möglich, %{forensic-id} in verschiedenen Zeichenfolgen zu verwenden, um forensische Daten zu den üblichen Protokollen hinzuzufügen.

Hier ist ein Beispiel:

<VirtualHost *:80>
ServerName skills.com (dies ist eine Beispieldomain)
   ServerAdmin webmaster@skills.com
   DocumentRoot /var/www/skills.com
   LogLevel info ssl:warn
   ErrorLog /var/www/skills.com/logs/error.log
   CustomLog /var/www/skills.com/logs/access.log example
   CustomLog /var/www/skills.com/logs/forensic.log forensic
</VirtualHost>

mod_logio

Ein solches Modul bietet die Möglichkeit, die Anzahl der pro Anfrage empfangenen bzw. gesendeten Bytes zu protokollieren. Dieses Modul berücksichtigt zudem Größenänderungen aufgrund der TLS/SSL-Verschlüsselung und ist in der Regel standardmäßig aktiviert.  

mod_filter

Dieses Modul hilft dabei, bestimmte Anfragen anhand des angegebenen Filters herauszufiltern. Der kontextsensitive Filter, der von diesem Modul bereitgestellt wird, umfasst vhost-Konfigurationen, Apache-Konfigurationen, .htaccess-Dateien und mehr.

Dieses Modul ist in der Regel standardmäßig aktiviert, muss aber möglicherweise erst aktiviert werden.

mod_unique_id

Dieses Modul wird für die Erstellung einer eindeutigen Kennung für jede Anfrage benötigt. Die Kennung wird in das Zugriffsprotokoll geschrieben. Sie wird mithilfe der Umgebungsvariablen UNIQUE_ID an den App-Handler übergeben. Dadurch wird es für Entwickler wesentlich einfacher, Anfragen nachzuverfolgen.

Teilen

War dieser Artikel für Sie hilfreich?

VPS beliebte Angebote

-12.3%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 16384 Windows

237 /mo

/mo

Alle 12 Monate abgerechnet

-9.7%

CPU
CPU
10 Xeon Cores
RAM
RAM
64 GB
Space
Space
300 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 65536 Windows

138.99 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
aiKVM-NVMe 4096 Linux

17.17 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 2048 Linux

6.41 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
6 Epyc Cores
RAM
RAM
8 GB
Space
Space
100 GB NVMe
Bandwidth
Bandwidth
Unlimited
aiKVM-NVMe 8192 Linux

27.5 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 4096 Windows

18.1 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
10 Xeon Cores
RAM
RAM
64 GB
Space
Space
300 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 65536 Linux

134.99 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 4096 Linux

15.95 /mo

/mo

Alle 12 Monate abgerechnet

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 4096 Linux

16.45 /mo

/mo

Alle 12 Monate abgerechnet

-15.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
60 Mbps
DDoS Protected SSD-wKVM 4096 Windows

73 /mo

/mo

Alle 12 Monate abgerechnet

Weitere Artikel zu diesem Thema

cookie

Cookies und Datenschutz akzeptieren?

Wir verwenden Cookies, um sicherzustellen, dass wir Ihnen die beste Erfahrung auf unserer Website bieten. Wenn Sie fortfahren, ohne Ihre Einstellungen zu ändern, gehen wir davon aus, dass Sie mit dem Empfang aller Cookies auf der HostZealot-Website einverstanden sind.