После развертывания Exchange вы можете заметить, что свободное место на дисках начинает очень быстро уменьшаться. Помимо роста самых почтовых баз данных, в Exchange очень много место съедают различные логи. Особенно сильно проблема большого размера логов актуальна для версий, начиная с Exchange 2013. Если не использовать механизмы очистки логов, очень часто бывают случаи, когда почтовые базы аварийно отмонтируются и почтовый сервис становится недоступным для пользователей (часто сопровождается ошибкой 4.3.1 Insufficient system resources ) из-за того, что логи Exchange заняли все свободное место на диске. В этой статье мы рассмотрим несколько стратегий очистки (усечения) и перемещения лог файлов в Exchange Server 2013/2016/2019.
Транзакционные логи баз данных это важный элемент в Exchange Server. При отправке/получении любого письма Exchange сначала вносит информацию в транзакционный лог, и только потом сохраняет элемент непосредственно в базу данных. Транзакционные логи содержат все операции, которые выполняются с базой данных и крайне важны для ее восстановления. Размер одного лог файла 1 Мб. Таких файлов может быть очень много, их количество зависит от активности пользователей в базе данных.
Есть несколько способов очистки транзакционных логов:
Enable Circular logging
в свойствах базы) или PowerShell: Set-MailboxDatabase mbxDBname1 -CircularLoggingEnabled $true
(для применения изменений нужно перемонтировать базу); Move-Databasepath mbxDBname1 –EdbFilepath “F:DBmbxDBname1mbxDBname1.edb” –LogFolderpath “F:DBmbxDBname1logs”
В базе данных очередей Mail.que временно хранятся сообщения, ожидающие обработки. Все элементы в каждой очереди обрабатываются сервером транспорта в особом порядке. База данных очередей представляет собой обычную базу ESE. Очереди находятся только на mailbox или на edge transport серверах (тут зависит от версии Exchange, так как в 2013, 2016 и 2019 архитектура различается). Расположение базы данных очередей и ее транзакционных логов указывает в конфигурационном XML файле %ExchangeInstallPath%BinEdgeTransport.exe.config (QueueDatabasePath и QueueDatabaseLoggingPath). Если база очередей и ее транзакционные логи занимает очень много места, вы можете перенести ее из дефолтного каталога %ExchangeInstallPath%TransportRolesdataQueue
на другой диск (вот здесь это описано довольно подробно https://docs.microsoft.com/en-us/exchange/change-the-location-of-the-queue-database-exchange-2013-help?redirectedfrom=MSDN )
В транспортных логах Exchange хранится информацию о всех сообщениях обработанных службой MSExchangeTransport (по ссылке доступна статья о том как включить/отключить/переместить транспортные логи в Exchange — https://docs.microsoft.com/en-us/exchange/transport-logs-exchange-2013-help?redirectedfrom=MSDN ).
Вы можете проверить включены ли транспортные логи на вашем сервере и пути к ним с помощью следующих команд PowerShell:
Get-TransportService -Identity meskexch1 | fl *logpath*
Get-TransportService -Identity meskexch1| fl *logenabled*
Основные транспортные логи Microsoft Exchange Server по умолчанию хранятся в каталогах:
%ExchangeInstallPath%TransportRolesLogsHubConnectivity |
%ExchangeInstallPath%TransportRolesLogsMessageTracking ( используется при отслеживании писем через Get-MessageTrackingLog ) |
%ExchangeInstallPath%LoggingIRMLogs |
%ExchangeInstallPath%TransportRolesLogsHubActiveUsersStats |
%ExchangeInstallPath%TransportRolesLogsHubServerStats |
%ExchangeInstallPath%TransportRolesLogsHubProtocolLogSmtpReceive |
%ExchangeInstallPath%TransportRolesLogsHubRouting |
%ExchangeInstallPath%TransportRolesLogsHubProtocolLogSmtpSend |
%ExchangeInstallPath%TransportRolesLogsHubQueueViewer |
%ExchangeInstallPath%TransportRolesLogsHubAgentLog |
Можно изменить каталог для хранения SMTP логов отправки/получения ( Protocollogs ) через EAC: Servers -> servers -> выберите сервер -> Transport Logs -> Protocol log.
Если нужно изменить каталог хранения логов отслеживания Message Tracking , измените значение в поле Message Tracking log path в EAC.
Также с помощью символических ссылок вы можете спокойно перенаправить любой из каталогов транспортных логов на другой диск или даже сетевую папку (по UNC пути). Чтобы создать символическую ссылку , используется встроенная утилита mklink :
mklink /d "D:ReceiveSMTPLogs" \meskffs01exchangeHubReceiveSMTPLog
Останется только изменить путь к каталогу с логами с помощью командлета:
Set-TransportService meskexch1 –ReceiveProtocolLogPath “D:ReceiveSMTPLosg”
Таким образом вы можете хранить любые другие транспортные логи в сетевой папке на удаленном сервере.
В логах IIS накапливается информация о подключениях к почтовым ящикам Exchange через OWA и ActiveSync. Со временем логи IIS, генерируемые пользователями при доступе к Exchange, могут занимать довольно много места.
Вы можете автоматически удалять старые логи IIS. Можно сделать автоматическое задание в планировщике Windows, которое запускается каждый день и удаляет логи IIS старше 30 дней:
set-location c:inetpublogsLogFilesW3SVC1
foreach ($File in get-childitem) {
if ($File.LastWriteTime -lt (Get-Date).AddDays(-30)) {
del $File
}
}
Осталось создать новое задание в планировщике , которое должно запускать ваш PS1 скрипт очистки логов.
powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File c:psclear_iis_logs.ps1
Если вам нужны старые логи IIS для анализа и траблшутинга, вы можете перенести их на другой диск:
Также можно изменить путь к логам IIS через PowerShell:
Import-Module WebAdministration
Set-ItemProperty ‘IIS:SitesDefault Web Site’ -name logfile.directory "F:IISLogs"
Большое количество логов различных служб хранятся в каталоге Logging (например, в Exchange 2013 это C:Program FilesMicrosoftExchange ServerV15Logging). Со временем все эти логи начинают занимать довольно много места.
Особо стоит отметить логи диагностики и производительности в C:Program FilesMicrosoftExchange ServerV15LoggingDiagnostics (при включенной диагностике на высоком уровне они могут занимать десятки гигабайт).
Вы можете автоматически очищать старые логи Exchange в этих папках:
gci ‘C:Program FilesMicrosoftExchange ServerV15Logging’,’C:inetpublogs’ -Directory | gci -Include ‘*.log’,’*.blg’ -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-21) | Remove-Item
gci ‘C:Program FilesMicrosoftExchange ServerV15LoggingDiagnostics’ -Directory | gci -Include ‘*.log’,’*.blg’ -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-5) | Remove-Item
Можно добавить эти команды в задание Task Scheduler.
Можно объединить все рассмотренные выше команды для очистки старых логов Exchange в один PowerShell скрипт, который нужно запускать по расписанию:
$days = 15
$dirs=@(
"C:inetpublogsLogFiles"
""C:Program FilesMicrosoftExchange ServerV15Logging""
""C:Program FilesMicrosoftExchange ServerV15BinSearchCeresDiagnosticsETLTraces""
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…