Apache2 Workshop Logging
Version vom 15. März 2025, 09:21 Uhr von Thomas.will (Diskussion | Beiträge)
Apache2 Logging
- Apache2 bietet umfassende Logging-Funktionen zur Überwachung und Fehleranalyse.
- Die wichtigsten Log-Dateien sind access.log (Zugriffe) und error.log (Fehlermeldungen).
- Die Logs befinden sich standardmäßig unter /var/log/apache2/.
- Die Log-Einstellungen werden in der apache2.conf oder pro VirtualHost in den Konfigurationsdateien definiert.
Wichtige Apache-Log-Dateien
- /var/log/apache2/access.log – Enthält alle HTTP-Zugriffe auf den Server.
- /var/log/apache2/error.log – Speichert Fehler und Warnungen des Webservers.
- /var/log/apache2/other_vhosts_access.log – Enthält Zugriffe auf weitere VirtualHosts (abhängig von der Konfiguration).
Log-Formate anpassen
- Apache verwendet das Common Log Format (CLF) oder das erweiterte Combined Log Format.
- Ein angepasstes Log-Format kann mit LogFormat definiert werden.
Erklärung der LogFormat-Direktiven
- Die LogFormat-Direktive definiert das Ausgabeformat der Log-Dateien.
- Beispiel für die Standarddefinitionen in /etc/apache2/apache2.conf:
- cat /etc/apache2/apache2.conf*
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
- Bedeutung der Platzhalter:
* %h – Hostname oder IP-Adresse des Clients.
* %l – Identität des Clients (wird meist mit - geloggt, da selten verwendet).
* %u – Benutzername des Clients nach Authentifizierung.
* %t – Zeitpunkt der Anfrage.
* %r – Die vollständige HTTP-Anfrage (z. B. "GET /index.html HTTP/1.1").
* %>s – HTTP-Statuscode der Antwort (z. B. 200, 404, 500).
* %b – Größe der Antwort in Bytes.
* %{Referer}i – Die Seite, von der der Nutzer kam (Referrer).
* %{User-Agent}i – Der vom Client verwendete Browser und Betriebssystem.
Logging pro VirtualHost
- cat /etc/apache2/sites-available/example.conf*
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example
ErrorLog ${APACHE_LOG_DIR}/example-error.log
CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>
Log-Level anpassen
- Apache unterstützt verschiedene Log-Level für detaillierte Fehleranalysen:
* emerg – Kritische Fehler, die sofortiges Eingreifen erfordern. * alert – Dringende Warnungen. * crit – Kritische Ereignisse. * error – Allgemeine Fehler. * warn – Wichtige Warnungen. * notice – Bedeutende, aber nicht kritische Ereignisse. * info – Allgemeine Informationen. * debug – Detaillierte Debugging-Informationen.
- Beispiel für die Fehlerprotokollierung mit erhöhtem Detailgrad:
- cat /etc/apache2/apache2.conf*
LogLevel warn
Log-Rotation mit logrotate
- Apache-Logs können mit logrotate verwaltet werden, um Speicherplatz zu sparen.
- Die Konfigurationsdatei befindet sich unter /etc/logrotate.d/apache2.
- Beispiel für tägliche Rotation mit maximal 14 Log-Dateien:
- cat /etc/logrotate.d/apache2*
/var/log/apache2/*.log {
daily
rotate 14
missingok
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
systemctl reload apache2 > /dev/null
endscript
}
Aufgaben
- Erstelle einen neuen VirtualHost mit einer eigenen Access- und Error-Log-Datei.
- Passe das Log-Format an und füge eine eigene LogFormat-Direktive hinzu.
- Teste die verschiedenen Log-Level mit LogLevel debug.
Warum ist Logging wichtig?
- Überwachung des Serverzustands.
- Fehlerdiagnose und Debugging.
- Analyse von Zugriffsmustern zur Optimierung der Performance.
- Sicherheit und Angriffsdetektion durch Auswertung der Log-Dateien.