Automatski očistite IIS zapisnike pomoću PowerShell-a

Internetski poslužitelj IIS (Internet Information Services) generira prilično velik broj zapisnika u tom procesu koji se zapisuju u datoteke dnevnika. Glavni je problem što se IIS zapisnici prema zadanim postavkama nalaze na sistemskom disku, a s vremenom datoteke dnevnika mogu začepiti sav raspoloživi prostor na disku i rad poslužitelja će biti paraliziran. Na primjer, u mom slučaju na Exchange Server 2013 s gotovo 1000 poštanskih sandučića, IIS generira datoteku dnevnika od 200 MB dnevno. Tako će za godinu dana IIS datoteke datoteka zauzeti 70 GB prostora na disku. Je li moguće nekako kontrolirati te procese?

IIS nema ugrađen postupak rotacije IIS dnevnika, pa administratori moraju izmisliti vlastite sheme za automatsko rotiranje ili brisanje IIS dnevnika na web poslužiteljima.

Prije svega, administrator mora u načelu odlučiti trebaju li dnevnici koje IIS generira uopće potrebni. Ako je pitanje negativno - evidentiranje zapisnika može se onemogućiti u postavkama web mjesta na konzoli Upravitelj internetskih informacijskih usluga (IIS) u odjeljku sječa drveta. U nekim slučajevima je primjenjiv i prijenos datoteka zapisa sa sistemskog diska na podatkovni disk / namjenski disk. Da biste to učinili, u istom odjeljku samo promijenite put do direktorija LogFiles.

Dakle, prema Windows-u 2003, IIS dnevnici pohranjuju se u mapu%windir% \ system32 \ LogFiles \ i u sustavu Windows Server 2008/2012 / R2 u mapi % SystemDrive% \ inetpub \ logs \ LogFiles \.

U slučaju da se na sistemskom disku iscrpi slobodan prostor, administrator bespoštedno pokušava pronaći ono što je diskom začepljeno i sigurno ne obraća pažnju na inetpub direktorij, jer na prvi pogled njegova je veličina zanemariva. Problem je u tome što administrator prema zadanim postavkama nema dozvolu za pregled standardnih direktorija unutar mape inetpub, a time Windows Explorer ne pokazuje stvarnu veličinu podmapa.

Ako pokušate otvoriti direktorij% SystemDrive% \ inetpub \ logs \ LogFiles i potvrdite da su potrebna dopuštenja dodijeljena (ili pokrenite Explorer s povlasticama administratora), možete vidjeti da je veličina mape dnevnika zapravo prilično velika.

U pravilu možete sigurno izbrisati sve datoteke dnevnika starije od 3-7 dana. To se može učiniti ručno (nije najbolja opcija) ili automatski pomoću skripte PowerShell koja će izbrisati stare datoteke dnevnika prema rasporedu.

Jednostavna PowerShell skripta koja će rekurzivno izbrisati datoteke s proširenjem * .log iz direktorija C: \ inetpub \ logs može biti ovako:

gci 'C: \ inetpub \ logs -Uključi' * .log '-Recurse | ? LastWriteTime -LT (Get-Date) .Dodaj (-7) | Uklonite-točka

Da biste automatski pokrenuli skriptu, u planeru možete stvoriti sljedeći zadatak (Planer zadataka):

  1. početak Planer zadataka
  2. U desnom oknu akcija kliknite na Stvorite osnovni zadatak
  3. Navedite naziv zadatka: CleanIISLog
  4. Postavite zadatak tjednog pokretanja subotom
  5. Pokrenut program: powershell.exe
  6. argumenti: -NoProfile -command "gci 'C: \ inetpub \ logs' -Include '* .log' -Recurse | ? LastWriteTime -LT (Get-Date) .Dodaj (-7) | Ukloni stavku »
  7. Sada otvorite svojstva stvorenog zadatka
  8. Specificirajte da će se zadatak pokrenuti iz sustava (NT AUTHORITY \ System) i potvrdite okvir Trčite s najvišim povlasticama
  9. Testirajte zadatak klikom na njega s RMB i odabirom trčanje
  10. Obavezno automatski obrišite sve datoteke dnevnika starije od 7 dana

vijeće. Drugi način da "brzo" smanjite veličinu dnevnika kada ih je iz nekog razloga nemoguće izbrisati je omogućiti NTFS kompresiju u direktoriju dnevnika. jer dnevnici su jednostavne tekstualne datoteke, komprimirani su prilično snažno (4-5 puta). Kako biste omogućili kompresiju NTFS, otvorite svojstva mape dnevnika i kliknite gumb Napredno. Označite okvir Stisnite sadržaj da biste uštedjeli prostor na disku i dvokliknite OK.