Dacă sunteți responsabil pentru menținerea serverelor web în funcțiune, știți deja că accesul ușor la mesajele jurnal este esențial atunci când depanați problemele. Apache oferă suport complet pentru logare, iar configurația sa extrem de personalizabilă vă permite să adaptați logarea la nevoile dvs. exacte. Puteți obține vizibilitate în serverele dvs. web înregistrând totul, de la cererea inițială până la procesul de mapare URL și terminarea conexiunii., Și dacă acest lucru nu a fost suficient, modulele terță parte oferă capabilități suplimentare de logare, cum ar fi suportul pentru runtime-urile aplicațiilor, inclusiv programele PHP, Java și CGI.
În acest articol, vă voi arăta cum să utilizați două diferite mecanismele de logare în Apache și cum de a găsi datele needfrom jurnalele dvs. atunci când investighează probleme.
Eroare Directivă
Erori de diagnostic și avertismentele de pe web serversusually spun utilizatorii nu pot accesa pagini și resursele de care au nevoie, și primul loc orice admin se va uita în Apache server error log., Deci, theErrorLog este cel mai important fișier jurnal Apache pentru depanare. Itconține informațiile de care aveți nevoie pentru a înțelege de ce apar erori șicare utilizatori sunt afectați.
locația jurnalului de erori este controlatăcu Directiva ErrorLog. În mod implicit, îl puteți găsi într-un fișier (eroare.log) dar este, de asemenea, posibil să trimiteți Jurnalul de erori la un daemon syslog sau să-l conectați la un program folosind Apachesupport pentru jurnalele pipe.,
ErrorLogFormat directiva vă permite să ambarcațiunile wayserver mesaje de eroare arata si datele pe care le conține, în plus față de logmessage emise de Apache cod intern. Apache trimite o serie de diferitemesaje la eroare.log, deci esteuneori dificil să le deosebești și să-l găsești pe cel pe care îl cauți. Bytaking avantajul ErrorLogFormatdirective, veți putea găsi mesajele de care aveți nevoie mai repede.,
desigur, nu trebuie să specificați ownformat, deoarece un format implicit este prevăzută de Apache, dar cu ajutorul ErrorLogFormat, puteți crea morerelevant de atac și jurnal de date.,
De exemplu, următoarele ErrorLogFormat directiva afișează un marcaj de timp, jurnalul mesaj de severitate, procesul ID-ul de server web, fișierul sursă și jurnal în cazul în care jurnalul a fost generat, și în cele din urmă mesajul în sine:
ErrorLogFormat " %F %M"
formatul produce mesaje de eroare care arată așa:
Thr Apache ErrorLogFormat directiva supportsover 20 de format diferit, siruri de caractere, care funcționează la fel ca C-stil printf() formatstrings., Acest lucru merge pentru a arăta cât de flexibil Apache capabilități de logare sunt—Apacheprovides posibilitatea de a personaliza unde erori de server de mesaje sunt trimise andallows-vă pentru a controla formatul lor, astfel încât să pot include toate informațiile de care ai nevoie.
CustomLog Directivă
de Fiecare dată când un utilizator vizitează site-ul dvs., Apachestores informații despre ce căi au accesat în acces.jurnal., Acest lucru vă oferă o modalitate utilă de a monitoriza astfel de lucruri, cele mai populare secțiuni ale site-ul dvs., vă permite să vedeți adresele de whichusers sunt conectați, și arată ce coduri de stare HTTP fost returnate de yourserver pentru fiecare cerere. Adresele de conectare și codurile de stare HTTP pot fiindicii valoroase atunci când mai târziu depanarea și investigarea problemelor.la fel ca Jurnalul de erori, puteți configuraformatul jurnalului de acces folosind șiruri de format cu Directiva LogFormat., Fiecare LogFormatoption necesită un identificator unic, astfel încât să puteți crea mai multe logformat pentru a stoca mesaje jurnal în moduri diferite.
de exemplu, aici este un exemplu de două formate de jurnal diferite, fiecare scris la fișiere separate. Primul format urmează formatul de jurnal comun (CLF este acceptat de multe aplicații, deci este adesea folosit ca format de logare pentru serverele web), iar al doilea format afișează doar refererul și solicitarea URL:
intrările pentru aceste formate arată astfel:
acces.log
127.0.0.1 - - "GET / HTTP/1.1" 200 11229
referer.,log
- -> /index.html
Prin combinarea o LogFormat directiva cu CustomLog,puteți direct de mesaje de la diferite fișiere.
nu numai că puteți scrie mesaje jurnal de acces la mai multe fișiere jurnal, puteți, de asemenea, să condiționați scrierea mesajelor jurnal de anumite atributedin cerere. SetEnvIfdirective vă permite să setați environmentvariables dacă o anumită condiție este adevărată. Apoi, puteți utiliza clauza env= în directivele CustomLog pentru a activa loggingonly dacă variabila de mediu este setată.
Iată un exemplu de înregistrare a tuturor solicitărilor de la localhost într-un fișier dedicat numit local.,log:
SetEnvIf Remote_Addr "127\.0\.0\.1" localaddrCustomLog ${APACHE_LOG_DIR}/local.log common env=localaddr
această regulă profită de variabila Apache Remote_Addr, care înregistreazăadresa IP a clientului care face solicitarea. Lista completă a Apachevariables este disponibilă în documentația Apache. Dacă utilizați SolarWinds ® Papertrail ™ căutare, puteți utiliza aceste variabile pentru a quicklytroubleshoot probleme.
analizarea erorilor și accesarea jurnalelor
după ce ați scris mesaje jurnal în fișierele jurnal, aveți nevoie de o modalitate de a le extrage. Desigur, le puteți trimite direct la Papertrail unde puteți urmări, căuta și analiza jurnalele live și stocate., Dacă nu le trimiteți la Papertrail, puteți utiliza instrumente de fișiere standard, cum ar fi cat, less și tail. Dacă utilizați comanda tail, imprimă ultimele 10 linii ale unui fișier în mod implicit, dar puteți controla exact câte linii sunt afișate cu parametrul-N. Pentru a citi ultimele 25 de rânduri de la access.log, trebuie să faceți:
tail -n25 access.log
caracteristica Papertrail live tail vă permite să vă tăiați jurnalele și să vedeți continuu evenimente noi pe măsură ce se întâmplă., Puteți întrerupe, căuta și derula istoricul jurnalului și chiar Faceți clic pe elemente pentru intrările de jurnal legate de jumpto, cum ar fi toate cele cu o anumită adresă IP.dacă serverul dvs. web primește mult trafic, este o provocare să căutați manual prin jurnalele dvs. din cauza dimensiunii lor. În schimb, trebuie să apelați la sintaxa de căutare a soluției Papertrail, care vă permite să creați expresii puternice care să corespundă șirurilor pe care încercați să le găsiți., Iată un exemplu de șir de căutare pentru a găsi toate mesajele care conțin 404 coduri de stare HTTP:
HTTP 404
Dacă lucrați cu fișiere jurnal de multiplesources cum ar fi PHP, Apache, sau JSON, ar putea fi util să se uite la un logmanagement instrument ca Papertrail.
concluzie
gestionarea eficientă a serverelor web înseamnă că trebuie să puteți înțelege comportamentul și performanța acestora. Atunci când utilizatorii startreporting pagini care nu se încarcă sau conexiuni de sincronizare, aveți nevoie de o modalitate de a privisub capota serverelor web pentru a vedea ce se întâmplă., Logmessages acționabile sunt cheia pentru a menține site-ul în sus și să fie difuzate.
Apache oferă o grămadă de opțiuni pentru stocareamesaje blog la fișiere. Cu Directivele Errorlogand CustomLog, puteți personaliza unde sunt scrise mesajele și formatul acestora. Divizarea logmessages în mai multe fișiere este posibil, cu mai mult de o directivă, și withApache suport pentru variabile de mediu, puteți profita de conditionalstatements de a alege exact atunci când mesajele de jurnal ar trebui să fie scris.