Apache-logg registrerer hendelser som ble håndtert av Apache web server, inkludert forespørsler fra andre datamaskiner, svar sendt av Apache, og tiltak internt for Apache server. Denne delen av guiden forklarer det grunnleggende av Apache logging inkludert typer logger generert av Apache, hvor de er lagret, og hvordan du kan tolke dem. Vi vil også dekker avanserte emner slik som å sette egendefinert logg formater og konfigurere moduler for å få rikere data.,
Typer Apache Logger
Apache genererer to typer logger: tilgang til loggene og feillogger.
Logg
access-loggen inneholder informasjon om forespørsler som kommer inn til web-server. Denne informasjonen kan omfatte hvilke sider folk besøker, suksess status av forespørsler, og hvor lenge serveren tok til å svare. Her er et eksempel på en typisk tilgang oppføring:
Error Log
feil loggen inneholder informasjon om feil web-serveren som er oppstått ved behandling av forespørsler, slik som manglende filer., Det inkluderer også diagnostisk informasjon om selve serveren. Her er et eksempel feil logg:
File does not exist: /var/www/favicon.ico
Logg Steder
som standard, Apache butikker tilgang og feillogger i separate filer på serveren. Den nøyaktige plasseringen avhenger av operativsystemet., Du kan finne sted for OS ved å klikke på følgende linker:
Debian/Ubuntu/Linux Mint
Redhat/Fedora/CentOS Konfigurasjon
OpenSUSE
Konfigurere Apache Logger
Apache har en svært konfigurerbar logging rammeverk som lar deg justere logging atferd globalt eller for hver virtuelle verten. Det er flere direktiver som du kan bruke til å endre logging atferd. Noen av de mer vanlige direktivene er loggen nivå og logg format direktiver, som vi vil forklare i detalj.,
Logg Nivå Direktiv
LogLevel
direktivet fastsetter de minste og alvorlighetsgrad på hendelsene som skal logges til en spesifikk destinasjon. Alvorlighetsgraden representerer hvor viktig hendelse er, og kan variere fra «Emerg» til «Trace8», med «Emerg» representerer hendelser som kan føre til ustabilitet, og «Trace8» representerer trace-nivå meldinger. For eksempel, LogLevel crit
vil tillate logger med «Kritisk», «Varsler» og «Emerg» alvorlighetsgraden gjennom, men vil ignorere alle andre nivåer.,
Logg Format
LogFormat
direktiv kontrollerer layout og formatering av logger hendelser. Apache bruker Common Log-Format (CLF) som standard, men du kan angi dine egne format string for å endre feltene som inngår i hver enkelt stokk.
Du kan også bruke CustomLog
direktiv for å endre plassering for loggfilen. I Linux, Apache ofte skriver logger seg på /var/log/apache2 eller /var/log/httpd kataloger, avhengig av hvilket OS og Virtuelle Host overstyrer., Du kan også definere en LogFormat string etter filnavn, som bare vil søke i formatstrengen til denne filen.
For eksempel, følgende konfigurasjon skriver logger til logs/access_log
ved å bruke standard «vanlige» format. Loggene/ undermappe er i forhold til den katalogen som er angitt i ServerRoot direktiv:
LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog "logs/access_log" common
CustomLog «logs/access_log» vanlig
Du kan finne en fullstendig liste over felt i Apache logg dokumentasjon., Vi anbefaler at du bruker minst følgende fem felt, som de er viktige for overvåking server helse og for feilsøking av problemer:
-
%>s
– HTTP status code for forespørselen. Dette viser den endelige forespørsel, status etter noen interne omdirigering; for den opprinnelige status, bruker %s. -
%U
– URL-banen bedt om, med unntak av noen ekstra URL-parametre som en query-streng. -
%a
– IP-adressen til klienten sender forespørselen., Dette er nyttig for å identifisere trafikk fra en bestemt kilde. -
%T
– Hvor lang tid det tok å behandle forespørselen i løpet av sekunder. Dette er nyttig for å måle hastigheten på nettstedet ditt. Bruk %D for å gjøre det samme måling i mikrosekunder. -
%{UNIQUE_ID}e
– Også kjent som the request-ID, dette logger en unik identifikator med hver forespørsel. Dette er nyttig for å søke etter en forespørsel fra Apache til din web application server.,
Tilordne Kallenavn
LogFormat
strenger kan bli tildelt kallenavn, som du kan bruke med en CustomLog
direktiv til å skrive logger bruke den angitte formatet. Denne kan du bruke samme logge format for flere loggfiler uten å måtte omdefinere format hver gang. Dette er spesielt nyttig når du bruker forskjellige loggfiler for flere virtuelle verter.
For eksempel, la oss skape et eksempel format, og gi den navnet «vhost_combined.,»Vi vil deretter oppretter du en CustomLog
direktiv som skriver logger til en fil ved hjelp av vhost_combined format.
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
Lagre logger som ren tekst gjør det enkelt å skanne, i tilfelle du skulle få behov for å lese loggfiler. Men, dette gjør det vanskelig å bruke verktøy som logg management løsninger for å lese loggene, ettersom disse verktøyene må vite hvordan loggene er formatert. De fleste logg management løsninger støtter standard Apache log-format, men hvis ikke, bør du vurdere å bruke et strukturert format som JSON.,
JSON (kort for JavaScript Object Notation) er et fleksibelt format for lagring av strukturerte data. JSON lagrer en samling av kan stables i hverandre navn/verdi-par, slik at du kan lagre nesten alle data type og-struktur. JSON er også effektivt selv dokumentere, siden navnet på nøkkelen beskriver de data som den inneholder. JSON støtter mange grunnleggende typer data, inkludert strenger, tall, booleans, matriser, og null-verdier.,
Her er et eksempel på en LogFormat
som lagrer logger 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 Virtuelle Verten Overstyrer
Virtuelle Verter (vhosts) er brukt til å kjøre mer enn ett nettsted på en enkel Apache server. Du kan definere en egen logging konfigurasjon for hver vhost, som er gitt prioritet over den globale logging konfigurasjon. Dette gjør at du kan logge deg hver nettside til en egen katalog, for eksempel. At disse parametrene ut som standard til den globale logging konfigurasjon.
For eksempel, følgende konfigurasjonen for en vhost ved eksempel.,com. Loggene er skrevet for å skille access.log
og error.log
filer i /var/www/example.com/logs
– katalogen:
De følgende avsnittene viser standard konfigurasjonen steder og direktiver som brukes i forskjellige Linux-distribusjoner.
Debian/Ubuntu/Linux Mint
Debian-baserte distribusjoner, standard vhost konfigurasjon for ukrypterte sider (port 80) kan bli funnet på /etc/apache2/sites-available/000-default.conf
. Standard vhost konfigurasjon for nettsteder kryptert med SSL/TLS (port 443) er på /etc/apache2/sites-available/default-ssl.conf
.,
Tabellen for Standard Direktiver
* Klimaanlegg miljø variabel. Gir støtte for flere Apache server-forekomster.
** Miljø variabel. Brukes til å dynamisk sett den første innlogging banen.
Red Hat/Fedora/CentOS
På Red Hat-baserte distribusjoner, de viktigste konfigurasjonsfilen ligger på /etc/httpd/conf/httpd.conf
. Du kan plassere flere vhost config filer i /etc/httpd/conf.d
– katalogen, som er automatisk lest av en server på start.
Tabellen for Standard Direktiver
* Har lagt på log_config_module.,
** forutsetning som er lagt logio_module.
OpenSUSE
I OpenSUSE, standard vhost config for ukrypterte sider (port 80) er lokalisert på /etc/apache2/default-vhost.conf
, mens standard config for områder som er kryptert med SSL/TLS ligger på /etc/apache2/default-vhost-ssl.conf
.
Tabellen for Standard Direktiver
* Har lagt på log_config_module.
** forutsetning som er lagt logio_module.
*** forutsetning som er lagt mod_ssl.,
Logg-Relaterte Moduler
Apache web server tilbyr en rekke moduler som enten endre måten Apache fungerer eller utvide sin kapasitet. Følgende moduler legge til eller endre logging atferd på nyttige måter.
mod_log_config
Dette er basen logging modul som Apache bruker, og som vi har dekket i denne delen av guiden.
mod_log_debug
Denne modulen gir flere alternativer for å logge debug meldinger., For eksempel, du kan logge hendelser til en bestemt URL-banen, logg forespørsler etter at de er behandlet, logg-meldinger fra en bestemt klient hvis de fører til tidsavbrudd, og mer. Merk at denne modulen er eksperimentell, og kan ikke være inkludert i din Apache distribusjon.
For eksempel, følgende konfigurasjon logger IP-adressen til en klient når det ber om en bestemt bane:
mod_log_forensic
Denne modulen gjør det mulig å logge før og etter at en avtale er behandlet. Hver oppføring er tildelt en unik ID som kan brukes til å spore hendelser mellom den rettsmedisinske logg og normal logge deg., Imidlertid, den rettsmedisinske logger ikke støtter egendefinerte formater. Denne modulen også erstatter mod_unique_id modul.
Når modulen er aktivert, kan du bruke forensic
søkeord for å angi hvilke loggfil er den rettsmedisinske logg. Du kan også bruke %{forensic-id}
mønster i andre LogFormat
strenger å legge til rettsmedisinske data til normal logger. Her bruker vi /var/www/example.com/logs/forensic.log
:
Hver linje i den rettsmedisinske logg starter med et «+» eller » – » – tegn., «+» angir at oppføringen logg linje for dette aktuelle forespørselen, og «-» indikerer etterfølgende oppføringer for den samme forespørsel.
For eksempel, følgende oppføring log ble generert ved å ringe http://localhost ved hjelp av standard log-format:
avslutningen oppføring fra den samme forespørselen vises som:
-3264:55958cb4:0
Hvis en slutter oppføringen ikke vises i loggen, forespørsel ble ikke fullført.
mod_logio
Denne modulen legger til muligheten til å logge antall bytes sendt og mottatt per forespørsel., Dette inkluderer byte som er mottatt, sendt og overført (kombinasjon av mottatt og sendt). Modulen også nøyaktig regnskap for endringer i størrelse på grunn av SSL og TLS-kryptering. Denne modulen krever mod_log_config og er vanligvis inkludert i Apache som standard.
Denne modulen legger til LogIOTrackTTFB On|Off
direktiv, som skifter muligheten til å spore tid til første byte (TTFB). TTFB er tiden fra når det kommer en forespørsel om når svar er først sendt til klienten., Deretter kan du bruke %^FB
for å inkludere TTFB måling i en LogFormat
string.
mod_filter
Denne modulen gir kontekstsensitiv filtre til utgang kjede ved å registrere antall filter leverandører. mod_filter er ikke spesifikke for logging, men åpner for å trekke ut spesielle forespørsler basert på filter-leverandør. Sammenheng beholdere inkluderer: viktigste apache-config, vhost config, i katalogen koder, og .htaccess filer.,
Bruke denne modulen gir mulighet for filtrering forespørsler som inneholder elementer som for eksempel visse injeksjon kriterier, og hvilken IP-adresse den er fra.
Denne modulen leveres som standard i mange av pakken distribusjoner, men kan kreve å aktivere. For det formål å logging, FilterTrace direktiv innlegg informasjon til feilloggen.,li> FilterDeclare
– erklærer en smart filter
FilterProtocol
– får mod_filter å håndtere respons overskrifter forståelseFilterProvider
– filter registrerer leverandørerFilterTrace
– gjør det mulig for debugging/diagnostisk informasjon til en error log før leverandøren behandlingfølgende eksempel gjelder filtrering i en vhost sammenheng container betinget på filter og inneholder moduler:
mod_unique_id:
Denne modulen bygger et miljø variabel og en unik identifikator for hver forespørsel., Det er ofte inkludert i pakken distribusjoner, men kan kreve å aktivere. Dette unike identifikatoren er skrevet for å få tilgang til loggen.
Denne modulen har blitt erstattet av mod_log_forensic for rettsmedisinske formål, men er fortsatt støttes for andre.
i Motsetning til den rettsmedisinske identifikator, den unike id-er gått til programmet handler via miljøvariabelen UNIQUE_ID. Dette gjør at programmet utviklere å spore en forespørsel via web-server til server program. Det kan være nyttig for debugging en forespørsel.,
Apache spinn av barn prosesser for å håndtere forespørsler og et barn forekomst prosesser flere forespørsler på en gang. Som et resultat, er det noen ganger ønskelig å bruke en unik identifikator for å identifisere en enkel forespørsel på tvers av flere server-forekomster og barn prosesser.
Når den er aktivert, modulen gir en identifikator som standard til programmet handler.,
For eksempel slik:
UNIQUE_ID: Vaf3en8AAQEAAAtoQlAAAAAA
identifikator er konstruert fra en 32-biters IP-adresse, 32-biters prosess-ID, 32-biters tidsstempel koblet til en 16-bit teller for strammere oppløsning enn ett sekund, 32-biters thread index. Tidsstempelet komponent er UTC til å forhindre problemer med sommertid justeringer. Programmet handler bør behandle identifikator som en ugjennomsiktig token bare og ikke dissekert inn bestanddeler.
Se det. Analysere det. Inspisere den. Løse dem på
Se hva som er viktig.
START GRATIS PRØVEVERSJON