Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gestire i log e generare report su IIS6

Una panoramica sui tipi di file di log e sulle informazioni raccolte su server HTTP e FTP
Una panoramica sui tipi di file di log e sulle informazioni raccolte su server HTTP e FTP
Link copiato negli appunti

Sia per i siti Web sia per siti FTP ospitati su server IIS è possibile abilitare la registrazione (in inglese "Logging") delle informazioni relative alle richieste effettuate dai client. In questo articolo, esaminiamo sinteticamente le finalità della registrazione, i formati disponibili all'interno del server IIS e le principali opzioni di configurazione, per concludere infine con alcuni esempi di analisi statistica effettuata sui dati registrati.

Finalità della registrazione

Anche se possono risultare intuitive, è utile riassumere le motivazioni principali e le finalità del Logging:

  1. monitorare le prestazioni del Web server, allo scopo di conoscere la frequenza delle richieste HTTP ed i tempi di risposta, controllare il carico di lavoro del server, identificare eventuali colli di bottiglia e pianificare misure di protezione per il sito
  2. disporre di informazioni dettagliate sulle richieste HTTP che consentano di indagare sulla causa di eventuali malfunzionamenti del sito Web
  3. costruire una base dati relativa all'attività dei visitatori del sito, con l'obiettivo di effettuare analisi statistiche e comportamentali

I formati disponibili a confronto

IIS6.0 dispone di cinque differenti formati di registrazione, elencati nella tabella seguente insieme alle principali caratteristiche distintive:

Formato di file registro W3C esteso Formato di file registro comune NCSA Formato di file registro IIS Registrazione ODBC Registrazione binaria centralizzata
Tipo di supporto File di testo File di testo File di testo Sorgente dati ODBC File binario
Carattere separatore Spazio Spazio Virgola
Orario ("Time zone") UTC Locale Locale Locale Locale
Misura del tempo totale di risposta No
Informazioni registrate A scelta Fisse Fisse Fisse Fisse
Prefisso del nome del file ex (oppure extend) nc (oppure ncsa) in (oppure inetsv) raw

Tipo di supporto

I primi 3 tipi di formato prevedono la registrazione su file di testo. Per i siti Web è possibile selezionare la codifica UTF-8 invece della tabella codici locale (configurazione a livello di server), mentre per i siti FTP non è disponibile la codifica UTF-8.

Per impostazione predefinita i files sono memorizzati nella directory:

%systemroot%System32LogFiles

La Registrazione ODBC consente di memorizzare le informazioni di Logging all'interno di una fonte dati ODBC.

Orario ("Time zone")

Il Formato di file registro W3C esteso utilizza l'orario UTC (Coordinated Universal Time), mentre tutti gli altri utilizzano l'orario locale (quello impostato sul server IIS). Poichè UTC coincide sostanzialmente con GMT (Greenwich Mean Time), osservando un registro in formato W3C esteso, si nota che l'orario delle registrazioni risulta essere un'ora indietro rispetto all'orario italiano (due ore indietro quando è in vigore l'ora legale).

Misura del tempo totale di risposta

Tutti i formati, ad esclusione della "Registrazione ODBC", riportano l'informazione del tempo di elaborazione della richiesta e della risposta al netto del trasferimento in rete: viene misurato l'intervallo di tempo (in millisecondi) che intercorre tra l'istante in cui arriva il primo byte della richiesta e l'istante in cui termina l'invio della risposta.

Informazioni registrate

A differenza degli altri formati, il "Formato di file registro W3C esteso" consente di selezionare da un elenco le informazioni da registrare, omettendo quelle indesiderate, in modo da contenere la dimensione del registro.

Prefisso del nome del file

Il nome del file di log è costituito da un prefisso seguito da un numero progressivo (quando il criterio di rotazione è basato sulla dimensione massima) oppure da un identificativo di data e/o ora (quando il criterio di rotazione si basa su un intervallo temporale).

Formato di file registro W3C esteso

È l'unico formato personalizzabile, che consente cioè di selezionare quali proprietà si desidera registrare

Figura 1. Personalizzare il registro W3C esteso
Personalizzare il registro W3C esteso

L'esempio seguente mostra la registrazione della richiesta HTTP relativa alla pagina index.html secondo il formato W3C esteso (con la configurazione predefinita):

#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2008-07-10 20:35:05
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) 
sc-status sc-substatus sc-win32-status 2008-07-10 20:35:05 127.0.0.1 GET /index.html - 80 - 127.0.0.1
Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+.NET+CLR+1.1.4322) 200 0 0

#Date indica data e ora di creazione del file di registro (che coincide con data e ora della prima richiesta registrata) e #Fields riporta i nomi delle proprietà registrate per ogni richiesta (sono le intestazioni di colonna). L'elenco completo delle proprietà registrabili è contenuto nella tabella seguente:

Informazione Nome del campo Descrizione del campo
Data date Data della registrazione
Ora time Ora della registrazione
Indirizzo IP client c-ip Indirizzo IP del client
Nome utente cs-username Nome dell'utente autenticato (quando disponibile)
Nome servizio s-sitename Nome del servizio
Nome server s-computername Nome del server
Indirizzo IP server s-ip Indirizzo IP del server
Porta server s-port Numero della porta che ha ricevuto la richiesta
Metodo cs-method Metodo HTTP (GET, POST, ...)
Origine URI cs-uri-stem Risorsa richiesta
Query URI cs-uri-query Query effettuata dal client
Stato protocollo sc-status Codice di risposta del protocollo
Stato Win32 sc-win32-status Codice di stato o di errore di Windows (0 = nessun errore)
Byte inviati sc-bytes Numero di bytes inviati dal server
Byte ricevuti cs-bytes Numero di bytes ricevuti dal server
Tempo impiegato time-taken Tempo di elaborazione in millisecondi
Versione protocollo cs-version Versione del protocollo (HTTP, FTP). Nel caso del protocollo HTTP, la versione sarà HTTP 1.0 o HTTP 1.1
Host cs-host Intestazione host
Agente utente cs(User-Agent) Informazioni sul browser utilizzato dal client
Cookie cs(Cookie) Eventuale contenuto del cookie inviato o ricevuto
Provenienza cs(Referer) URL precedente

Legenda dei prefissi

s  = server
c  = client
cs = da client a server
sc = da server a client

Per le informazioni mancanti viene indicato un trattino.

Formato di file registro comune NCSA

Questo formato è disponibile per i siti Web ma non per i siti FTP. L'esempio seguente mostra le registrazione relativa alla richiesta della medesima pagina index.html:

127.0.0.1 - - [10/Jul/2008:22:48:10 +0200] "GET /index.html HTTP/1.1" 200 2592

Scomponiamo questo log ed esaminiamo le informazioni registrate nella tabella seguente:

Informazione Descrizione
127.0.0.1 Indirizzo IP del client
- Nome del registro remoto (quando disponibile)
- Nome dell'utente autenticato (quando disponibile)
10/Jul/2008 Data
22:48:10 Ora
+0200 Differenza d'orario rispetto al GMT
GET /index.html HTTP/1.1 Richiesta HTTP
200 Codice di risposta del protocollo
2592 Numero di bytes inviati dal server

Formato di file registro IIS

L'esempio seguente mostra la registrazione della richiesta della medesima pagina index.html, questa volta con il formato "File registro IIS":

127.0.0.1, -, 7/10/2008, 22:49:44, W3SVC1, SERVER1, 127.0.0.1, 40, 306, 2592, 200, 0, GET, /index.html, -,

Le informazioni registrate sono descritte nella seguente tabella:

Informazione Descrizione
127.0.0.1 Indirizzo IP del client
anonymous Nome dell'utente autenticato (qualora disponibile)
10/07/2008 Data
22:49:44 Ora
W3SVC1 Nome del servizio
SERVER1 Nome del server
127.0.0.1 Indirizzo IP del server
40 Tempo di elaborazione in millisecondi
306 Numero di bytes ricevuti dal server
2592 Numero di bytes inviati dal server
200 Codice di risposta del protocollo
0 Codice di stato o di errore di Windows (0 = nessun errore)
GET Metodo HTTP (GET, POST, ...)
/index.html Risorsa richiesta
- Parametri (qualora disponibili)

Registrazione ODBC

Utilizza una fonte dati ODBC per la registrazione dell'attività del sito. L'elenco delle proprietà e il formato della tabella di destinazione sono fissi. Per configurare la registrazione ODBC occorre effettuare le seguenti attività:

  1. Creare un nuovo database (nel seguito si farà riferimento ad un database Microsoft Access)
  2. Creare la tabella per le registrazioni, eseguendo lo script Logtemp.sql contenuto all'interno della directory %systemroot%System32Inetsrv (si suggerisce di rinominare la tabella in "InternetLog" per coerenza con le impostazioni predefinite di IIS)
  3. Definire un Data Source Name ODBC di sistema chiamato HTTPLOG, configurandolo per la connessione al database creato in precedenza
  4. Dalla finestra delle proprietà del sito Web, impostare i parametri per la connessione al database: il nome del DSN, il nome della tabella e le credenziali dell'utente.
Figura 2. Configurare la registrazione ODBC
Configurare la registrazione ODBC

Le informazioni registrate sono indicate nella tabella seguente:

Nome del campo Tipo di dato Descrizione
ClientHost varchar(255) Indirizzo IP del client
Username varchar(255) Nome dell'utente autenticato (qualora disponibile)
LogTime datetime Data e ora della registrazione
Service varchar(255) Nome del servizio
Machine varchar(255) Nome del server
ServerIP varchar(50) Indirizzo IP del server
ProcessingTime int Tempo di elaborazione in millisecondi
BytesRecvd int Numero di bytes ricevuti
BytesSent int Numero di bytes inviati
ServiceStatus int Codice di risposta del protocollo
Win32Status int Codice di stato o di errore di Windows (0 = nessun errore)
Operation varchar(255) Metodo HTTP
Target varchar(255) Risorsa richiesta
Parameters varchar(255) Parametri (qualora disponibili)

La registrazione ODBC consente di effettuare agevolmente analisi statistiche sugli accessi al sito Web. La query SQL seguente, per esempio:

SELECT InternetLog.target AS Pagina, Count(*) AS [Numero di richieste]
FROM InternetLog
GROUP BY InternetLog.target;

fornisce, per ogni risorsa, il numero totale di richieste effettuate ed è utile ad analizzare la distribuzione delle richieste degli utenti sull'intero parco di risorse disponibili nel sito Web.

La query SQL seguente:

SELECT DateSerial(Year(LogTime), Month(LogTime), Day(LogTime)) AS Data, Count(*) AS [Numero di richieste]
FROM InternetLog
GROUP BY DateSerial(Year(LogTime), Month(LogTime), Day(LogTime))
ORDER BY DateSerial (Year(LogTime), Month(LogTime), Day(LogTime));

costruisce un prospetto che fornisce il numero totale di richieste per ogni giorno, ed è interessante per l'analisi del carico giornaliero.

Infine la seguente query SQL:

SELECT Hour(LogTime) & ':00' AS Ora, SUM(InternetLog.bytessent) AS [Bytes inviati]
FROM InternetLog
WHERE Format(LogTime,'DD/MM/YYYY')=Giorno
GROUP BY Hour(LogTime)
ORDER BY Hour(LogTime);

consente di analizzare il carico orario in termini di numero totale di bytes inviati (per un determinato giorno inserito come parametro di input della query). Esportando poi il risultato della query su Microsoft Excel, è agevole creare un grafico che fornisce una visualizzazione immediata dell'analisi effettuata.

Registrazione binaria centralizzata

Questa impostazione consente a tutti i siti Web ospitati all'interno di in un server IIS specifico di registrare le informazioni di Logging in un unico contenitore centralizzato in formato binario. La trattazione dettagliata di questo tipo di formato esula dalle finalità del presente articolo.

Ti consigliamo anche