Apache log registrerar händelser som hanterades av Apache webbserver inklusive förfrågningar från andra datorer, svar som skickas av Apache, och åtgärder som är interna på Apache-servern. Den här delen av guiden förklarar grunderna i Apache loggning inklusive de typer av loggar som genereras av Apache, där de lagras, och hur man tolkar dem. Vi kommer också att täcka avancerade ämnen som att ställa in anpassade loggformat och konfigurera moduler för att få rikare data.,
typer av Apacheloggar
Apache genererar två typer av loggar: åtkomstloggar och felloggar.
Åtkomstlogg
åtkomstloggen innehåller information om förfrågningar som kommer in till webbservern. Den här informationen kan innehålla vilka sidor som visas, framgångsstatusen för förfrågningar och hur lång tid servern tog att svara. Här är ett exempel på en typisk åtkomstloggpost:
Fellogg
felloggen innehåller information om fel som webbservern stött på vid behandling av förfrågningar, till exempel saknade filer., Den innehåller också diagnostisk information om själva servern. Här är ett exempel på fellogg:
File does not exist: /var/www/favicon.ico
Loggplatser
som standard lagrar Apache åtkomst-och felloggar i separata filer på servern. Den exakta platsen beror på ditt operativsystem., Du kan hitta platsen för ditt operativsystem genom att klicka på följande länkar:
Debian/Ubuntu/Linux Mint
Redhat/Fedora/CentOS konfiguration
OpenSUSE
konfigurera Apacheloggar
Apache har en mycket konfigurerbar loggningsramverk som låter dig justera loggningsbeteende globalt eller för varje virtuell värd. Det finns flera direktiv som du kan använda för att ändra loggningsbeteende. Några av de mer gemensamma direktiven är direktiven om loggnivå och loggformat, som vi kommer att förklara mer detaljerat.,
Log Level Directive
LogLevel
– direktivet bestämmer minsta allvarlighetsgrad för händelser som loggas till en specifik destination. Svårighetsgraden representerar hur viktig händelsen är och kan sträcka sig från ”Emerg” till ”Trace8”, med ”Emerg” som representerar händelser som kan leda till instabilitet och ”Trace8” som representerar spårningsnivåmeddelanden. Till exempel tillåterLogLevel crit
loggar med ”Crit”, ”Alert” och ”Emerg” svårighetsgrad genom, men ignorerar alla andra nivåer.,
loggformat
direktivetLogFormat
styr layouten och formateringen av logghändelser. Apache använder som standard Common Log Format (CLF), men du kan ange din egen formatsträng för att ändra fälten som ingår i varje logg.
Du kan också användaCustomLog
– direktivet för att ändra platsen för loggfilen. I Linux skriver Apache vanligtvis loggar till katalogerna /var / log / apache2 eller / var / log / httpd beroende på ditt operativsystem och virtuella Värdöverskridande., Du kan också definiera en LogFormat-sträng efter filnamnet, vilket bara gäller formatsträngen till den här filen.
till exempel skriver följande konfiguration loggar tilllogs/access_log
med standardformatet ”common”. Loggarna / underkatalogen är i förhållande till katalogen som anges i ServerRoot-direktivet:
LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog "logs/access_log" common
CustomLog ”logs/access_log” common
Du kan hitta en fullständig lista över fält i Apache-loggdokumentationen., Vi rekommenderar att du använder minst följande fem fält, eftersom de är viktiga för att övervaka serverhälsan och för felsökningsproblem:
-
%>s
– HTTP-statuskoden för förfrågan. Detta visar den slutliga begäran status efter någon intern omdirigering; för den ursprungliga statusen, Använd %s. -
%U
– URL sökvägen begärs, exklusive eventuella ytterligare URL parametrar såsom en frågesträng. -
%a
– IP-adressen för klienten som gör begäran., Detta är användbart för att identifiera trafik från en viss källa. -
%T
– hur lång tid det tog att behandla begäran på några sekunder. Detta är användbart för att mäta hastigheten på din webbplats. Använd %D för att göra samma mätning i mikrosekunder. -
%{UNIQUE_ID}e
– även känd som request ID, loggar detta en unik identifierare med varje begäran. Detta är användbart för att spåra en begäran från Apache till din webbapplikationsserver.,
tilldela Smeknamn
LogFormat
strängar kan tilldelas smeknamn, som du sedan kan använda med ettCustomLog
direktiv för att skriva loggar med det angivna formatet. Detta gör att du kan använda samma loggformat för flera loggfiler utan att behöva omdefiniera formatet varje gång. Detta är särskilt användbart när du använder olika loggfiler för flera virtuella värdar.
låt oss till exempel skapa ett exempelformat och namnge det ”vhost_combined.,”Vi skapar sedan ett CustomLog
– direktiv som skriver loggar till en fil med hjälp av vhost_combined-formatet.
LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combinedCustomLog /var/log/apache2/vhost.log vhost_combined
formatering som JSON
lagring av dina loggar som vanlig text gör dem lätta att skanna om du någonsin behöver läsa dina loggfiler. Detta gör det dock svårt att använda verktyg som log management solutions för att läsa dina loggar, eftersom dessa verktyg måste veta hur dina loggar formateras. De flesta logghanteringslösningar stöder standard Apache-loggformatet, men om inte, bör du överväga att använda ett strukturerat format som JSON.,
JSON (förkortning för JavaScript Object Notation) är ett flexibelt format för lagring av strukturerad data. JSON lagrar en samling av nestable namn / värdepar, så att du kan lagra nästan vilken datatyp och struktur som helst. JSON är också effektivt självdokumenterande, eftersom namnet på nyckeln beskriver de data som den innehåller. JSON stöder många Grundläggande datatyper, inklusive strängar, siffror, booleans, arrays och null-värden.,
här är ett exempel på enLogFormat
som lagrar loggar i JSON-format:
LogFormat "{ \"time\":\"%t\", \"remoteIP\":\"%a\", \"host\":\"%V\", \"request\":\"%U\", \"query\":\"%q\", \"method\":\"%m\", \"status\":\"%>s\", \"userAgent\":\"%{User-agent}i\", \"referer\":\"%{Referer}i\" }"
standard virtuella värd åsidosätter
virtuella värdar (vhosts) används för att köra mer än en webbplats på en enda Apacheserver. Du kan definiera en separat loggningskonfiguration för varje vhost, som prioriteras framför den globala loggningskonfigurationen. Detta gör att du kan logga varje webbplats till en separat katalog, till exempel. Lämnar dessa parametrar ut standardvärden till den globala loggningskonfigurationen.
till exempel är följande konfiguration för en vhost till exempel.,kom. Loggar skrivs för att separeraaccess.log
ocherror.log
filer i katalogen/var/www/example.com/logs
:
följande avsnitt visar standardkonfigurationsfilens platser och direktiv som används i olika Linux-distributioner.
Debian/Ubuntu/Linux Mint
på Debianbaserade distributioner kan standardkonfigurationen för vhost för okrypterade webbplatser (port 80) hittas på/etc/apache2/sites-available/000-default.conf
. Standard vhost konfiguration för webbplatser krypterade med SSL/TLS (port 443) är på /etc/apache2/sites-available/default-ssl.conf
.,
tabell över Standarddirektiv
* konditionerad miljövariabel. Ger stöd för flera Apache server instanser.
** miljövariabel. Används för att dynamiskt ställa in den ursprungliga loggvägen.
Red Hat/Fedora/CentOS
På röda hattbaserade distributioner finns huvudkonfigurationsfilen på/etc/httpd/conf/httpd.conf
. Du kan placera ytterligare vhost-konfigurationsfiler i katalogen/etc/httpd/conf.d
, som automatiskt läses av servern vid start.
tabell över Standarddirektiv
* konditionerad på loaded log_config_module.,
** konditionerad på laddad logio_module.
OpenSUSE
i OpenSUSE, standard vhost config för okrypterade webbplatser (port 80) finns på/etc/apache2/default-vhost.conf
, medan standardkonfigurationen för webbplatser krypterade med SSL/TLS ligger på/etc/apache2/default-vhost-ssl.conf
.
tabell över Standarddirektiv
* konditionerad på loaded log_config_module.
** konditionerad på laddad logio_module.
*** konditionerad på laddad mod_ssl.,
Loggrelaterade moduler
webbservern Apache erbjuder ett antal moduler som antingen ändrar hur Apache fungerar eller utökar sin förmåga. Följande moduler lägger till eller ändrar loggningsbeteendet på användbara sätt.
mod_log_config
det här är den basloggningsmodul som Apache använder och den som vi täckte i den här delen av guiden.
mod_log_debug
den här modulen ger ytterligare alternativ för att logga felsökningsmeddelanden., Du kan till exempel logga händelser till en specifik URL-sökväg, logga förfrågningar efter att de har bearbetats, logga meddelanden från en viss klient om de resulterar i tidsgränser och mer. Observera att denna modul är experimentell och kanske inte ingår i din apachedistribution.
följande konfiguration loggar till exempel en klients IP-adress när den begär en specifik sökväg:
mod_log_forensic
den här modulen möjliggör loggning före och efter att en begäran har behandlats. Varje post tilldelas ett unikt ID, som kan användas för att spåra händelser mellan rättsmedicinsk logg och normal logg., Den rättsmedicinska loggen stöder dock inte anpassade format. Denna modul ersätter också mod_unique_id-modulen.
när modulen är aktiverad kan du använda nyckelordetforensic
för att ange vilken loggfil som är rättsmedicinsk logg. Du kan också använda %{forensic-id}
– mönstret i andra LogFormat
– strängar för att lägga till rättsmedicinsk data i vanliga loggar. Här använder vi/var/www/example.com/logs/forensic.log
:
varje rad i rättsmedicinsk logg börjar med antingen ett ”+” eller ”-” tecken., ”+”anger inmatningslogglinjen för just denna begäran, och” – ” anger efterföljande poster för samma begäran.
till exempel genererades följande postlogg genom att anropa http://localhost med standardloggformatet:
slutloggposten från samma begäran visas som:
-3264:55958cb4:0
om en slutpost inte visas i loggen slutfördes inte begäran.
mod_logio
denna modul lägger till möjligheten att logga antalet byte som skickas och tas emot per förfrågan., Detta inkluderar byte mottagna, skickade och överförda (kombination av mottagna och skickade). Modulen står också exakt för förändringar i storlek på grund av SSL-och TLS-kryptering. Denna modul kräver mod_log_config och ingår vanligtvis i Apache som standard.
den här modulen lägger tillLogIOTrackTTFB On|Off
– direktivet, vilket växlar möjligheten att spåra tiden till första byte (TTFB). TTFB är den tid från när en begäran tas emot till när svaret först skickas till klienten., Du kan sedan använda %^FB
för att inkludera ttfb-mätningen i en LogFormat
string.
mod_filter
denna modul ger sammanhangsberoende filter till utdatakedjan genom att registrera valfritt antal filterleverantörer. mod_filter är inte specifikt för loggning, men gör det möjligt att extrahera specifika förfrågningar baserat på filterleverantören. Kontextbehållarna inkluderar: main apache config, vhost config, inom katalogtaggar och .htaccess filer.,
genom att använda den här modulen kan du filtrera förfrågningar som innehåller objekt som vissa injektionskriterier och vilken IP-adress Den är från.
denna modul tillhandahålls som standard i många av paketdistributionerna, men kan kräva aktivering. För loggning placeras information i filtertrace-direktivet i felloggen.,li> FilterDeclare
– förklarar ett smart filter
FilterProtocol
– gör att mod_filter hanterar svarshuvuden korrektFilterProvider
– registrerar filterleverantörerFilterTrace
– tillåter felsökning/diagnostisk information till en fellogg innan leverantörsbearbetningföljande exempel gäller filtrering i en vhost-kontextbehållare villkorligt på filter och inkluderar moduler:
mod_unique_id:
denna modul konstruerar en miljövariabel och en unik identifierare för varje förfrågan., Det ingår ofta i paketdistributioner men kan kräva aktivering. Denna unika identifierare skrivs till åtkomstloggen.
den här modulen har ersatts av mod_log_forensic för rättsmedicinska ändamål, men stöds fortfarande för andra.
Till skillnad från den rättsmedicinska identifieraren skickas den unika identifieraren till applikationshanteraren via miljövariabeln UNIQUE_ID. Detta gör det möjligt för applikationsutvecklare att spåra en förfrågan via webbservern till applikationsservern. Det kan vara användbart för att felsöka en förfrågan.,
Apache snurrar bort underordnade processer för att hantera förfrågningar, och en underordnad instans behandlar flera förfrågningar åt gången. Som ett resultat är det ibland önskvärt att använda en unik identifierare för att identifiera en enda förfrågan över flera serverinstanser och underordnade processer.
när modulen är aktiverad, tillhandahåller modulen en identifierare som standard till applikationshanteraren.,
till exempel:
UNIQUE_ID: Vaf3en8AAQEAAAtoQlAAAAAA
identifieraren är konstruerad av en 32-bitars IP-adress, 32-bitars process-ID, 32-bitars tidsstämpel kopplad till en 16-bitars räknare för strängare upplösning än ett enda, 32-bitars trådindex. Tidsstämpelkomponenten är UTC för att förhindra problem med tidsjusteringar för sommartid. Applikationshanteraren ska endast behandla identifieraren som en ogenomskinlig token och inte dissekeras i beståndsdelar.
se den. Analysera det. Inspektera den. Lös det
se vad som är viktigt.
starta gratis testversion