Logga med NGINX-hur du konfigurerar det och vad du ska se upp för

nginx är en högpresterande och pålitlig webbserver, som kan hantera stora mängder trafik för Internetens mest trafikerade webbplatser. Vid felsökning behöver du ett sätt att känna av trafik och NGINX ger flexibla loggningsfunktioner för att fånga värdefulla detaljer och hjälpa dig att förstå beteendet hos din webbserver.

nginx erbjuder två olika filer för att logga värdefulla webbserverdata., Dessa två filer är error_log och access_log. access_log används för att lagra information om webbklient requestsand error_log lagrar andra oväntade eller informativa meddelanden.

konfigurera access_log

filen access_log samlar in alla klientförfrågningar omedelbart efter att begäran har behandlats, vilket ger ett bra sätt att logga vilka sidor användarna begär från din webbserver., Du kan välja om acess_log data skrivs till med hjälp av följande konfigurationsfil syntax:

access_log path ] ];access_log off;

Specifyingformat gör att du kan använda ett anpassat format i din loggar in genom att använda variabler såsom antal bytessent till klienten ($bytes_sent) orthe begäran längd ($request_length).

normalt loggar NGINX varje transaktion itprocesses i access_log. Parametern if=condition ger en kraftfullsätt att utföra villkorlig loggning så att den bara lagrar loggåtkomstloggmeddelanden om något villkor är sant., Till exempel, om youonly vill spela in förfrågningar returnera en HTTP-statuskoden 404 du kan använda thefollowing utdrag:

map $status $should_log {404 1;default 0;}access_log logs/access.log combined if=$should_log;

i och Med denna förändring eventuella önskemål completedsuccessfully (2xx), omdirigeras till en annan sida (3xx) eller stött på ett servererror (5xx) kommer inte att registreras i loggarna/tillgång.log-only404 fel loggas.

om du har mer än en virtuell värd ellerflera http -, server-eller platsriktningaribland är det praktiskt att vara ableto inaktivera loggning för på nuvarande direktiv nivå, och det speciella off-värdet skapades för detta ändamål.,Följande konfiguration linjen visar hur du kan förhindra att NGINX från writingaccess information till någon access_log targetat den nuvarande nivån:

access_log off;

För en utförligare förklaring av configurationoptions, kolla in NGINX access_log dokumentation.

Nginx Log Severity Levels

nginx stöder ett brett spektrum av allvarlighetsnivåer för att göra det enkelt att logga den information du bryr dig om. Var och en av dessa nivåer kananvändas med error_log-direktivetför att ställa in miniminivån där meddelanden loggas., Här är de supportedlevels i lägsta till högsta ordning, tillsammans med en guide om hur de används:

  • felsökningsmeddelanden som inte är användbara för det mesta.
  • Info – informationsmeddelanden som kan vara bra att veta.
  • observera – något normalt men signifikant hände och det bör noteras.
  • Varna – något oväntat hände, men det är inte en anledning till oro.
  • fel – något misslyckades.
  • Crit – ett kritiskt tillstånd uppstod.
  • Alert – omedelbar åtgärd krävs.
  • Emerg – systemet är oanvändbart.,

Konfigurera error_log

Som standard error_log fil fångar alla loggmeddelanden på fel allvarlighetsgrad, vilket innebär att det’sprimarily som används för att förstå dödlig utgång eller kritiska meddelanden för att hjälpa withtroubleshooting. Standardplatsen för error_logis loggar / fel.logga. Hur nginxstores felmeddelanden är flexibel och—tillsammans med att du kan skriva messagesto en fil-det stöder också skicka error_logmessages till stderr eller syslog demonen. Om du kör NGINXopen källa 1.5.,2 eller nyare, du kan också skicka error_log meddelanden till mer än en plats i taget genom att angemultiple error_log direktiv på samma konfigurationsnivå.

om du vill logga alla meddelanden på eller övervarningsloggens allvarlighetsgrad gör konfigurationsändringen följande:

error_log logs/error.log warn;

logga in på Syslog med NGINX

både access_log-och error_log-direktiven stöder att skicka meddelanden till en syslog-demon genom att använda syslog: – strängen i din konfiguration., Följande utdrag visar syntaxen för att använda någon av direktiven med en syslog-demon:

http {error_log syslog:server;…}

Till exempel, om du vill styra alla error_log meddelanden med att varna eller högre svårighetsgrad till syslogdaemon använda detta direktiv linje:

error_log syslog:server=192.168.1.1 severity=warn;

Du kan ytterligare anpassa syslogconfiguration för att passa din miljö med hjälp av syslog parameter describedin den NGINXsyslog dokumentation.

Frustration-free log management. (Det är en sak.,)

aggregera, organisera och hantera dina loggar med Papertrail

saker att se upp för

flexibiliteten nginx loggning ger comesat en kostnad, och det finns några saker att se upp för när du skriver dinkonfigurationsfil. Vi har redan täckt NGINX förmåga att åsidosätta loggingconfigurations i direktiv nivå, och denna funktion är mycket användbar forlogging extra information när användare tillgång till särskilda vägar, t ex, loggingextra trafikinformation för alla användare som har åtkomst till den privata och URI., Men att använda kapslade åtkomstloggar kan snabbt blikomplex och du bör vara försiktig så att du inte använder den här funktionen för mycket.

skriva access_logentries till en fil på disken kan försämra serverprestanda och öka theresponse latens för användarförfrågningar. För webbservrar som behöver behålla högtprestanda, nginx ger ett sätt att skriva loggmeddelanden till en cyklisk buffert imemory, helt kringgå disken. Att extrahera dessa loggar är mer involverat än att läsa en fil, så du bör bara använda detta om prestanda är avgörande för din arbetsbelastning.,

för att använda den här funktionen måste din version av NGINX konfigureras med alternativet—med-debug. Du kan kontrollera om så är fallet genom att göra så här:

$ nginx -V 2>&1 | grep—‘—with-debug’configure arguments: --with-debug

i konfigurationsfilen kan du aktivera skrivloggposter till minnet med följande utdrag:

error_log memory:32m debug;...http {...}

detta kommer att skriva alla loggmeddelanden på felsökningsnivå. Att extrahera loggmeddelandena från minnet innebär att du använder gdb för att ansluta till nginx-processen och kopiera och klistra in följande skript vid prompten:

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

avsluta sedan GDB med Ctrl-D., Ovanstående scriptkommer att skriva innehållet i minnet till debug_log.txtfile där du kan läsa den som vanligt.

slutsats

nginx kan du samla loggar för bothroutine åtkomst och oväntade fel i separata filer för senare analysoch felsökning. Formatet för access_logfile kan anpassas i stor utsträckning för att inkludera detaljerad information omkrav som antalet byte som skickas till kunden eller förfrågningslängden,och error_log-direktivet tillåterdu kan styra den minsta allvarlighetsgrad som krävs för att meddelanden ska loggas.,Både access_log och error_log direktiven kan överföra logentries till en syslog-demon, som kan vara mycket praktiskt för utvecklare workingwith flera webbservrar.

och om alla dessa funktioner inte räcker till för dig, kan du även skriva error_logentries till en minnesbuffert för att undvika att skriva till disk och minska prestandaeffekten för upptagna servrar.

Leave a Comment