Samodejno očistite dnevnike IIS z uporabo PowerShell-a

Spletni strežnik IIS (Internet Information Services) ustvari precej veliko dnevnikov v postopku, ki so zapisani v dnevniške datoteke. Glavna težava je, da se privzeto dnevniki IIS nahajajo na sistemskem disku in sčasoma datoteke dnevnika lahko zamašijo ves razpoložljivi prostor na disku in delovanje strežnika bo ohromljeno. Na primer, IIS na Exchange Server 2013 s skoraj 1000 nabiralniki ustvari datoteko dnevnika 200 MB na dan. Tako bodo čez leto IIS dnevniške datoteke zavzele 70 GB prostora na disku. Ali je mogoče nekako nadzorovati te procese?

IIS nima vgrajenega postopka vrtenja dnevnika IIS, zato morajo skrbniki izumiti lastne sheme za samodejno vrtenje ali brisanje dnevnikov IIS na spletnih strežnikih.

Najprej se mora administrator načeloma odločiti, ali so dnevniki, ki jih IIS ustvarja, sploh potrebni. Če je vprašanje negativno - beleženje dnevnikov lahko onemogočite v nastavitvah spletnega mesta v konzoli Upravitelj internetnih informacijskih storitev (IIS) v razdelku Zapisovanje dnevnikov. V nekaterih primerih velja tudi prenos dnevniških datotek s sistemskega diska na podatkovni disk / namenski disk. Če želite to narediti, v istem razdelku samo spremenite pot do imenika LogFiles.

Tako so privzeto v Windows Server 2003 dnevniki IIS shranjeni v mapo%windir% \ system32 \ LogFiles \ in v sistemu Windows Server 2008/2012 / R2 v mapi % SystemDrive% \ inetpub \ logs \ LogFiles \.

V primeru izčrpavanja prostega prostora na sistemskem disku skrbnik srčno poskuša najti, s čim je disk zamašen, in varno ne bo pozoren na imenik inetpub, ker na prvi pogled je njegova velikost zanemarljiva. Težava je v tem, da skrbnik privzeto nima dovoljenja za ogled standardnih imenikov znotraj mape inetpub in tako Windows Explorer ne prikazuje dejanske velikosti podmap.

Če poskusite odpreti direktorij% SystemDrive% \ inetpub \ logs \ LogFiles in potrdijo, da so dodeljena potrebna dovoljenja (ali zaženite Explorer s skrbniškimi privilegiji), lahko vidite, da je velikost mape dnevnikov pravzaprav precej velika.

Praviloma lahko varno izbrišete vse dnevniške datoteke, starejše od 3-7 dni. To lahko storite ročno (ni najboljša možnost) ali samodejno z uporabo skripta PowerShell, ki bo izbrisal stare dnevniške datoteke po načrtih.

Preprost skript PowerShell, ki bo rekurzivno izbrisal datoteke s pripono * .log iz imenika C: \ inetpub \ log, je takšen:

gci 'C: \ inetpub \ logs -Vključi' * .log '-Recurse | ? LastWriteTime -LT (Get-Date) .Dodaj (-7) | Odstrani-element

Za samodejni zagon skripta lahko v planerju ustvarite naslednjo nalogo (Načrtovalec opravil):

  1. Teči Načrtovalnik opravil
  2. V desnem podoknu Ukrep kliknite na Ustvari osnovno nalogo
  3. Določite ime naloge: CleanIISLog
  4. V soboto določite tedensko nalogo
  5. Začetek programa: powershell.exe
  6. Argumenti: -NoProfile -command "gci" C: \ inetpub \ logs '-Include' * .log '-Recurse | ? LastWriteTime -LT (Get-Date) .Dodaj (-7) | Odstrani-element »
  7. Zdaj odprite lastnosti ustvarjene naloge
  8. Določite, da se bo naloga sprožila pod sistemom (NT AUTHORITY \ System) in potrdite polje Teči z najvišjimi privilegiji
  9. Nalogo preizkusite tako, da jo kliknete z RMB in izberete Teči
  10. Prepričajte se, da so vse datoteke dnevnika, starejše od 7 dni, samodejno izbrisane

Namig. Drug način za "hitro" zmanjšanje velikosti dnevnikov, ko jih iz nekega razloga ni mogoče izbrisati, je omogočanje stiskanja NTFS v imeniku dnevnikov. Ker dnevniki so preproste besedilne datoteke, stisnjeni so precej močno (4-5 krat). Če želite omogočiti stiskanje NTFS, odprite lastnosti mape dnevnikov in kliknite na gumb Advanced. Potrdite polje Stisnite vsebino, da prihranite prostor na disku in dvokliknite V redu.