Nginx je vysoce výkonný a spolehlivý webový server, který je schopen zvládnout obrovské množství provozu pro nejrušnější webové stránky internetu. Při odstraňování problémů potřebujete způsob, jak dát smysl provozu a Nginx poskytuje flexibilní funkce protokolování, které zachycují cenné detaily a pomáhají vám pochopit chování vašeho webového serveru.
nginx nabízí dva různé soubory pro protokolování cenných dat webového serveru., Tyto dva soubory jsou error_log a access_log. access_log slouží k ukládání informací o požadavcích webového klientaa error_log ukládá další neočekávané nebo informativní zprávy.
konfigurace access_log
soubor access_log shromažďuje všechny požadavky klientů ihned po zpracování žádosti a poskytuje skvělý způsob, jak přihlásit, které stránky uživatelé požadují z vašeho webového serveru., Můžete si vybrat, kde jsou zapsána data acess_log pomocí následující syntaxe konfiguračního souboru:
access_log path ] ];access_log off;
Specifyingformat umožňuje používat vlastní formát v protokolech pomocí proměnných, jako je počet bytessent klientovi ($bytes_sent)nebodélka požadavku ($request_length).
Nginx obvykle zaznamená každou transakci itprocesses v access_logu. Parametr if=condition poskytuje výkonnýzpůsob, jak provádět podmíněné protokolování, takže pouze zaznamenává zprávy log access log, pokud je nějaká podmínka pravdivá., Například pokud chcete pouze zaznamenávat požadavky vracející stavový kód HTTP 404, můžete použítNásledující úryvek:
map $status $should_log {404 1;default 0;}access_log logs/access.log combined if=$should_log;
s touto změnou nebudou všechny požadavky dokončenyúspěšně (2xx), přesměrovány na jinou stránku (3xx) nebo se vyskytly servererror (5xx) nebudou přihlášeni do protokolů/přístupu.log-only404 chyby budou zaznamenány.
Pokud máte více než jeden virtuální hostitel ormultiple http, server nebo umístění directivesthensometimes, že je užitečné být schopen zakázat protokolování pro aktuální směrnice úrovni, a speciální off hodnota byla vytvořena pro tento účel.,Následující konfigurační řádek ukazuje, jak lze zabránit NGINX z writingaccess informace žádné access_log targetat současná úroveň:
access_log off;
Pro podrobnější vysvětlení configurationoptions, podívejte se na NGINX access_log dokumentace.
úrovně závažnosti protokolu Nginx
nginx podporuje širokou škálu úrovní závažnosti, aby bylo snadné zaznamenávat informace, na kterých vám záleží. Každá z těchto úrovní můžebýt použit s error_log directiveto nastavit minimální úroveň, na které jsou zprávy zaznamenány., Zde jsou podporované úrovně v nejnižším až nejvyšším pořadí, spolu s průvodcem o tom, jak jsou používány:
- ladění zpráv, které nejsou užitečné většinu času.
- Info-informační zprávy, které by mohly být dobré vědět.
- oznámení-stalo se něco normálního, ale významného a mělo by být poznamenáno.
- varovat-stalo se něco neočekávaného, ale není to důvod k obavám.
- chyba – něco selhalo.
- Crit-došlo k kritickému stavu.
- upozornění-je nutná okamžitá akce.
- Emerg – systém je nepoužitelný.,
konfigurace error_log
soubor error_log ve výchozím nastavení zachycuje všechny zprávy protokolu na úrovni závažnosti chyby, což znamená, že se používá pro pochopení fatálních nebo kritických zpráv, které vám pomohou stroubování. Výchozí umístění protokolů / chyb error_logis.protokol. Způsob, jakým nginxstores chybové zprávy je flexibilní a-spolu s umožňuje psát messagesto souboru-to také podporuje odesílání error_logmessages do stderr nebo démona syslog. Pokud používáte zdroj NGINXopen 1.5.,2 nebo novější, můžete také posílat zprávy error_log na více než jedno místo najednou zadánímnožství směrnic error_log na konfigurační úrovni thesame.
Chcete-li přihlásit všechny zprávy na nebo výševarovat závažnost protokolu provést změnu konfigurace:
přihlášení k syslogu pomocí nginx
jak směrnice access_log, tak směrnice error_log podporují odesílání zpráv démonovi syslog pomocí syslog: string ve vaší konfiguraci., Následující úryvek ukazuje syntaxi pro použití jedné ze směrnic s démonem syslog:
http {error_log syslog:server;…}
například, pokud chcete nasměrovat všechny zprávy error_log s varováním nebo vyšší závažností na syslogdaemon použijte tento řádek směrnice:
error_log syslog:server=192.168.1.1 severity=warn;
syslogconfiguration můžete dále přizpůsobit tak, aby vyhovoval vaše prostředí pomocí parametru syslog popsaného v dokumentaci nginxsyslog.
Správa protokolu bez frustrace. (Je to věc.,)
Kamenivo, organizovat a spravovat své záznamy s Papíry
Pozor
flexibilita NGINX protokolování poskytuje něco stojí, a tam jsou některé věci dávat pozor při psaní konfiguračního souboru. Jsme již zahrnuty NGINX je schopnost potlačit loggingconfigurations na směrnice úrovni, a tato funkce je velmi užitečná forlogging další informace pokaždé, když uživatelé přístup k specifické cesty, např. loggingextra dopravní informace pro všechny uživatele přistupující k /soukromé URI., Použití vnořených přístupových protokolů se však může rychle státkomplexní a měli byste být opatrní, abyste tuto funkci příliš nepoužívali.
zápis access_logentries do souboru na disku může snížit výkon serveru a zvýšit latenci theresponse pro požadavky uživatelů. Pro webové servery, které potřebují udržovat vysokévýkon, nginx poskytuje způsob, jak psát zprávy protokolu do cyklické vyrovnávací paměti vpaměť, zcela obcházet disk. Extrahování těchto protokolů je více zapojenonež čtení souboru, takže byste měli použít pouze v případě, že výkon je kritický provaše pracovní zátěž.,
Chcete—li tuto funkci použít, musí být vaše verze nginx nakonfigurována pomocí volby-with-debug. Pokud tomu tak je, můžete zkontrolovat:
$ nginx -V 2>&1 | grep—‘—with-debug’configure arguments: --with-debug
uvnitř konfiguračního souboru můžete povolit zápis záznamů protokolu do paměti pomocí následujícího úryvku:
error_log memory:32m debug;...http {...}
toto zapíše všechny zprávy protokolu na úrovni ladění. Extrahování zpráv protokolu z paměti zahrnuje použití gdb pro připojení k procesu Nginx a zkopírujte a vložte následující skript na výzvu:
set $log = ngx_cycle->logwhile $log->writer != ngx_log_memory_writerset $log = $log->nextendset $buf = (ngx_log_memory_buf_t *) $log->wdatadump binary memory debug_log.txt $buf->start $buf->end
poté ukončete GDB pomocí Ctrl-D., Výše uvedený script zapíše obsah paměti do debug_logu.txtfile, kde si můžete přečíst jako normální.
závěr
NGINX umožňuje shromažďovat protokoly pro přístup k bothrotinu a neočekávané chyby do samostatných souborů pro pozdější analýzua řešení problémů. Formát access_logfile lze rozsáhle přizpůsobit tak, aby obsahoval podrobné informace orequests, jako je počet bajtů odeslaných klientovi nebo délka požadavku, a směrnice error_log umožňuje ovládat minimální úroveň závažnosti potřebnou pro zaznamenávání zpráv.,Směrnice access_log i error_log mohou přenášet logentries do démona syslog, což může být velmi užitečné pro vývojáře pracující s více webovými servery.
a pokud pro vás všechny tyto funkce nestačí, můžete dokonce napsat error_logentries do vyrovnávací paměti, abyste se vyhnuli zápisu na disk a snížili výkonimpact pro zaneprázdněné servery.