Логи IIS — очистка

02:39

Логи IIS

Веб-сервер IIS в процессе своей работы генерирует достаточно большие объемы log-файлов. Все бы ничего, но по умолчанию логи IIS располагаются на системном диске, которому обычно не предоставляют большой объем. Хорошо, если у вас виртуальная машина и вы можете просто не обращать внимание на нехватку диска C:\, увеличивая его объем по необходимости, благо функционал виртуальных машин Hyper-V второго поколения позволяет увеличивать размер даже системного диска без выключения сервера, прямо налету. А если у вас такой возможности нет? В таком случае разрастание логов может стать для вас серьезной проблемой.

В статье я расскажу как обращаться с log-файлами IIS и автоматизировать процесс удаления.


Если вам интересна тематика Windows Server, рекомендую обратиться к тегу  Windows Server  на моем блоге.


Логи IIS

По умолчанию логи IIS располагаются в каталоге %SystemDrive%\inetpub\logs\LogFiles. Сигналом для их очистки может служить истощающееся быстрыми темпами свободное место системного диска. В этом случае системные администраторы начинают искать что же занимает столько места и благополучно пропускают папку inetpub, поскольку по умолчанию она практически ничего не весит:

Логи IIS - очистка 01

Но почему? Дело в том, что изначально вы не имеете разрешений на вложенные папки, следовательно не можете увидеть их реальный объем:

Логи IIS - очистка 02

Попробуйте зайти в каждую подпапку каталога %SystemDrive%\inetpub\logs\LogFiles, соглашаясь с назначением необходимых разрешений и в итоге увидите, что реальный объем папок не так уж и мал:

Логи IIS - очистка 03

Разумеется у меня приведены в пример скриншоты с тестового сервера. Объем логов серверов в продакшене может достигать десятков и сотен гигабайт совершенно спокойно.

Итак, проблема найдена, пора заняться очисткой. Теоретически её можно проводить и вручную, но в этом нет никакого смысла и проще все сделать скриптами, в некоторых случаях достаточно даже одной команды PowerShell. В одной из статей по Exchange 2013 (см. Очистка папки Logging Exchange 2013) я уже рассматривал вопрос автоматизации процесса очистки логов, но не помешает напомнить о нем и в этой статье.

Команда для очистки log-файлов в нашем случае будет выглядеть следующим образом:

 

 

В командлете (Get-Date).AddDays(-3) вместо значения -3 задайте свое. -3 говорит о том, что будут удалены все файлы старше трех дней. Для меня это оптимальное значение, для вас оно может отличаться. В продакшене рекомендую оставлять минимум неделю истории, а если позволяет свободное место, то и целый месяц не будет лишним.

Создадим отдельную учетную запись, администратором её делать не нужно:

exchange 2013 logging cleanup 03

Дадим учетной записи права Вход в качестве пакетного задания 1 (через оснастку управления политиками gpedit.msc):

Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Локальные политики\Назначение прав пользователя

exchange 2013 logging cleanup 04

Дальше необходимо выдать пользователю права на каталог %SystemDrive%\inetpub\logs\LogFilesДостаточно прав на чтение + права на удаление файлов и папок:

Логи IIS - очистка 04

Снова открываем окно назначения прав и заменяем разрешения всех дочерних элементов родительскими (без этого работать не будет, ведь на этом каталоге отключено наследование):

Логи IIS - очистка 06

Следующий шаг — создание запланированного задания (в аргументах вставьте команду, о которой речь шла выше):

Логи IIS - очистка 05

Не забудьте проверить задание — выполните вручную и если все прошло хорошо (см. журнал задания), поставьте выполнение через 2-3 минуты от текущего времени, чтобы проверить как оно работает при автоматическим запуске. При этом убедитесь, что старые файлы действительно удалились.

отсюда