Apache Logge Grundlæggende

Apache log records begivenheder, der blev håndteret af Apache web server, herunder anmodninger fra andre computere, svar sendt af Apache, og handlinger internt i Apache-server. Dette afsnit i vejledningen forklarer det grundlæggende i Apache logning herunder typer af logfiler genereret af Apache, hvor de er gemt, og hvordan man fortolker dem. Vi dækker også avancerede emner såsom indstilling af brugerdefinerede logformater og konfiguration af moduler for at få rigere data.,

typer af Apache Logs

Apache genererer to slags logs: access logs og error logs.

Access Log

access log indeholder oplysninger om anmodninger, der kommer ind på webebserveren. Disse oplysninger kan omfatte, hvilke sider folk ser, successtatus for anmodninger, og hvor lang tid serveren tog at svare. Her er et eksempel på en typisk adgangslogindtastning:

fejllog

fejlloggen indeholder oplysninger om fejl, som webebserveren opstår ved behandling af anmodninger, såsom manglende filer., Det indeholder også diagnostiske oplysninger om selve serveren. Her er et eksempel fejllog:

 File does not exist: /var/www/favicon.ico

Logplaceringer

Som standard gemmer Apache adgang og fejllogfiler i separate filer på serveren. Den nøjagtige placering afhænger af dit operativsystem., Du kan finde placeringen for dit OS ved at klikke på følgende links:

Debian/Ubuntu/Linux Mint
Redhat/Fedora/CentOS Konfiguration af
OpenSUSE

Konfiguration af Apache Logfiler

Apache har en meget konfigurerbar logning rammer, der lader dig justere logge adfærd globalt eller for hver virtuel vært. Der er flere direktiver, du kan bruge til at ændre logningsadfærd. Nogle af de mere almindelige direktiver er direktiverne om logniveau og logformat, som vi vil forklare mere detaljeret.,

Logniveaudirektiv

LogLevel direktivet bestemmer minimumsniveauet for begivenheder, der logges til en bestemt destination. Sværhedsgraden niveau repræsenterer hvor betydningsfuld begivenhed er, og kan spænde fra det “Emerg” til “Trace8”, med “Emerg” repræsenterer begivenheder, der kan føre til ustabilitet, og “Trace8” repræsenterer trace-niveau beskeder. For eksempel vil LogLevel crit tillade logfiler med “Crit”, “Alert” og “Emerg” sværhedsgrad gennem, men vil ignorere alle andre niveauer.,

logformat

LogFormat direktivet styrer layout og formatering af loghændelser. Apache bruger Common Log Format (CLF) som standard, men du kan angive din egen formatstreng for at ændre felterne i hver log.

Du kan også bruge CustomLog direktivet til at ændre placeringen af logfilen. I Linu.skriver Apache ofte logfiler til /var/log/apache2 eller /var/log/httpd mapper afhængigt af dit operativsystem og virtuelle vært tilsidesætter., Du kan også definere en logformat streng efter filnavnet, som kun vil anvende formatstrengen til denne fil.for eksempel skriver følgende konfiguration logfiler til logs/access_log ved hjælp af standard “common” – formatet. Logs/ undermappe, der er i forhold til den mappe, der er angivet i ServerRoot direktiv:

LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog "logs/access_log" common

CustomLog “logs/access_log” fælles

Du kan finde en komplet liste over felter i den Apache log dokumentation., Vi anbefaler at bruge mindst følgende fem felter, da de er vigtige for overvågning af serverens sundhed og for fejlfindingsproblemer:

  1. %>s – http-statuskoden for anmodningen. Dette viser den endelige anmodningsstatus efter intern omdirigering; for den oprindelige status skal du bruge %s.
  2. %U – den ønskede URL-sti, eksklusive yderligere URL-parametre, såsom en forespørgselsstreng.
  3. %a – IP-adressen på klienten, der fremsætter anmodningen., Dette er nyttigt til at identificere trafik fra en bestemt kilde.
  4. %T – hvor lang tid det tog at behandle anmodningen i sekunder. Dette er nyttigt til måling af hastigheden på dit .ebsted. Brug % D til at foretage den samme måling i mikrosekunder.
  5. %{UNIQUE_ID}e – også almindeligt kendt som re .uest ID, dette logger en unik identifikator med hver anmodning. Dette er nyttigt til at spore en anmodning fra Apache til din applicationebapplikationsserver.,

Tildeling af Øgenavne

LogFormat strenge kan blive tildelt kaldenavne, som du kan bruge med en CustomLog direktiv til at skrive logs brug det angivne format. Dette giver dig mulighed for at bruge det samme logformat til flere logfiler uden at skulle omdefinere formatet hver gang. Dette er især nyttigt, når du bruger forskellige logfiler til flere virtuelle værter.

lad os for eksempel oprette et eksempelformat og navngive det “vhost_combined.,”Vi opretter derefter etCustomLog direktiv, der skriver logfiler til en fil ved hjælp af 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 af dine logfiler som almindelig tekst gør dem nemme at scanne, hvis du nogensinde har brug for at læse dine logfiler. Dette gør det dog vanskeligt at bruge værktøjer som logstyringsløsninger til at læse dine logfiler, da disse værktøjer skal vide, hvordan dine logfiler formateres. De fleste log management løsninger understøtter standard Apache log format, men hvis ikke, bør du overveje at bruge en struktureret format som JSON.,JSON (forkortelse for JavaScript Object Notation) er et fleksibelt format til lagring af strukturerede data. JSON gemmer en samling af nestable navn / værdi par, så du kan gemme næsten enhver datatype og struktur. JSON er også effektivt selvdokumenterende, da navnet på nøglen beskriver de data, den indeholder. JSON understøtter mange grundlæggende datatyper, herunder strenge, tal, booleans, arrays og null-værdier.,

Her er et eksempel på en LogFormat, der gemmer logs 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 Virtuel Vært Tilsidesætter

Virtuelle Værter (vhosts) bruges til at køre mere end én hjemmeside på en enkelt Apache-server. Du kan definere en separat logning konfiguration for hver vhost, som er prioriteret over den globale logning konfiguration. Dette lader dig logge hvert websiteebsted til en separat mappe, for eksempel. Forlader disse parametre ud som standard til den globale logning konfiguration.

for eksempel er følgende konfiguration for et vhost ved eksempel.,com. Logs er skrevet til at adskille access.log og error.log filer i /var/www/example.com/logs bibliotek:

De følgende afsnit viser default configuration file locations og direktiver, der anvendes i de forskellige Linux-distributioner.

Debian/Ubuntu/Linux Mint

På Debian-baserede distributioner, standard vhost konfiguration for ukrypteret steder (port 80) kan findes på /etc/apache2/sites-available/000-default.conf. Standard vhost-konfigurationen for sitesebsteder krypteret med SSL/TLS (port 443) er på /etc/apache2/sites-available/default-ssl.conf.,

tabel over Standarddirektiver

* betinget miljøvariabel. Giver støtte til flere Apache server forekomster.

** miljøvariabel. Bruges til dynamisk at indstille den oprindelige logsti.

Red Hat/Fedora/CentOS

på Red Hat-baserede distributioner er hovedkonfigurationsfilen placeret på /etc/httpd/conf/httpd.conf. Du kan placere yderligere vhost-konfigurationsfiler i mappen/etc/httpd/conf.d, som automatisk læses af serveren ved start.

tabel over Standarddirektiver

* betinget af indlæst log_config_module.,

** betinget på indlæst logio_module.

OpenSUSE

I OpenSUSE, standard vhost config til ukrypteret steder (port 80) er placeret i /etc/apache2/default-vhost.conf, mens standard config til steder, der er krypteret med SSL/TLS er placeret i /etc/apache2/default-vhost-ssl.conf.

tabel over Standarddirektiver

* betinget af indlæst log_config_module.

** betinget på indlæst logio_module.

*** betinget af indlæst mod_ssl.,

Log-relaterede moduler

Apache-webebserveren tilbyder et antal moduler, der enten ændrer måden Apache fungerer på eller udvider dens kapacitet. Følgende moduler tilføjer eller ændrer logningsadfærd på nyttige måder.

mod_log_config

Dette er basisloggingsmodulet, som Apache bruger, og det, som vi dækkede i dette afsnit af guiden.

mod_log_debug

Dette modul giver yderligere muligheder for at logge fejlfindingsmeddelelser., Du kan f.eks. logge begivenheder på en bestemt URL-sti, logge anmodninger, når de er behandlet, logge beskeder fra en bestemt klient, hvis de resulterer i timeouts og meget mere. Bemærk, at dette modul er eksperimentelt og muligvis ikke er inkluderet i din Apache-distribution.

for eksempel logger følgende konfiguration IP-adressen på en klient, når den anmoder om en bestemt sti:

mod_log_forensic

Dette modul muliggør logning før og efter en anmodning behandles. Hver post er tildelt et unikt ID, som kan bruges til at spore begivenheder mellem retsmedicinsk log og normal log., Den retsmedicinske logger understøtter dog ikke brugerdefinerede formater. Dette modul erstatter også mod_uni .ue_id-modulet.

når modulet er aktiveret, kan du bruge nøgleordet forensic til at specificere, hvilken logfil der er den retsmedicinske log. Du kan også bruge%{forensic-id} mønster i andreLogFormat strings for at tilføje retsmedicinske data til normale logfiler. Her bruger vi /var/www/example.com/logs/forensic.log:

Hver linje i den retsmedicinske log starter med enten et “+” eller “-” karakter., “+”angiver indtastningsloglinjen for denne særlige anmodning, og” – ” angiver efterfølgende poster for den samme anmodning.

For eksempel, følgende indlæg-log, der blev genereret ved at ringe http://localhost bruger standard log format:

De, der sluttede i logfilen fra den samme anmodning vises som:

-3264:55958cb4:0

Hvis en afslutning indlæg ikke vises i loggen, at anmodningen ikke komplet.

mod_logio

Dette modul tilføjer muligheden for at logge antallet af bytes sendt og modtaget pr., Dette inkluderer bytes modtaget, sendt og overført (kombination af modtaget og sendt). Modulet tegner sig også nøjagtigt for ændringer i størrelse på grund af SSL-og TLS-kryptering. Dette modul kræver mod_log_config og er typisk inkluderet i Apache som standard.

Dette modul tilføjer LogIOTrackTTFB On|Off direktiv, som skifter evnen til at spore tiden til første byte (TTFB). TTFB er den tid, fra når en anmodning modtages, til når svaret først sendes til klienten., Du kan derefter bruge %^FB til at inkludere ttfb-målingen i en LogFormat streng.

mod_filter

Dette modul leverer kontekstfølsomme filtre til udgangskæden ved at registrere et hvilket som helst antal filterudbydere. mod_filter er ikke specifik for logning, men giver mulighed for at udtrække specifikke anmodninger baseret på filterudbyderen. Kontekstbeholdere inkluderer: main apache config, vhost config, inden for katalogmærker og.htaccess-filer.,

anvendelse af dette modul giver mulighed for filtrering af anmodninger, der indeholder elementer som visse injektionskriterier, og hvilken IP-adresse den er fra.

Dette modul leveres som standard i mange af pakkedistributionerne, men kan kræve aktivering. Med henblik på logning sender FilterTrace-direktivet oplysninger til fejlloggen.,li> FilterDeclare – erklærer en smart filter

  • FilterProtocol – får mod_filter til at håndtere svar overskrifter korrekt
  • FilterProvider – registre filter udbydere
  • FilterTrace – giver mulighed for fejlretning/diagnostisk information til en error log, før udbyder behandling
  • følgende eksempel gælder filtrering i en vhost forbindelse container betinget på filter og indeholder moduler:

    mod_unique_id:

    Dette modul konstruerer en miljø-variabel og en entydig identifikator for hver anmodning., Det er ofte inkluderet i pakkedistributioner, men kan kræve aktivering. Denne unikke identifikator er skrevet til adgangsloggen.

    Dette modul er blevet erstattet af mod_log_forensic til retsmedicinske formål, men understøttes stadig for andre.

    i modsætning til den retsmedicinske identifikator overføres den unikke identifikator til applikationshandleren via miljøvariablen UNI .ue_id. Dette giver applikationsudviklere mulighed for at spore en anmodning via applicationebserveren til applikationsserveren. Det kan være nyttigt for debugging en anmodning.,

    Apache spins off barn processer til at håndtere anmodninger, og et barn instans behandler flere anmodninger ad gangen. Som et resultat er det undertiden ønskeligt at bruge en unik identifikator til at identificere en enkelt anmodning på tværs af flere serverinstanser og børneprocesser.

    når det er aktiveret, giver modulet som standard en identifikator til applikationshandleren.,

    For eksempel:

    UNIQUE_ID: Vaf3en8AAQEAAAtoQlAAAAAA

    Den identifikator, som er konstrueret ud fra en 32-bit IP-adresse, 32-bit proces-ID, 32-bit tidsstempel, der er koblet til en 16-bit tæller for strammere opløsning end en enkelt anden, 32-bit tråd indeks. Tidsstempelkomponenten ER UTC for at forhindre problemer med justeringer af sommertid. Application handleren bør behandle identifikatoren som en uigennemsigtig token kun og ikke dissekeret i bestanddele.

    se det. Analyser det. Undersøg det. Løs det

    se hvad der betyder noget.

    START GRATIS Prøveversion

    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

    Videre til værktøjslinje