Очистка папки Logging Exchange 2013

Logging Exchange 2013

www.microsoft.com

Папка Logging Exchange 2013 располагается в каталоге установки сервера — %ExchangeInstallPath%. В ней находятся логи множества служб, обеспечивающих нормальную работу сервера, данные основных метрик производительности ПО и оборудования. Проблем добавляет тот факт, что в 2013 версии сервера ведение большинства логов активировано по умолчанию, что как минимум увеличивает потребность в свободном месте, а как максимум — добавляет головную боль системным администраторам (разумеется только тем из них, кому не наплевать на администрируемый ими сервис).


Найти больше информации по настройке и администрированию Exchange 2013 на моем блоге вы сможете в основной статье тематики — Exchange 2013 — Установка, настройка, администрирование.

См. также Логи IIS — очистка


Очистка папки Logging Exchange 2013

Каталог %ExchangeInstallPath%\Logging содержит в себе множество других папок в основном с .log-файлами. Структура для сервера Exchange 2013 с двумя ролями (CAS и MBX) выглядит примерно следующим образом:

exchange 2013 logging cleanup 01

При этом на серверах Exchange 2013 Edge также представлен этот каталог, но он имеет уже значительно меньшее количество подпапок, собственно как и компонентов, необходимых для работы роли:

exchange 2013 logging cleanup 08

Особенно интересна папка %ExchangeInstallPath%\Logging\Diagnostics\DailyPerformanceLogs 1, в которой хранятся .blg-файлы, содержащие историю данных производительности сервера. Введение этого каталога в Exchange 2013 призвано упростить процедуру контакта с поддержкой Microsoft, сразу предоставляя им эти данные для анализа.

Для очистки папки можно использовать различные скрипты, которые в большом количестве представлены на просторах интернета 2, в том числе и на официальных ресурсах 3. Теоретически можно произвести очистку и вручную, но гуру Exchange так делать не рекомендуют. С чем это связано, непонятно, ведь те же скрипты выполняют самую обычную очистку директорий с некоторыми условиями — например удаляют файлы старше пары дней. Вот часть кода из упоминаемого выше скрипта:

... 
# Select files to delete
 $Files = Get-ChildItem $TargetServerFolder -Include *.log -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
...

Командлет Get-ChildItem 4 рекурсивно получает список файлов, ну а чуть ниже Remove-Item эти файлы удаляет:

...
# Delete the files
 foreach ($File in $Files)
 {
 Remove-Item $File -ErrorAction SilentlyContinue -Force | out-null
 $fileCount++
 }
...

Таким образом, если опустить различные проверки и доп. функционал типа уведомлений по электронной почте, удаление всех необходимых файлов из каталога Logging сводится к выполнению лишь одной команды:

[PS] C:\Users\bissquit\Downloads>gci ‘C:\Program Files\Microsoft\Exchange Server\V15\Logging’ -Include ‘*.log’, ‘*.blg’ -Recurse | ? LastWriteTime -LT (Get-Date).AddDays(-2) | Remove-Item

Эту же команду с минимальными правами можно запускать через планировщик задач каждый день и подчищать старые логи, не перегружая обычно небольшое пространство системного диска лишними данными.

Я предпочитаю выполнять запланированные задания с минимальными правами, которые необходимы для успешного выполнения задачи. Самый простой вариант — запланировать задание под вашей текущей учетной записью, под которой вы логинитесь на сервер. Но ведь у этой учетки как минимум права администратора сервера Exchange, а то и права администратора домена/схемы/предприятия. Не совсем правильно стартовать одну команду из под учетки с такими привилегиями. Сделаем по-другому.

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

exchange 2013 logging cleanup 03

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

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

exchange 2013 logging cleanup 04

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

exchange 2013 logging cleanup 05

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

exchange 2013 logging cleanup 060

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

exchange 2013 logging cleanup 07

Небольшая статистика: папка Logging стала занимать примерно 18ГБ на моем тестовом сервере после 3 месяцев его работы. При этом никакой реальной нагрузки на сервере не было. В продакшене логи могут разрастаться до сотен гигабайт и больше. Хорошо, если у вас виртуальная машина и вы можете не выключая её расширить объем системного диска (такая функция есть в Windows Server 2012 R2 для виртуальных машин второго поколения), а если у вас Exchange установлен на физическом сервере и увеличить диск С:\ возможности нет?..

comments powered by HyperComments