понедельник, 14 марта 2016 г.

Как настрить автоматическую архивацию и удаление логов для всех сайтов IIS?

При нормальном функционировании сайтов под IIS достаточно быстро скапливается много логов. По умолчанию такие логи помещаются в папку "%SystemDrive%\inetpub\logs\LogFiles", при этом имя папки для каждого сайта формируется следующим образом "W3SVC" + идентификатор сайт. Такой формат наименования достаточно не удобен, и для определение нужный логов обычно приходится открывать Диспетчер служб IIS.

Для автоматической архивации и удаления логов нашел отличный скрипт на powershell. Который как оказалось так же решает проблему с наименованием папок логов.

Возможности:

  • Автоматически архивирует логи ВСЕХ сайтов IIS.
  • Может автоматически помещать логи в папку с названием сайта или можно настроить наименование вручную.
  • Может групировать логи по дню или по месяцу, т.е. будет создан один архив с логами за день или за месяц.
  • Может удалять архивы старше определенного периода.
  • Может уведомлять по почте о архивации, в том числе и о проблемах.
В общем чудо скрипт :).

Для настройки автоматической архивации необходимо выполнить следующие шаги:
  1. Создаем файл compress-remove-logs.ps1 и добавляем в него последню версию скрипта.
  2. Производим настройку скрипта:
    • Отправка уведомлений. Устанавливаем параметр $MailMessageDetermination в нужное значение ("both" - уведомлять при успешном завершении и завершении с ошибками; "failure" - уведомлять только при завершении с ошибками; "never" - не уведомлять). Если уведомлять необходимо, то устанавливаем так же параметры $SmtpClient.Host, $MailMessage.from, $MailMessage.To, $MailMessage.Subject, $MailMessage.Body.
    • Путь к логу выполнения архивации - $Logfile
    • Путь к архиватору 7-Zip - $7z
    • $TestMode = $false
    • Удаление старых логов. Устанавливаем параметр $RemoveOldArchives в $true, и задаем параметр $RemoveArchivesDaysOld
    • Групирование логов. Устанавливаем параметр $ArchiveGrouping в нужно значение ("month" - архивировать логи за месяц, "day" - архивировать логи за день)
    • Путь к архивам логов - $ArchiveStorage
  3. Настраиваем запуск через Task Sheduler (см. скриншоты)
    powershell Set-ExecutionPolicy RemoteSigned
    powershell C:\Tools\Scripts\compress-remove-logs.ps1
    
Приятного использования!

Комментариев нет:

Отправить комментарий