Se sei responsabile del mantenimento dei server Web in esecuzione, sai già che un facile accesso ai messaggi di log è fondamentale per risolvere i problemi. Apache fornisce un supporto completo per la registrazione e la sua configurazione altamente personalizzabile consente di personalizzare la registrazione in base alle proprie esigenze. È possibile ottenere visibilità sui server Web registrando tutto, dalla richiesta iniziale fino al processo di mappatura degli URL e alla terminazione della connessione., E se ciò non bastasse, i moduli di terze parti forniscono funzionalità di registrazione aggiuntive come il supporto per i runtime delle applicazioni, inclusi i programmi PHP, Java e CGI.
In questo articolo, ti mostrerò come utilizzare i due diversi meccanismi di registrazione in Apache e come trovare i dati di cui hai bisogno dai tuoi log quando indaghi sui problemi.
La direttiva ErrorLog
Errori e avvisi diagnostici sui server Web di solito significano che gli utenti non possono accedere alle pagine e alle risorse di cui hanno bisogno, e il primo posto che qualsiasi amministratore guarderà è nel registro degli errori del server Apache., Quindi, theErrorLog è il singolo file di registro Apache più importante per la risoluzione dei problemi. Itcontains le informazioni che Lei avrà bisogno di capire perché gli errori stanno verificando andwhich gli utenti sono intaccati.
La posizione del registro degli errori è controllatacon la direttiva ErrorLog. Per impostazione predefinita, puoi trovarlo in un file (errore.log) ma è anche possibile inviare il log degli errori a un demone syslog o indirizzarlo a un programma utilizzando Apachesupport per i log piped.,
La direttiva ErrorLogFormat consente di creare l’aspetto dei messaggi di errore wayserver e i dati che contengono oltre al logmessage emesso dal codice interno di Apache. Apache invia un intervallo di differentmessages all’errore.log, quindi è a volte difficile distinguerli e trovare quello che stai cercando. Sfruttando ErrorLogFormatdirective, sarai in grado di trovare i messaggi di cui hai bisogno più velocemente.,
Ovviamente, non è necessario specificare il proprio formato, poiché un formato predefinito è fornito da Apache, ma utilizzando ErrorLogFormat, è possibile creare dati di registro più pertinenti e fruibili.,
Ad esempio, la seguente direttiva ErrorLogFormat visualizza un timestamp, la gravità del messaggio di log, l’ID del processo del server Web, il file di origine e il log in cui è stato generato il log e infine il messaggio stesso:
ErrorLogFormat " %F %M"
Il formato produce messaggi di errore simili a questo:
Thr Apache ErrorLogFormat directive supportsover 20 stile printf() formatstrings., Questo va a mostrare come sono flessibili le capacità di registrazione Apache-Apacheprovides la possibilità di personalizzare dove vengono inviati messaggi di errori del server andallows di controllare il loro formato, in modo da poter includere tutte le informazioni youneed.
La direttiva CustomLog
Ogni volta che un utente visita il tuo sito, Apachestores informazioni su quali percorsi hanno avuto accesso in access.log., Questo ti dà un modo utile per monitorare cose come le sezioni più popolari del tuo sito, ti permette di vedere gli indirizzi da cui gli utenti si connettono e mostra quali codici di stato HTTP sono stati restituiti dal tuo server per ogni richiesta. Gli indirizzi di connessione e i codici di stato HTTP possono essereaccessori preziosi quando in seguito risolvono e indagano i problemi.
Proprio come il log degli errori, è possibile configurare il formato del log di accesso utilizzando stringhe di formato con la direttiva LogFormat., Ogni LogFormatoption richiede un identificatore univoco, in modo da poter creare più di un logformat per memorizzare i messaggi di log in modi diversi.
Ad esempio, ecco un esempio di due diversi formati di log ciascuno scritto su file separati. Il primo formato segue il formato di registro comune (CLF è supportato da molte applicazioni, quindi è spesso usato come formato di registrazione per i server Web), e il secondo formato visualizza solo il referer e la richiesta URL:
Le voci per questi formati sono simili a questa:
access.log
127.0.0.1 - - "GET / HTTP/1.1" 200 11229
referente.,log
- -> /index.html
Combinando una direttiva LogFormat con CustomLog,è possibile indirizzare i messaggi di log a file diversi.
Non solo puoi scrivere messaggi di log di accesso a più file di log, puoi anche condizionare la scrittura dei messaggi di log su alcuni attributi della richiesta. SetEnvIfdirective consente di impostare environmentvariables se alcune condizioni sono vere. Quindi è possibile utilizzare la clausola env= nelle direttive CustomLog per abilitare loggingonly se tale variabile di ambiente è impostata.
Ecco un esempio di registrazione di tutte le richieste da localhost a un file dedicato denominato local.,log:
SetEnvIf Remote_Addr "127\.0\.0\.1" localaddrCustomLog ${APACHE_LOG_DIR}/local.log common env=localaddr
Questa regola sfrutta la variabile Apache Remote_Addr, che registra l’indirizzo IP del client che effettua la richiesta. L’elenco completo di Apachevariables è disponibile nella documentazione di Apache. Se si utilizza la ricerca SolarWinds ® Papertrail™, è possibile utilizzare tali variabili per risolvere rapidamente i problemi.
Analisi dei log di errore e accesso
Una volta scritti i messaggi di log nei file di log, è necessario un modo per estrarli. Naturalmente, è possibile inviare direttamente a Papertrail dove è possibile coda, ricerca, e analizzare i registri in tempo reale e memorizzati., Se non li stai inviando a Papertrail, puoi utilizzare strumenti di file standard come cat, less e tail. Se si utilizza il comando tail, stampa le ultime 10 righe di un file per impostazione predefinita,ma è possibile controllare esattamente quante righe vengono visualizzate con il parametro-N. Per leggere le ultime 25 righe da access.log, devi fare:
tail -n25 access.log
La funzione Papertrail live tail ti consente di tailyour logs e vedere continuamente nuovi eventi mentre accadono., Puoi mettere in pausa,cercare e scorrere la cronologia dei log e persino fare clic sugli elementi per saltare alle voci di log correlate, come tutte quelle con un indirizzo IP specifico.
Se il tuo server web riceve molto traffico, è una sfida cercare manualmente i tuoi log a causa delle loro dimensioni. Invece, è necessario passare alla sintassi di ricerca della soluzione Papertrail, che consente di creare espressioni potenti che corrispondono alle stringhe che si sta cercando di trovare., Ecco una stringa di ricerca di esempio per trovare tutti i messaggi contenenti 404 codici di stato HTTP:
HTTP 404
Se stai lavorando con file di log da più fonti come PHP, Apache o JSON, potrebbe essere utile guardare uno strumento di gestione del log come Papertrail.
Conclusione
Gestire efficacemente i server web significa essere in grado di comprenderne il comportamento e le prestazioni. Quando gli utenti startreporting pagine non caricamento o connessioni timing out, è necessario un modo per lookunder il cofano dei server web per vedere cosa sta succedendo., I messaggi di log utilizzabili sono la chiave per mantenere attivo e funzionante il tuo sito.
Apache fornisce un mucchio di opzioni per i messaggi storinglog ai file. Con le direttive ERRORLOG e CustomLog, puoi personalizzare dove vengono scritti i messaggi e il loro formato. La suddivisione dei messaggi di log in più file è possibile con più di una direttiva e, con il supporto di Apache per le variabili di ambiente, è possibile sfruttare le dichiarazioni condizionali per scegliere esattamente quando scrivere i messaggi di log.