Automaticky čistiť protokoly IIS pomocou PowerShell

Webový server IIS (Internet Information Services) generuje pomerne veľké množstvo protokolov, ktoré sa zapisujú do protokolových súborov. Hlavným problémom je, že v predvolenom nastavení sú protokoly služby IIS umiestnené na systémovom disku a časom môžu súbory denníka upchávať všetok dostupný diskový priestor a prevádzka servera bude paralyzovaná. Napríklad v mojom prípade na serveri Exchange Server 2013 s takmer 1 000 poštovými schránkami služba IIS generuje denník 200 MB. V roku teda budú súbory denníka IIS zaberať 70 GB miesta na disku. Je možné tieto procesy nejako kontrolovať?

Služba IIS nemá zabudovanú procedúru rotácie protokolov IIS, takže správcovia musia vymyslieť svoje vlastné schémy na automatické otáčanie alebo mazanie protokolov IIS na webových serveroch..

V prvom rade musí správca v zásade rozhodnúť, či sú denníky, ktoré generuje IIS, vôbec potrebné. Ak je otázka záporná - protokolovanie protokolov možno zakázať v nastaveniach lokality v konzole Správca internetových informačných služieb (IIS) v časti protokolovanie. V niektorých prípadoch je možné použiť aj prenos protokolových súborov zo systémového disku na dátový disk / vyhradený disk. Ak to chcete urobiť, v rovnakej časti jednoducho zmeňte cestu k adresáru LogFiles.

V systéme Windows Server 2003 sú teda protokoly IIS predvolene uložené v priečinku%windir% \ system32 \ LogFiles \ a vo Windows Server 2008/2012 / R2 v priečinku % SystemDrive% \ inetpub \ logs \ LogFiles \.

V prípade vyčerpania voľného miesta na systémovom disku sa správca horúčkovito snaží zistiť, s čím je disk upchaný, a bezpečne nevenuje pozornosť adresáru inetpub, pretože na prvý pohľad je jeho veľkosť zanedbateľná. Problém je, že v predvolenom nastavení nemá správca povolenie na zobrazenie štandardných adresárov v priečinku inetpub, a preto program Prieskumník systému Windows neukazuje skutočnú veľkosť podpriečinkov.

Ak sa pokúsite otvoriť adresár% SystemDrive% \ inetpub \ logs \ LogFiles a potvrdiť, že sú pridelené potrebné povolenia (alebo spustiť program Prieskumník s oprávneniami správcu), môžete vidieť, že veľkosť priečinka denníka je skutočne dosť veľká..

Spravidla môžete bezpečne vymazať všetky protokolové súbory staršie ako 3 až 7 dní. Toto je možné vykonať ručne (nie najlepšou voľbou) alebo automaticky pomocou skriptu PowerShell, ktorý podľa plánu odstráni staré súbory denníka.

Jednoduchý skript PowerShell, ktorý bude rekurzívne odstraňovať súbory s príponou * .log z adresára C: \ inetpub \ logs, môže byť takýto:

gci 'C: \ inetpub \ logs -Include' * .log '-Recurse | ? LastWriteTime -LT (Get-Date) .AddDays (-7) | Remove-Item

Ak chcete automaticky spustiť skript, môžete v plánovači vytvoriť plán úloh (Plánovač úloh):

  1. štart Plánovač úloh
  2. Na pravej table akčné kliknite na Vytvorte základnú úlohu
  3. Zadajte názov úlohy: CleanIISLog
  4. V sobotu nastavte úlohu týždenného spustenia
  5. Spustený program: powershell.exe
  6. argumenty: -NoProfile - Príkaz "gci 'C: \ inetpub \ logs' -Include '* .log' -Recurse | ? LastWriteTime -LT (Get-Date) .AddDays (-7) | Odstrániť položku »
  7. Teraz otvorte vlastnosti vytvorenej úlohy
  8. Určite, že úloha sa spustí zo systému (NT AUTHORITY \ System) a začiarknite políčko Beží s najvyššími oprávneniami
  9. Otestujte úlohu kliknutím na ňu pomocou RMB a výberom beh
  10. Uistite sa, že všetky súbory denníka staršie ako 7 dní sa automaticky odstránia

rada. Ďalším spôsobom, ako "rýchlo" zmenšiť veľkosť protokolov, keď ich z nejakého dôvodu nie je možné odstrániť, je povoliť kompresiu NTFS v protokolovom adresári. pretože protokoly sú jednoduché textové súbory, sú komprimované pomerne silne (4-5 krát). Ak chcete povoliť kompresiu NTFS, otvorte vlastnosti priečinka protokolu a kliknite na tlačidlo Spresniť. Začiarknite políčko Kompresiou obsahu ušetríte miesto na disku a dvakrát kliknite na OK.