Eliminare i file di log di IIS più vecchi di una certa data con un file batch

IIS URL Rewrite: redirect di più nomi di dominio su un singolo hostname

I file di log di Internet Information Services costituiscono una risorsa irrinunciabile per qualsiasi amministratore di rete degno di questo nome, in quanto sono l'unico strumento che consente di tenere traccia in modo efficace di una serie di informazioni utilissime su chi visita i nostri siti e servizi web: per un elenco completo delle informazioni che sono in grado di memorizzare è possibile fare riferimento a questa pagina ufficiale che descrive il formato utilizzato, ovvero il W3C Extended Log File Format, al quale Microsoft ha scelto di uniformarsi a partire dalla versione 6 di IIS.

Premessa

Ovviamente la scelta su quali informazioni memorizzare e quali no dipende interamente dall'amministratore, il quale può optare per un livello di dettaglio più o meno approfondito tramite il pannello di gestione del servizio di pubblicazione web - anche noto come IIS Manager - facendo click sull'icona Logging, come è possibile vedere nella schermata di seguito:

iis-logging-screenshot

Come già detto poco sopra, attivare il logging del traffico dei propri siti è una scelta quasi obbligata per qualsiasi amministratore di rete. Oltre ad avere una indispensabile utilità statistica, si tratta di informazioni che è opportuno tenere anche per tutelarsi da una serie di potenziali problematiche di natura legale o penale: penetration attacks da parte di hacker o smanettoni in cerca di gloria, abuso dei servizi che vengono offerti al pubblico, e così via.

Si tratta di possibilità relativamente remote, ma attenzione a prenderle sotto gamba: qualsiasi servizio web che preveda la possibilità di effettuare un upload consente di fatto a un utente malintenzionato di caricare sul vostro sistema immagini, video, testi, brani musicale, software o altri file illegali che potrebbero prima o poi - se siete particolarmente sfortunati - essere oggetto di indagine da parte delle forze dell'ordine, con il conseguente obbligo di fornire tutti i log del caso. Ove mai un eventualità del genere venisse malauguratamente a verificarsi, la funzionalità di logging di IIS sarà una vera e propria manna dal cielo - ammesso che non l'abbiate disabilitata!

Il problema

Dopo questa breve introduzione, veniamo allo scopo di questo articolo. Se pure è assodato che abilitare il logging di IIS è un'ottima pratica, è altrettanto vero che con questi file sono destinati a crescere in modo consistente nel corso del tempo, in misura direttamente proporzionale al traffico dei nostri siti: un sito come questo, che gestisce diverse migliaia di sessioni al giorno, produce log pari a circa 300.000 bytes al giorno. Se moltiplichiamo questo valore per 365 otteniamo un numero di mega non indifferente su base annuale... numero destinato a crescere ancora nel caso in cui il nostro IIS gestisca più siti contemporaneamente. Come ridurre al minimo questo dispendio di spazio senza rinunciare ai log?

La soluzione

Il modo migliore per mantenere attivo il logging riducendo nel contempo lo spazio occupato dai file è impostare due semplici contromisure all'interno del nostro server web:

  • Attivare la compressione file nella cartella che contiene tutti i log.
  • Impostare una procedura automatica che si occupi di cancellare periodicamente tutti i log più vecchi di N giorni.

E' possibile implementare entrambe in pochi minuti: vediamo come.

Attivare la Compressione File

La prima cosa da fare è identificare la cartella dove IIS memorizza i log. Il modo più semplice per scoprire dove si trova è aprire IIS Manager, fare click sulla già citata icona Logging e dare un'occhiata al path che si trova all'interno della casella di testo Log File Directory. Nella maggior parte dei casi la troverete all'interno di C:\inetpub\ , come mostrato dalla screenshot di seguito:

iis-manager-logging-screen

Una volta individuata è sufficiente aprire il File Manager di Windows, selezionarla con il tasto destro, fare click su Proprietà e abilitare la compressione file all'interno del menù Generale > Avanzate.

windows-enable-file-compression

Quando il sistema chiederà se si desidera comprimere anche tutti i file contenuti all'interno della cartella, sarà necessario fare click su OK: prima di farlo, però, è buona norma effettuare lo stop del servizio IIS digitando iisreset /STOP da prompt dei comandi, per poi riattivarlo al termine dell'operazione con il comando iisreset /START.  Una volta fatto questo, la cartella LogFiles assumerà un colore blu acceso, che caratterizza i folder che contengono file compressi: questa semplice operazione vi consentirà di risparmiare oltre il 50% dello spazio normalmente impiegato.

Eliminare periodicamente i file di log

La compressione dei file consente di recuperare un bel pò di spazio, ma non è sufficiente a impedire il lento stillicidio dovuto al trascorrere del tempo: il modo migliore per gestire quest'ultimo è senza dubbio quello di prevedere l'eliminazione periodica dei file più vecchi di una certa data, ovviamente mediante un procedimento automatizzato. Un buon margine, compatibile anche rispetto a quanto previsto/imposto dalla legislazione italiana ed europea vigente, è quello di mantenere i file di log relativi agli ultimi 180 giorni (6 mesi), eliminando nel contempo tutti i precedenti. Per farlo, possiamo ricorrere a uno script PowerShell o a un più semplice - ma anche più lento - file batch.

PowerShell

IMPORTANTE: se la vostra versione di PowerShell non riconosce il comando $PSItem.LastWriteTime , provate con $_.LastWriteTime .

File Batch

Una volta scelta la soluzione più adatta a voi, è sufficiente impostare l'esecuzione del file risultante all'interno di una Operazione Pianificata (Scheduled Task) con frequenza giornaliera. Si tratta di un'operazione che dura pochi istanti, quindi è possibile eseguirla a qualsiasi ora: non è neppure necessario effettuare lo stop/start del servizio di pubblicazione web in quanto i file da eliminare non sono più in uso da mesi.

Per il momento è tutto: felice logging!

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


Il periodo di verifica reCAPTCHA è scaduto. Ricaricare la pagina.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.