После продолжительной работы Exchange сервера при включенных логах, занимаемый ими объём может возрасти до приличных объёмов.
Как избежать такой ситуации?
Файлы журналов находятся по пути C:\Program Files\Microsoft\Exchange Server\V15\Logging\
и разделены по модулям их генерирующим.
За некоторое время работы на двух серверах сложилась следующая ситуация:
18 742 686 691 # HttpProxy
5 362 957 762 # Ews
5 359 635 353 # MapiHttp
4 974 915 687 # Diagnostics
4 361 686 626 # lodctr_backups
4 230 610 944 # Query
2 243 176 410 # Monitoring
2 148 606 458 # MailboxAssistantsLog
1 480 334 759 # CmdletInfra
1 391 080 595 # ConversationAggregationLog
1 144 418 851 # RpcHttp
930 568 109 # ContactChangeLogging
708 824 888 # Autodiscover
499 310 387 # ADDriver
351 151 701 # ECP
347 268 564 # RPC Client Access
195 597 234 # MailboxAssistantsSlaReportLog
159 291 169 # Search
4 488 258 360 # lodctr_backups
4 484 763 914 # Diagnostics
3 123 531 496 # Monitoring
2 338 053 058 # HttpProxy
1 308 655 364 # CmdletInfra
782 665 278 # RpcHttp
220 290 663 # MapiHttp
174 063 616 # Query
124 367 273 # ADDriver
Общий объём составлял 51 и 17 ГБ.
После поиска информации по базам знаний, стало понятно, что встроенного сервиса очистки логов у Exchange нет и многие просто напросто отключают ведение логов.
Это, конечно, имеет свои последствия и в целом не рекомендуется.
Что же тогда делать?
Решено было написать небольшой скрипт на PowerShell и запускать его Планировщиком задач.
Скрипт для очистки файлов журналов
$dirs=@(
"C:\Program Files\Microsoft\Exchange Server\V15\Logging\HttpProxy",
"C:\Program Files\Microsoft\Exchange Server\V15\Logging\Ews",
"C:\Program Files\Microsoft\Exchange Server\V15\Logging\MapiHttp",
"C:\Program Files\Microsoft\Exchange Server\V15\Logging\Diagnostics",
"C:\Program Files\Microsoft\Exchange Server\V15\Logging\Query"
)
Get-ChildItem $dirs -Recurse -File | ? LastWriteTime -lt (Get-Date).AddDays(-14) | Remove-Item -ErrorAction "SilentlyContinue"
Скрипт рекурсивно обходит указанные каалоги и выбирает из них только обычные файлы (не каталоги), далее происходи фильтрация по времени модификации - остаются логи только старше двух недель, и затем эти файлы удаляются, причём, если удалить не получается - файл пропускается.
Создание задачи в планировщике
Сохраним полученный скрипт, например, в C:\Scripts\Exchange-CleanupLogs.ps1
Создадим задачу со следующими параметрами:
Программа: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Аргументы: -File "C:\Scripts\Exchange-CleanupLogs.ps1"
Учётная запись пользователя для запуска: SYSTEM
(или СИСТЕМА
)