Logning Med NGINX – Hvordan til at Konfigurere Det, og Hvad du skal Se Ud For

NGINX er en højtydende og pålidelig web-server, der kan håndtere enorme mængder af trafik til internettets mest besøgte hjemmesider. Ved fejlfinding har du brug for en måde at få mening ud af trafik, og NGIN.giver fleksible logningsfunktioner til at fange værdifulde detaljer og hjælpe dig med at forstå opførslen på din .ebserver.NGIN.tilbyder to forskellige filer til logning af værdifulde serverebserverdata., Disse to filer er error_log og access_log. access_log bruges til lagring af oplysninger om requebklientanmodninger, og error_log gemmer andre uventede eller informative meddelelser.

konfiguration af access_log

access_log-filen indsamler alle klientanmodninger umiddelbart efter, at anmodningen er behandlet, hvilket giver en fantastisk måde at logge på, hvilke sider brugerne anmoder om fra din .ebserver., Du kan vælge, hvor de acess_log data er skrevet til brug følgende konfiguration fil syntaks:

access_log path ] ];access_log off;

Specifyingformat giver dig mulighed for at bruge et brugerdefineret format i dine logfiler ved hjælp af variabler, såsom antallet af bytessent til kunden ($bytes_sent) orthe anmodning længde ($request_length).

normalt vil NGIN.logge hver transaktion itprocesses i access_log. If = tilstandsparameteren giver en kraftfuld måde at udføre betinget logning på, så det kun gemmer logadgangslogmeddelelser, hvis en tilstand er sand., For eksempel, hvis youonly ønsker at optage anmoder om at returnere en HTTP status 404-kode, som du kan bruge denfølgende uddrag:

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

Med denne ændring eventuelle anmodninger completedsuccessfully (2xx), omdirigeret til en anden side (3xx) eller fundet en servererror (5 * x) vil ikke være logget ind logs/adgang.log-only404 fejl vil blive logget.

Hvis du har mere end virtualn virtuel vært eller flere http -, server-eller placeringsdirektiverundertiden er det praktisk at være i stand til at deaktivere logning på det nuværende direktivniveau, og den særlige off-værdi blev oprettet til dette formål.,Følgende konfiguration linje viser, hvordan du kan forhindre, at NGINX fra writingaccess oplysninger til nogen access_log targetat det nuværende niveau:

access_log off;

For en mere detaljeret forklaring på configurationoptions, tjek NGINX access_log dokumentation.

NGIN.Log Severity Levels

NGIN. understøtter en bred vifte af sværhedsgrader for at gøre det nemt at logge de oplysninger, du holder af. Hvert af disse niveauer kan bruges sammen med error_log directiveto indstille det minimumsniveau, hvor meddelelser logges., Her er de understøttede niveauer i laveste til højeste rækkefølge sammen med en guide til, hvordan de bruges:

  • Debug – Debugging-meddelelser, der ikke er nyttige det meste af tiden.
  • Info-oplysende meddelelser, der kan være godt at vide.
  • varsel-noget normalt men signifikant skete, og det skal bemærkes.
  • advarsel-noget uventet skete, men det er ikke en grund til bekymring.
  • fejl-noget mislykkedes.
  • Crit-der opstod en kritisk tilstand.
  • advarsel-øjeblikkelig handling er påkrævet.
  • Emerg-systemet er ubrugeligt.,

konfiguration af error_log

som standard indfanger error_log-filen Alle logmeddelelser på fejlens sværhedsgrad, hvilket betyder, at den primært bruges til at forstå fatale eller kritiske meddelelser for at hjælpe med problemløsning. Standardplaceringen for error_logis logs/error.log. Den måde, NGINXstores fejlmeddelelser er fleksibel og—sammen med giver dig mulighed for at skrive messagesto en fil—det understøtter også sende error_logmessages til stderr eller syslog daemon. Hvis du kører Ngin .open source 1.5.,2 eller nyere kan du også sende error_log-meddelelser til mere end moret sted ad gangen ved at angive flere error_log-direktiver om samme konfigurationsniveau.

Hvis du vil logge alle meddelelser, til eller abovethe advare log alvor gøre denfølgende ændret konfiguration:

error_log logs/error.log warn;

Logge til Syslog Med NGINX

Både access_log og error_log direktiver, som understøtter afsendelse af beskeder til en syslog daemon ved hjælp af syslog: string i din konfiguration., De følgende uddrag viser syntaksen for enten ved hjælp af direktiver med en syslog daemon:

http {error_log syslog:server;…}

For eksempel, hvis du ønsker at rette alle error_log beskeder med advare eller højere sværhedsgrad til syslogdaemon bruge dette direktiv linje:

error_log syslog:server=192.168.1.1 severity=warn;

Du kan yderligere tilpasse syslogconfiguration der passer til dit miljø ved hjælp af syslog-parameter describedin den NGINXsyslog dokumentation.

frustrationsfri logstyring. (Det er en ting.,)

aggregere, organisere og administrere dine logfiler med Papertrail

ting at holde øje med

fleksibiliteten NGIN.logging giver comesat en pris, og der er nogle ting at holde øje med, når du skriver yourconfiguration fil. Vi har allerede dækket NGINX er evnen til at tilsidesætte loggingconfigurations ved direktiv niveau, og denne funktion er meget nyttig forlogging ekstra information, når brugere adgang til bestemte stier, fx, loggingextra trafik information for alle brugere adgang til private URI., Brug af indlejrede adgangslogfiler kan dog hurtigt blivekompleks, og du skal være forsigtig med ikke at bruge denne funktion for meget.

skrivning access_logentries til en fil på disken kan forringe serverens ydeevne og øge responsen latenstid for brugernes anmodninger. For web-servere har brug for at bevare drevteknologiens høje kapacitet, NGINX giver en måde at skrive log beskeder til en cyklisk buffer inmemory, helt uden disk. Udpakning af disse logfiler er mere involveretend at læse en fil, så du bør kun bruge dette, hvis ydeevnen er kritisk for din arbejdsbyrde.,

for at bruge denne funktion skal din version af NGIN.konfigureres ved hjælp af indstillingen—med-debug. Du kan kontrollere, om dette er tilfældet, ved at gøre dette:

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

Inde i den konfigurationsfil, du kan aktivere skrivning af log indgange til hukommelse med følgende uddrag:

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

Dette vil skrive alle log-beskeder på debug-niveau. Udvinding af log-meddelelser fra hukommelsen indebærer brug af gdb for at oprette forbindelse til NGINX proces, og kopier og indsæt følgende script ved 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

afslut Derefter GDB ved hjælp af Ctrl-D., Ovenstående scriptvil skrive indholdet af hukommelsen til debug_log.t .tfile hvor du kan læse det som normalt.

konklusion

NGIN.giver dig mulighed for at indsamle logfiler for bothroutine adgang og uventede fejl i separate filer til senere analysisand fejlfinding. Access_logfilens format kan tilpasses i vid udstrækning,så det indeholder detaljerede oplysninger om anmodninger, såsom antallet af byte, der sendes til klienten, eller anmodningens længde, og error_log-direktivet giver dig mulighed for at kontrollere det minimumsniveau, der kræves for at meddelelser logges.,Både access_log-og error_log-direktiverne kan overføre logentrier til en syslog-dæmon, hvilket kan være ekstremt praktisk for udviklere, der arbejder med flere .ebservere.

og hvis alle disse funktioner ikke er nok til dig, kan du endda skrive error_logentries til en hukommelsesbuffer for at undgå at skrive til disk og reducere ydeevneeffekten for travle servere.

Leave a Comment