Inserisci Infobox

Monitoring di Apache

Server-status, server-info, uso di netstat, top, vmstat, ldd, lsof, strace. Environment variables.

Monitoraggio di Apache
Autore: al - Ultimo Aggiornamento: 2005-06-09 13:26:36 - Data di creazione: 2005-06-09 13:09:05
Tipo Infobox: SLIDE - Skill: 3- INTERMEDIATE

E' possibile monitorare il funzionamento di Apache con diversi strumenti.

Log di Apache
Sono il primo posto dove indagare in caso di problemi. Generalmente vengono scritti in una directory tipo /var/log/httpd, comunque nel file di configurazione la loro posizione è definita con le direttive AccessLog e ErrorLog.
Con la direttiva LogLevel è possibile modificare il livello di logging.

Opzioni di invocazione
httpd -V Mostra i parametri usati in fase di configurazione
httpd -l Mostra i moduli compilati direttamente nel file httpd.
httpd -L Mostra le direttive che possono essere usate con i moduli direttamente compilati.
httpd -t Esegue un test sulla configurazione di Apache.

Server-status e Server-info
Sono container speciali che permettono di visualizzare direttamente via web informazioni:
http://www.sito.com/server-status/ - Mostra lo stato del server.
http://www.sito.com/server-info/ - Mostra informazioni sulla configurazione usata e i moduli presenti.

Comandi di Sistema
ps -adef | grep httpd - Elenco dei processi Apache in esecuzione
netstat -natup - Elenco delle connessioni di rete in ascolto e attive.
ldd /usr/sbin/httpd - Mostra le librerie condivise usate dal binario indicato.
strace -p PID - Traccia le system call del processo indicato.
lsof | grep httpd -  Visualizza tutti i file aperti dal processo httpd

Strumenti di monitoraggio di Apache
Autore: al - Ultimo Aggiornamento: 2002-11-05 10:56:44 - Data di creazione: 2002-11-05 10:56:44
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

Sono disponibili vari strumenti per monitorare e capire il funzionamento di Apache, il suo stato e quello che sta facendo.

Comandi Unix di Sistema
Vari comandi comuni sono utili per verificare cosa sta facendo Apache (come qualsiasi altra applicazione):
ps -adef | grep httpd Visualizza se fra i processi in esecuzione c'è Apache (dovrebbero vedersi varie righe con httpd, una per ogni child in esecuzione, oltre al httpd padre di tutti i processi (l'unico eseguito come root).
netstat -natp Visualizza tutte le connessioni Internet esistenti sul sistema, tra cui quelli in LISTENING sul sistema. Per ogni connessione si mostra anche il processo che la gestisce.
ldd /usr/sbin/httpd o ldd /usr/local/apache/bin/httpd (o ldd /path/httpd) Visualizza tutte le librerie dinamiche utilizzate da Apache. Utile per capirne le dependencies.
strace -p PID (Dove il PID è quello di un child di Apache) Traccia le system call di un singolo processo.
strace apachectl start Traccia le system call del processo che avvia Apache, utile per diagnosticare eventuali problemi all'avvio di Apache (verificare prima i log).
lsof | grep httpd Visualizza tutti i file aperti da Apache. Utile per verificare, tra la'ltro, dove sono i log e quali moduli sono utilizzati.

Log di Apache
I log di Apache sono il primo posto dove cercare la soluzione di problemi (oltre che, ovviamente, analizzare il traffico Web sul sito). Di default sono in /usr/local/apache/logs ma se si è installato Apache tramite un RPM li si potranno trovare in /var/log/httpd o comunque dove specificato nel file di configurazione principale (verificare la direttiva ErrorLog e definire la verbosità dei log con LogLevel (per diagnostica mettere LogLevel debug per il massimo della verbosità, in condizioni normali lasciare LogLevel warn).

Server-status e Server-info
Apache fornisce due moduli che permettono all'amministratore di visualizzare informazioni utili in tempo reale.
Server-status mostra info sulle connessioni esistenti, l'uptime del server, il traffico generato, la CPU impegnata, la versione di Apache. E' possibile avere lo status sia in modalità normale che in modalità estesa, dove per ogni connessione si vedono maggiori informazioni. Di default, se abilitato, si trova su http://www.sito.com/server-status/
Server-info fornisce dettagliate informazioni sulla configurazione di Apache e sulle direttive relative ad ogni singolo modulo. Di default, se abilitato, si trova su http://www.sito.com/server-info/

Opzioni di invocazione
Anche le opzioni che possono essere passate ad Apache, eseguendo httpd danno informazioni utili:
httpd -V Mostra il numero di versione, e i parametri usati in fase di configurazione
httpd -l Mostra i moduli compilati direttamente nel file httpd.
httpd -L Mostra tutte le direttive che possono essere usate con i moduli direttamente compilati (vengono escluse tutte quelle che sono fornite dai moduli caricabili dinamicamente).
httpd -t Esegue un test sulla configurazione di Apache e segnala eventuali errori di sintassi.

Variabili d'ambiente
Apache setta ed utilizza una serie di variabili d'ambiente che possono essere utilizzate da script CGI, PHP, Perl o trattate in sede di configurazione per gestire il comportamento del server sulla base dell'ambiente generale e delle singole connessioni. Per visualizzarle esistono vari metodi indiretti, per esempio uno è quello di utilizzare PHP all'interno di pagine HTML: <?php echo $REMOTE_ADDR ?>  visualizza l'IP del client remoto.

Server-status
Autore: al - Ultimo Aggiornamento: 2002-11-07 17:44:23 - Data di creazione: 2002-11-07 17:44:23
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

Apache fornisce la possibilità di monitorare in tempo reale, direttamente via web, il suo stato, l'uptime, il tempo di CPU occupato, le connessioni che sta gestendo, i processi child in esecuzione e altre informazioni utili.

Questa funzionalità è fornita dal modulo mod_status che prevede delle specifiche direttive utilizzabili con una configurazione simile:
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from .dominio.it
</Location>

Con questo esempio viene definita una Location accessibile all'url: http://www.dominio.it/server-status/ in cui vengono visualizzate informazioni varie sullo stato del server Web. In questo caso l'accesso è consentito solo da host nel dominio.it. Lasciando solo la riga SetHandler server-status si lascia accessibile a tutto il mondo la location server-status (opzione generalmente non consigliabile, in quando vengono visualizzate informazioni utili anche a potenziali intrusori).
Se si specifica, nella configurazione la direttiva ExtendedStatus On le informazioni fornite sono molto più dettagliate (per ogni connessione vengono indicati IP e porta del client, PID del child che la gestisce e altre info).
Su server in produzione ad alto traffico è consigliabile NON usare l'ExtendedStatus che appesantisce e rallenta il sistema.
E' possibile aggiornare automaticamente la visualizzazione dello status di un server digitando sul browser un ULR tipo:
http://openskills.info/server-status?refresh=3 (la pagina viene aggiornata ogni 3 secondi).
E' anche possibile visualizzare lo status da shell Unix, con: apachectl status (si deve aver installato il browser testuale Lynx sul server o, se si ha solo Links avere un link simbolico di /usr/bin/lynx che punta a /usr/bin/links).

Server-info
Autore: al - Ultimo Aggiornamento: 2002-11-05 17:30:51 - Data di creazione: 2002-11-05 17:30:51
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

Apache può fornire molte informazioni sui moduli utilizzati e le direttive supportate.

Tramite il modulo mod_info è possibile abilitare la funzionalità server-info e visualizzarne le informazioni del caso in un URL tipo http://www.dominio.it/server-info con queste righe nella configurazione generale:
<Location /server-info>
SetHandler server-info
</Location>

All'URL indicato si possono visualizzare molte informazioni utili sulla configurazione di Apache al momento in cui è stato eseguito. In particolare è interessante la possibilità di vedere quali direttive sono utilizzate nella configurazione e quali sono i moduli che le forniscono.
Anche in questo caso le informazioni visibili sono piuttosto sensibili dal punto di vista della sicurezza, per cui è fortemente consigliato limitare l'accesso all'URL server-info da IP trusted.
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 192.168.5.1 192.168.5.2
</Location>

Privacy Policy