Apache Logging Basics (Română)

Jurnalul Apache înregistrează evenimentele care au fost gestionate de serverul web Apache, inclusiv cererile de la alte computere, răspunsurile trimise de Apache, și acțiuni interne la serverul Apache. Această secțiune a ghidului explică elementele de bază ale logării Apache, inclusiv tipurile de jurnale generate de Apache, unde sunt stocate și cum să le interpreteze. De asemenea, vom acoperi subiecte avansate, cum ar fi setarea formatelor de jurnal personalizate și configurarea modulelor pentru a obține date mai bogate.,

tipuri de jurnale Apache

Apache generează două tipuri de jurnale: jurnalele de acces și jurnalele de eroare.

jurnal de acces

Jurnalul de acces conține informații despre cererile care vin la serverul web. Aceste informații pot include paginile pe care le vizionează utilizatorii, starea de succes a cererilor și cât timp a durat serverul pentru a răspunde. Iată un exemplu de intrare tipică a jurnalului de acces:

jurnal de erori

Jurnalul de erori conține informații despre erorile întâlnite de serverul web la procesarea cererilor, cum ar fi fișierele lipsă., De asemenea, include informații de diagnosticare despre serverul în sine. Iată un exemplu de jurnal de erori:

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

locații jurnal

în mod implicit, Apache stochează accesul și jurnalele de eroare în fișiere separate de pe server. Locația exactă depinde de sistemul dvs. de operare., Puteți găsi locația pentru sistemul dvs. de operare făcând clic pe următoarele linkuri:

Debian/Ubuntu/Linux Mint
configurare Redhat/Fedora/CentOS
OpenSUSE

Configurarea jurnalelor Apache

Apache are un cadru de logare foarte configurabil care vă permite să ajustați comportamentul de logare la nivel global sau pentru fiecare gazdă virtuală. Există mai multe directive pe care le puteți utiliza pentru a schimba comportamentul de logare. Unele dintre directivele mai comune sunt directivele privind nivelul jurnalului și formatul jurnalului, pe care le vom explica mai detaliat.,

Directiva nivel jurnal

directiva LogLevel determină nivelul minim de severitate al evenimentelor care sunt înregistrate la o anumită destinație. Nivelul de severitate reprezintă cât de important este evenimentul și poate varia de la „Urgență” pentru „Trace8”, cu „Urgență” reprezintă evenimente care pot duce la instabilitate, și „Trace8” reprezentând la nivel de urme de mesaje. De exemplu, LogLevel crit va permite jurnalele cu severitatea „Crit”, „Alert” și „Emerg”, dar va ignora toate celelalte niveluri.,

format jurnal

DirectivaLogFormat controlează aspectul și formatarea evenimentelor din jurnal. Apache utilizează în mod implicit formatul de jurnal comun (CLF), dar puteți specifica propriul șir de format pentru a schimba câmpurile incluse în fiecare jurnal.

de asemenea, puteți utiliza directiva CustomLog pentru a schimba locația fișierului jurnal. În Linux, Apache scrie în mod obișnuit jurnalele în directoarele/var/log /apache2 sau/var/log / httpd în funcție de sistemul de operare și de suprascrierile gazdelor virtuale., De asemenea, puteți defini un șir LogFormat după numele fișierului, care va aplica doar șirul de format acestui fișier.

de exemplu, următoarea configurație scrie jurnalele în logs/access_log folosind formatul standard „comun”. Busteni/ subdirector este relativă la directorul specificat în ServerRoot directivă:

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

CustomLog „busteni/access_log” comun

puteți găsi o listă completă de domenii în Apache log documentare., Vă recomandăm să utilizați cel puțin următoarele cinci câmpuri, deoarece acestea sunt importante pentru monitorizarea sănătății serverului și pentru rezolvarea problemelor:

  1. %>s – codul de stare HTTP pentru solicitare. Aceasta arată starea cererii finale după orice redirecționare internă; pentru starea inițială, utilizați %S.
  2. %U – calea URL solicitată, excluzând orice parametri URL suplimentari, cum ar fi un șir de interogare.
  3. %a – adresa IP a clientului care face solicitarea., Acest lucru este util pentru identificarea traficului dintr-o anumită sursă.
  4. %T – cât timp a durat procesarea cererii în câteva secunde. Acest lucru este util pentru măsurarea vitezei site-ului dvs. Utilizați %D pentru a face aceeași măsurare în microsecunde.
  5. %{UNIQUE_ID}e – cunoscut și sub denumirea de request ID, acesta înregistrează un identificator unic pentru fiecare cerere. Acest lucru este util pentru urmărirea unei solicitări de la Apache la serverul dvs. de aplicații web.,

Atribuirea de Porecle

LogFormat siruri de caractere pot fi atribuite porecle, pe care le puteți folosi apoi cu un CustomLog directiva a scrie jurnale, folosind formatul specificat. Acest lucru vă permite să utilizați același format de jurnal pentru mai multe fișiere jurnal fără a fi nevoie să redefiniți formatul de fiecare dată. Acest lucru este util în special atunci când se utilizează fișiere jurnal diferite pentru mai multe gazde virtuale.

de exemplu, să creăm un format de exemplu și să-l numim „vhost_combined.,”Vom crea apoi o directivă CustomLog care scrie jurnalele într-un fișier folosind formatul vhost_combined.

LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combinedCustomLog /var/log/apache2/vhost.log vhost_combined

formatarea ca JSON

stocarea jurnalelor ca text simplu le face ușor de scanat în cazul în care aveți nevoie vreodată să citiți fișierele jurnal. Cu toate acestea, acest lucru face dificilă utilizarea instrumentelor, cum ar fi soluțiile de gestionare a jurnalelor, pentru a citi jurnalele dvs., deoarece aceste instrumente trebuie să știe cum sunt formatate jurnalele dvs. Majoritatea soluțiilor de gestionare a jurnalelor acceptă formatul implicit de jurnal Apache, dar dacă nu, ar trebui să luați în considerare utilizarea unui format structurat precum JSON.,JSON (prescurtarea de la JavaScript Object Notation) este un format flexibil pentru stocarea datelor structurate. JSON stochează o colecție de perechi name/value nestable, permițându-vă să stocați aproape orice tip de date și structură. JSON este, de asemenea, în mod eficient de auto-documentare, deoarece numele cheii descrie datele pe care le conține. JSON suporta mai multe tipuri de date de bază, inclusiv siruri de caractere, numere, booleene, matrice, și valori nule.,

Aici este un exemplu de un LogFormat care stochează busteni în format JSON:

LogFormat "{ \"time\":\"%t\", \"remoteIP\":\"%a\", \"host\":\"%V\", \"request\":\"%U\", \"query\":\"%q\", \"method\":\"%m\", \"status\":\"%>s\", \"userAgent\":\"%{User-agent}i\", \"referer\":\"%{Referer}i\" }"

Default Gazdă Virtuală Înlocuiește

Gazde Virtuale (naționala) sunt folosite pentru a rula mai mult de un site pe un singur server Apache. Puteți defini o configurație separată de logare pentru fiecare vhost, care are prioritate față de configurația globală de logare. Acest lucru vă permite să conectați fiecare site web într-un director separat, de exemplu. Lăsând acești parametri în setările implicite la configurația globală de logare.

de exemplu, următoarea configurație este pentru un exemplu vhost at.,com. Jurnalele sunt scrise pentru a separa access.log și error.log fișiere în /var/www/example.com/logs director:

următoarele secțiuni arăta fișierul de configurare implicit locații și a directivelor utilizate în diferite distribuții Linux.

Debian / Ubuntu / Linux Mint

pe distribuțiile bazate pe Debian, configurația implicită vhost pentru site-urile necriptate (portul 80) poate fi găsită la /etc/apache2/sites-available/000-default.conf. Configurarea implicită vhost pentru site-urile criptate cu SSL/TLS (portul 443) este la /etc/apache2/sites-available/default-ssl.conf.,

tabelul Directivelor implicite

* variabilă de mediu condiționată. Oferă suport pentru mai multe instanțe de server Apache.

** variabilă de mediu. Folosit pentru a seta dinamic calea inițială jurnal.

Red Hat / Fedora / CentOS

pe distribuțiile bazate pe Red Hat, fișierul principal de configurare este localizat la /etc/httpd/conf/httpd.conf. Puteți plasa fișiere de configurare vhost suplimentare în directorul /etc/httpd/conf.d, care este citit automat de server la pornire.

tabelul Directivelor implicite

* condiționat pe log_config_module încărcat.,

** condiționat pe logio_module încărcate.

OpenSUSE

În OpenSUSE, implicit vhost config pentru site-uri necriptate (portul 80) este situat la /etc/apache2/default-vhost.conf, în timp ce implicit de configurare pentru site-uri criptate cu SSL/TLS este situat la /etc/apache2/default-vhost-ssl.conf.

tabelul Directivelor implicite

* condiționat pe log_config_module încărcat.

** condiționat pe logio_module încărcate.

*** condiționat pe mod_ssl încărcat.,

module legate de jurnal

serverul web Apache oferă un număr de module care fie schimbă modul în care funcționează Apache, fie își extind capacitatea. Următoarele Module Adaugă sau modifică comportamentul de logare în moduri utile.

mod_log_config

acesta este modulul de logare de bază pe care îl folosește Apache și cel pe care l-am acoperit în această secțiune a ghidului.

mod_log_debug

Acest modul oferă opțiuni suplimentare pentru înregistrarea mesajelor de depanare., De exemplu, puteți conecta evenimente la o anumită cale URL, cereri de jurnal după ce sunt procesate, mesaje de jurnal de la un anumit client dacă acestea duc la timeout-uri și multe altele. Rețineți că acest modul este experimental și nu poate fi inclus în distribuția Apache.de exemplu, următoarea configurație înregistrează adresa IP a unui client ori de câte ori solicită o anumită cale:

mod_log_forensic

Acest modul permite înregistrarea înainte și după procesarea unei solicitări. Fiecărei intrări i se atribuie un ID unic, care poate fi utilizat pentru a urmări evenimentele dintre Jurnalul medico-legal și jurnalul normal., Cu toate acestea, loggerul medico-legal nu acceptă formate personalizate. Acest modul înlocuiește, de asemenea, modulul mod_unique_id.

odată ce modulul este activat, puteți utiliza cuvântul cheie forensic pentru a specifica ce fișier jurnal este jurnalul medico-legal. Puteți utiliza, de asemenea, %{forensic-id} model în alte LogFormat șiruri pentru a adăuga date medico-legale la jurnalele normale. Aici, folosim /var/www/example.com/logs/forensic.log:

fiecare linie din jurnalul medico-legal începe cu un caracter ” + „sau” -„., „+”indică linia de jurnal de intrare pentru această solicitare specială, iar „-” indică intrările ulterioare pentru aceeași solicitare.

De exemplu, următoarea intrare de jurnal a fost generată de asteptare http://localhost utilizarea default log format:

se încheie intrare de jurnal de la aceeași cerere apare ca:

-3264:55958cb4:0

Dacă un final intrare nu apare în jurnal, cererea nu s-a finalizat.

mod_logio

Acest modul adaugă posibilitatea de a înregistra numărul de octeți trimise și primite la cerere., Aceasta include octeți primite, trimise, și transferate (combinație de primite și trimise). Modulul reprezintă, de asemenea, cu exactitate modificările de dimensiune datorate criptării SSL și TLS. Acest modul necesită mod_log_config și este de obicei inclus în mod implicit în Apache.acest modul adaugă directiva LogIOTrackTTFB On|Off, care comută capacitatea de a urmări timpul până la primul octet (TTFB). TTFB este perioada de timp de la primirea unei cereri până la trimiterea pentru prima dată a răspunsului către client., Puteți utiliza apoi %^FBpentru a include măsurarea TTFB într-un șir LogFormat.

mod_filter

Acest modul oferă filtre sensibile la context pentru lanțul de ieșire prin înregistrarea oricărui număr de furnizori de filtre. mod_filter nu este specific pentru logare, dar permite extragerea cererilor specifice bazate pe furnizorul de filtru. Containerele context includ: principal apache config, vhost config, în tag-uri director, și .fișiere htaccess.,utilizarea acestui modul permite filtrarea cererilor care conțin elemente, cum ar fi anumite criterii de injectare, și care adresa IP este de la.

Acest modul este furnizat în mod implicit în multe dintre distribuțiile de pachete, dar poate necesita activarea. În scopul înregistrării, Directiva FilterTrace publică informații în Jurnalul de erori.,li> FilterDeclare – declară un filtru inteligent

  • FilterProtocol – determină mod_filter să se ocupe anteturile de răspuns corect
  • FilterProvider – registrele filtru de furnizori
  • FilterTrace – permite pentru depanare/informații de diagnostic pentru un jurnal de eroare înainte de furnizorul de procesare
  • următorul exemplu aplică filtrarea într-un vhost context recipient condiționat pe filtru și include module:

    mod_unique_id:

    Acest modul construiește o variabilă de mediu și un identificator unic pentru fiecare cerere., Este adesea inclus în distribuțiile de pachete, dar poate necesita activarea. Acest identificator unic este scris în Jurnalul de acces.

    Acest modul a fost înlocuit de mod_log_forensic în scopuri medico-legale, dar este încă acceptat pentru alții.spre deosebire de identificatorul criminalistic, identificatorul unic este transmis către handler-ul aplicației prin variabila de mediu UNIQUE_ID. Acest lucru permite dezvoltatorilor de aplicații să urmărească o solicitare prin serverul web către serverul de aplicații. Poate fi util pentru depanarea unei solicitări.,Apache dezactivează procesele copil pentru a gestiona cererile, iar o instanță copil procesează mai multe solicitări simultan. Drept urmare, uneori este de dorit să se utilizeze un identificator unic pentru a identifica o singură solicitare în mai multe instanțe de server și procese copil.

    odată activat, modulul furnizează în mod implicit un identificator pentru handler-ul aplicației.,

    De exemplu:

    UNIQUE_ID: Vaf3en8AAQEAAAtoQlAAAAAA

    identificatorul este construit dintr-un 32-bit adresa IP, 32-bit process ID, 32-bit timestamp cuplat la un 16-bit contor pentru mai stricte rezoluție decât o singură secundă, 32-bit fir index. Componenta timestamp este UTC pentru a preveni problemele legate de ajustările orei de vară. Operatorul de aplicare ar trebui să trateze identificatorul doar ca un simbol opac și să nu fie disecat în constituenți.

    A se vedea. Analizează-l. Inspectează-l. Rezolva-l

    vezi ce contează.

    începeți încercarea gratuită

    Lasă un răspuns

    Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

    Sari la bara de unelte