Папка Logging Exchange 2013 располагается в каталоге установки сервера – %ExchangeInstallPath%. В ней находятся логи множества служб, обеспечивающих нормальную работу сервера, данные основных метрик производительности ПО и оборудования. Проблем добавляет тот факт, что в 2013 версии сервера ведение большинства логов активировано по умолчанию, что как минимум увеличивает потребность в свободном месте, а как максимум – добавляет головную боль системным администраторам (разумеется только тем из них, кому не наплевать на администрируемый ими сервис).
Найти больше информации по настройке и администрированию Exchange 2013 на моем блоге вы сможете в основной статье тематики – Exchange 2013 — Установка, настройка, администрирование.
См. также Логи IIS — очистка
Содержание
Очистка папки Logging Exchange 2013
Для начала немного теории. Пропустите следующую главу, если хотите перейти сразу к делу.
Структура логов
Каталог %ExchangeInstallPath%Logging содержит в себе множество других папок в основном с .log-файлами. Структура для сервера Exchange 2013 с двумя ролями (CAS и MBX) выглядит приблизительно так:
При этом на серверах Exchange 2013 Edge также представлен этот каталог, но он имеет уже значительно меньшее количество подпапок, собственно как и компонентов, необходимых для работы роли:
Особенно интересна папка %ExchangeInstallPath%Logging\Diagnostics\DailyPerformanceLogs 1, в которой хранятся .blg-файлы, содержащие историю данных производительности сервера. Введение этого каталога в Exchange 2013 призвано упростить процедуру контакта с поддержкой Microsoft, сразу предоставляя им эти данные для анализа.
Команда для очистки
Для очистки папки можно использовать различные скрипты, которые в большом количестве представлены на просторах интернета 2, в том числе и на официальных ресурсах 3. Теоретически можно произвести очистку и вручную, но гуру Exchange так делать не рекомендуют. С чем это связано, непонятно, ведь те же скрипты выполняют самую обычную очистку директорий с некоторыми условиями – например удаляют файлы старше пары дней. Вот часть кода из упоминаемого выше скрипта:
1 2 3 4 |
... # Select files to delete $Files = Get-ChildItem $TargetServerFolder -Include *.log -Recurse | Where {$_.LastWriteTime -le "$LastWrite"} ... |
Командлет Get-ChildItem 4 рекурсивно получает список файлов, ну а чуть ниже Remove-Item эти файлы удаляет:
1 2 3 4 5 6 7 8 |
... # Delete the files foreach ($File in $Files) { Remove-Item $File -ErrorAction SilentlyContinue -Force | out-null $fileCount++ } ... |
Таким образом, если опустить различные проверки и доп. функционал типа уведомлений по электронной почте, удаление всех необходимых файлов из каталога Logging сводится к выполнению лишь одной команды:
1 |
gci 'C:\Program Files\Microsoft\Exchange Server\V15\Logging' -Include '*.log', '*.blg' -Recurse | ? LastWriteTime -LT (Get-Date).AddDays(-2) | Remove-Item |
Ну а теперь автоматизируем процесс.
Запланированное задание
Эту команду с минимальными правами можно запускать через планировщик задач каждый день и подчищать старые логи, не перегружая обычно небольшое пространство системного диска лишними данными.
Я предпочитаю выполнять запланированные задания с минимальными правами, которые необходимы для успешного выполнения задачи. Самый простой вариант – запланировать задание под вашей текущей учетной записью, под которой вы логинитесь на сервер. Но ведь у этой учетки как минимум права администратора сервера Exchange, а то и права администратора домена/схемы/предприятия. Не совсем правильно стартовать одну команду из под учетки с такими привилегиями. Сделаем по-другому.
Создадим отдельную учетную запись, администратором её делать не нужно:
Дадим учетной записи права Вход в качестве пакетного задания 5 (через оснастку управления политиками gpedit.msc):
Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Локальные политики\Назначение прав пользователя
Дальше необходимо выдать пользователю права на каталог %ExchangeInstallPath%Logging. Достаточно прав на чтение + права на удаление файлов и папок:
Следующий шаг – создание запланированного задания (в аргументах вставьте команду, о которой речь шла выше):
Ну и напоследок не забудьте проверить задание – выполните вручную и если все прошло хорошо (см. журнал задания), поставьте выполнение через 2-3 минуты от текущего времени, чтобы проверить как оно работает при автоматическим запуске.
Небольшая статистика: папка Logging стала занимать примерно 18ГБ на моем тестовом сервере после 3 месяцев его работы. При этом никакой реальной нагрузки на сервере не было. В продакшене логи могут разрастаться до сотен гигабайт и больше. Хорошо, если у вас виртуальная машина и вы можете не выключая её расширить объем системного диска (такая функция есть в Windows Server 2012 R2 для виртуальных машин второго поколения), а если у вас Exchange установлен на физическом сервере и увеличить диск С:\ возможности нет?..