Úvod
Logování hraje klíčovou roli při správě webového serveru. Poskytuje důležité údaje o provozu, případných chybách a bezpečnostních incidentech. Nginx, jako oblíbený open-source webový server, nabízí robustní možnosti logování, které administrátorům umožňují flexibilně konfigurovat a spravovat logy dle potřeb. Tento článek vám detailně ukáže, jak nastavit logování a rotaci logů v Nginx na virtuálním privátním serveru (VPS) s operačním systémem Ubuntu.
Nastavení logovacích souborů Nginx
Prvním krokem k nastavení logování Nginx je úprava hlavního konfiguračního souboru, který se obvykle nachází v /etc/nginx/nginx.conf
. Najdete v něm blok server
, který může vypadat podobně jako v příkladu:
server {
...
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
...
}
V tomto kódu vidíte konfiguraci Nginx, která zapisuje přístupy do souboru /var/log/nginx/access.log
a chyby do souboru /var/log/nginx/error.log
. Umístění a pojmenování logovacích souborů si můžete samozřejmě přizpůsobit.
Formáty logů
Nginx podporuje různé formáty logování, mezi které patří:
- Common Log Format (CLF): Je to standardní formát, který zaznamenává základní informace jako IP adresu klienta, čas dotazu, stav odpovědi a velikost odpovědi.
- Combined Log Format: Rozšířený formát, který přidává informace o referenční URL a uživatelském agentovi klienta.
- JSON Log Format: Zaznamenává logovací data ve strukturovaném JSON formátu.
Formát logu se dá definovat přidáním následujícího řádku do konfiguračního souboru Nginx:
log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
Tato definice vytváří vlastní formát logu, který zahrnuje IP adresu klienta, uživatelské jméno, čas dotazu, HTTP request, stav odpovědi, velikost odpovědi, referenční URL a informace o prohlížeči (user agent).
Rotace logů
Rotace logů je proces, kdy se staré logovací soubory nahrazují novými. To pomáhá šetřit místo na disku a předchází tomu, aby soubory logů narostly do enormní velikosti. V Nginx se rotace logů aktivuje direktivou log_rotate
:
log_rotate on;
Tímto se zapne automatická rotace logů podle definovaných pravidel.
Pravidla rotace
Pravidla pro rotaci určují, jak často a jakým způsobem se logy otáčejí. Následující konfigurace nastaví rotaci logů na denní bázi a uchování maximálně 7 dní starých souborů:
log_rotate daily;
log_rotate 7;
Umístění rotovaných logů
Rotované logy se ukládají do podadresáře logs
ve stejném adresáři, kde jsou i původní soubory. V našem případě se tedy rotované logy budou nacházet zde:
/var/log/nginx/logs/access.log.*
/var/log/nginx/logs/error.log.*
Testování logování a rotace
Po nastavení logování a rotace můžete jejich funkčnost otestovat pomocí těchto kroků:
- Zaznamenání událostí: Navštivte svůj web nebo pošlete požadavky na Nginx server.
- Ověření logovacích souborů: Podívejte se do souborů
/var/log/nginx/access.log
a/var/log/nginx/error.log
, zda obsahují zaznamenané požadavky a chyby. - Spuštění rotace logů: Počkejte, až vyprší doba rotace (např. 1 den), nebo ručně spusťte rotaci pomocí nástroje
logrotate
:
sudo logrotate -f /etc/logrotate.conf
- Kontrola rotovaných logů: Ujistěte se, že v adresáři
/var/log/nginx/logs
se objevily rotované soubory.
Závěr
Konfigurace logování a rotace logů v Nginx je klíčová pro monitorování aktivity serveru, odstraňování problémů a dodržování bezpečnostních standardů. S pomocí kroků uvedených v tomto článku můžete efektivně nastavit logování Nginx a rotaci logů, aby váš webový server spolehlivě zaznamenával a spravoval logovací soubory.
Časté dotazy
1. Jaké jsou výhody logování v Nginx?
- Získáváte přehled o aktivitě serveru a případných chybách.
- Pomáhá při diagnostice problémů a analýze výkonu.
- Umožňuje sledování bezpečnosti a odhalování podezřelých aktivit.
2. Jaké informace se zapisují do logů Nginx?
- Informace o požadavku (IP adresa klienta, čas požadavku, typ požadavku, cílová URL).
- Informace o odpovědi (stav odpovědi, velikost odpovědi).
- Informace o chybách (chybové kódy, stack trace).
3. Co je rotace logů?
- Proces nahrazování starých logovacích souborů novými.
- Pomáhá zabránit nadměrnému růstu logovacích souborů.
4. Jak zapnout rotaci logů v Nginx?
- Přidejte direktivu
log_rotate on;
do konfiguračního souboru Nginx.
5. Jak nastavit pravidla rotace logů?
- Použijte direktivy
log_rotate daily;
alog_rotate 7;
pro nastavení denní rotace a uchování logů za posledních 7 dní.
6. Kde se ukládají rotované logy?
- V podadresáři
logs
, který se nachází ve stejném adresáři jako původní logovací soubory.
7. Jak otestovat logování v Nginx?
- Navštivte web nebo pošlete požadavky na server Nginx.
- Zkontrolujte logovací soubory, zda obsahují zaznamenané požadavky a chyby.
8. Jak otestovat rotaci logů?
- Počkejte, až uplyne nastavený čas pro rotaci, nebo ručně spusťte rotaci pomocí nástroje
logrotate
. - Zkontrolujte, zda se v adresáři
logs
vytvořily rotované soubory.