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:
-
%>s
– codul de stare HTTP pentru solicitare. Aceasta arată starea cererii finale după orice redirecționare internă; pentru starea inițială, utilizați %S. -
%U
– calea URL solicitată, excluzând orice parametri URL suplimentari, cum ar fi un șir de interogare. -
%a
– adresa IP a clientului care face solicitarea., Acest lucru este util pentru identificarea traficului dintr-o anumită sursă. -
%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. -
%{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 %^FB
pentru 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 corectFilterProvider
– registrele filtru de furnizoriFilterTrace
– permite pentru depanare/informații de diagnostic pentru un jurnal de eroare înainte de furnizorul de procesareurmă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ă