Raspberry Pi webserver - Rotování logů Apache serveru

Soubory s logy mohou během chvíle narůst do obludných rozměrů. Jakákoliv práce s nimi pak začne být zdlouhavá. Jak zajistit aby jich bylo více? Třeba jeden na každý den?

K „rotování“ logů Apache serveru se používá utilitka rotatelogs. Ta při správném nastavení zajistí například na každý den samostatný soubor s logy.

Instalace rotatelogs

Nejprve spustíme příkazy na aktualizaci balíčků.

sudo apt-get update
sudo apt-get upgrade

A následně rotatelogs nainstalujeme. Na Raspberry Pi je součástí balíčku apache2-utils.

sudo apt-get install apache2-utils


Konfigurace rotatelogs

Nyní máme všechno připraveno a můžeme začít s konfigurací.
Příkazem which zjistíme, kde máme rotatelogs nainstalován.

which rotatelogs

Vypíše se nejspíše /usr/sbin/rotatelogs. Tuto cestu využijeme a nastavíme ji do konfigurace logovacích souborů apache serveru.

V konfiguraci stránek (adresář sites-available) hledáme řádky, které začínají na CustomLog nebo ErrorLog.

Příklad takovýchto řádků:

CustomLog "/path/to/log/access_log" combined
ErrorLog "/path/to/log/error_log"

Tyto řádky změníme a přesměrujeme výstup do utility rotatelogs

CustomLog "|/usr/bin/rotatelogs -l /path/to/logs/access_log.%Y.%m.%d 86400" combined
ErrorLog "|/usr/bin/rotatelogs -l /path/to/logs/error_log.%Y.%m.%d 86400"

Toto nastavení zajistí, že na každý den bude samostatný soubor access_log a error_log. V něm pak budou přístupy jen z tohoto dne.

Možné konfigurace

CustomLog "|/usr/bin/rotatelogs -l /path/to/logs/access_log.%Y.%m.%d 86400" combined

Generuje na každý den nový soubor. Ukázka názvu souboru access_log.2019.06.12.

CustomLog "|/usr/bin/rotatelogs /path/to/logs/access_log 5M" combined

Generuje nový soubor v okamžiku, kdy původní dosáhl velikosti 5MB.

CustomLog "|/urs/bin/rotatelogs -n 15 /path/to/logs/access_log 5M" combined

Generuje nový soubor, když původní dosáhl 5MB a pojmenovává je access_log, access_log.1,... a celkem jich udrží 15.

Podmíněné logování

Občas bývá výhodné vytvořit samostatné logy pro konkrétní typy incidentů.

CustomLog "/path/to/logs/access_log-404" combined "expr=%{REQUEST_STATUS} eq 404"

Toto nastavení zajistí, že v konkrétním logu budou jen přístupy, které skončili HTTP statusem 404 Page Not Found (Požadovaný dokument nebyl nalezen, ale v budoucnosti může ale i nemusí být dostupný.).

CustomLog "/path/to/logs/access_log-403" combined "expr=%{REQUEST_STATUS} eq 403"

Zde se zase filtrují všechny přístupy se HTTP statusem 403 Forbidden (Požadavek byl legální, ale server odmítl odpovědět. Na rozdíl od 401 Unauthorized response zde nehraje žádnou roli autorizace.).


Zdroje:
Debian dokumentace rotatelogs
Apache dokumentace rotatelogs
Apache dokumentace logování
Apache dokumentace podmínek

Webserver, Apache, Logování

- (18. 6. 2019)

Jsem programátor, horolezec a tak trochu FlexiBee fanatik :-).
Na CharlieBlogu sepisuji své nápady a poznatky už od roku 2006.

Powered by CharlieBlog Engine v2.1 - Login