Автоматично почистване на IIS дневници с помощта на PowerShell

Уеб сървърът IIS (Internet Information Services) генерира доста голям брой регистри в процеса, които се записват в лог файловете. Основният проблем е, че по подразбиране IIS дневниците са разположени на системния диск и с течение на времето лог файловете могат да запушат цялото налично дисково пространство и работата на сървъра ще бъде парализирана. Например, в моя случай на Exchange Server 2013 с почти 1000 пощенски кутии, IIS генерира дневен файл от 200 MB на ден. Така за една година, IIS лог файловете ще заемат 70 GB дисково пространство. Възможно ли е по някакъв начин да се контролират тези процеси?

IIS няма вградена процедура за ротация на лога на IIS, така че администраторите трябва да измислят свои собствени схеми за автоматично завъртане или изтриване на IIS регистрационни файлове на уеб сървъри.

На първо място, администраторът трябва да реши по принцип дали регистрационните файлове, които генерира IIS, са необходими. Ако въпросът е отрицателен - регистрирането на регистрационни файлове може да бъде деактивирано в настройките на сайта в конзолата Мениджър на Интернет информационни услуги (IIS) в секцията Влизане. В някои случаи е приложимо и прехвърлянето на журнални файлове от системния диск към диска с данни / специален диск. За да направите това, в същия раздел просто променете пътя към директорията LogFiles.

Така по подразбиране, в Windows Server 2003, IIS дневниците се съхраняват в папката%windir% \ system32 \ LogFiles \ и в Windows Server 2008/2012 / R2 в папката % SystemDrive% \ inetpub \ logs \ LogFiles \.

В случай на изчерпване на свободно пространство на системния диск, администраторът трескаво се опитва да намери с какво е запушен диска и безопасно не обръща внимание на директорията inetpub, тъй като на пръв поглед размерът му е незначителен. Проблемът е, че по подразбиране администраторът няма разрешение за преглед на стандартни директории в папката inetpub и по този начин Windows Explorer не показва действителния размер на подпапките.

Ако се опитате да отворите директорията% SystemDrive% \ inetpub \ logs \ LogFiles, потвърждавайки, че необходимите разрешения са присвоени (или стартирате Explorer с права на администратор), можете да видите, че размерът на папката на журнала всъщност е доста голям.

По правило можете безопасно да изтриете всички лог файлове, по-стари от 3-7 дни. Това може да се извърши ръчно (не най-добрият вариант) или автоматично с помощта на скрипт PowerShell, който ще изтрие старите файлове на журнала, както е планирано.

Прост скрипт на PowerShell, който рекурсивно ще изтрива файлове с разширението * .log от директорията C: \ inetpub \ logs, може да бъде такъв:

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

За да стартирате автоматично скрипта, можете да създадете следната задача в планиращия инструмент (Scheduler):

  1. начало Планировчик на задачите
  2. В десния прозорец действие кликнете върху Създайте основна задача
  3. Посочете името на задачата: CleanIISLog
  4. Задайте седмичната задача за стартиране в събота
  5. Стартирана програма: powershell.exe
  6. аргументи: -NoProfile -command "gci 'C: \ inetpub \ logs' -Include '* .log' -Recurse | ? LastWriteTime -LT (Get-Date) .AddDays (-7) | Премахване-елемент »
  7. Сега отворете свойствата на създадената задача
  8. Укажете, че задачата ще бъде стартирана от под системата (NT AUTHORITY \ System) и поставете отметка в квадратчето Работете с най-високи привилегии
  9. Тествайте задачата, като щракнете върху нея с RMB и изберете тичам
  10. Уверете се, че всички журнални файлове, по-стари от 7 дни, автоматично се изтриват

съвет. Друг начин за "бързо" намаляване на размера на регистрационните файлове, когато е невъзможно да ги изтриете по някаква причина, е да активирате NTFS компресиране в директорията на лога. защото дневниците са прости текстови файлове, те се компресират доста силно (4-5 пъти). За да активирате компресията на NTFS, отворете свойствата на папката и натиснете бутона Advanced. Поставете отметка в квадратчето Компресирайте съдържание, за да спестите място на диска и щракнете двукратно върху OK.