清理Exchange 2013和2016的Log檔案(精華)

再见亦是泪20發表於2024-10-16

清理Exchange 2013和2016的Log檔案(精華)

清理Exchange 2013和2016的Log檔案

【摘要】

在你的Exchange 2013/2016的環境中,你可能會發現你的系統盤會很快被佔用了很多空間,並且如果你不理會它的話,很快你的系統盤剩餘空間就會告急了。

這是因為Exchange 2013/2016預設的日誌記錄行為導致的,微軟為了更好地提供相關日誌供管理員查詢而不是需要時才去開啟日誌記錄。

但是系統盤對於我們來說又是何等重要,如果不清理這些日誌的話,我們的系統將很快面臨“崩潰”的邊緣。

【正文】

Exchange 2013/2016預設會在如下路徑產生很多的日誌記錄:C:\Program Files\Microsoft\Exchange Server\V15\Logging\,另外還有在Exchange 2013的CU6以後,還會在如下路徑建立很多.etl的檔案:C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces\,Exchange 會在這個路徑下建立50MB一個的etl檔案,並且最多生產100個,這就佔用了系統盤5GB的空間了。

除了上述這些日誌,Exchange的CAS角色上面,還將產生大量的IIS Log,預設路徑也是在系統盤裡:C:\inetpub\logs\LogFiles,IIS的Log也不會自動清理,時間長了幾十GB的資料量都是很常見的。

下面我們來簡單談談這些日誌記錄。

一、 Diagnostic Log檔案

Exchange有個健康管理,收集了很多系統健康相關的資料,如果你的系統盤很充裕的話,這當然沒什麼問題,但是通常我們的系統盤都是比較緊張的,所以,可以的話,我們可以禁用這項功能:

1. 開啟【服務】管理器;

2. 找到【Microsoft Exchange Health Manager】服務;

3. 將這個服務的啟動型別修改為【禁用】;

4. 如果服務現在正在執行,那麼可以停止這個服務;

5. 找到另一個叫【Microsoft Exchange Diagnostics】的服務,同樣禁用和停止這個服務;

6. 開啟任務計劃,依次點選找到Microsoft→Windows→PLA;

7. 在選中PLA後,在右邊欄有兩個任務計劃,停止並禁用它們;

8. 接下來開啟如下路徑C:\Program Files\Microsoft\Exchange Server\V15\Logging\Diagnostic,將如下兩個資料夾中下面的Log檔案進行刪除;

二、 ETL 檔案

ETL檔案每個50MB,預設將產生最多100個檔案,那就是佔用了5GB的空間了,檔案路徑如下:C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces,對於這下面的資料夾,你可以放心地刪除,並不會對系統造成什麼影響。對應的還有一個Log資料夾,如下:C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\Logs,也是記錄了大量的日誌。

我們可以透過修改登錄檔的方式來修改這個數量,使其總量得到下降:

登錄檔路徑:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\16.0\Search\Diagnostics\Tracing,登錄檔鍵值:MaxTraceFileCount,將值修改為你想要的數量就可以了。

三、 IIS Log 檔案

IIS Log檔案就很常見了,只要是利用到了Windows的IIS功能的,都會產生很多的Log檔案,預設路徑是C:\inetpub\logs\LogFiles,在這路徑下通常有這兩個資料夾W3SVC1和W3SVC2,這些Log檔案不會自動清理,是會很煩人的,一不小心就讓系統盤剩餘空間告急了。當然這些日誌也是可以隨意刪除的,如果你不需要用它來做問題的跟蹤和排查的話。

IIS的Log資料夾位置也是可以修改的,不要將其放在系統盤的話,磁碟空間的問題應該就好辦了,具體修改路徑的方法比較簡單,隨便百度一下就有了,就不在這裡贅述了。

跟IIS相關的Log檔案還有RpcHttp和HttpProxy,路徑分別如下:C:\Program Files\Microsoft\Exchange Server\V15\Logging\RpcHttp,C:\Program Files\Microsoft\Exchange Server\V15\Logging\HttpProxy。這些Log檔案都可以進行刪除,保留大約2-4周的量用於問題故障排查就好了。

定期清理以上所提及的Log檔案,這將大大節省你係統盤的可用空間。當然,如果讓管理員每天或者每週手動去清理,那也是不太好使的,那麼這裡奉上一個Powershell指令碼,可設定成定期的任務計劃執行去清除相應路徑下的Log檔案。指令碼格式是ps1字尾的, 內容如下:

Set-Executionpolicy RemoteSigned

$days=14

$IISLogPath="C:\inetpub\logs\LogFiles\"

$ExchangeLoggingPath="C:\Program Files\Microsoft\Exchange Server\V15\Logging\"

$ETLLoggingPath="C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\ETLTraces\"

$ETLLoggingPath2="C:\Program Files\Microsoft\Exchange Server\V15\Bin\Search\Ceres\Diagnostics\Logs"

Function CleanLogfiles($TargetFolder)

{

write-host -debug -ForegroundColor Yellow -BackgroundColor Cyan $TargetFolder

if (Test-Path $TargetFolder) {

$Now = Get-Date

$LastWrite = $Now.AddDays(-$days)

$Files = Get-ChildItem $TargetFolder -Recurse | Where-Object {$_.Name -like "*.log" -or $_.Name -like "*.blg" -or $_.Name -like "*.etl"} | where {$_.lastWriteTime -le "$lastwrite"} | Select-Object FullName

foreach ($File in $Files)

{

$FullFileName = $File.FullName

Write-Host "Deleting file $FullFileName" -ForegroundColor "yellow";

Remove-Item $FullFileName -ErrorAction SilentlyContinue | out-null

}

}

Else {

Write-Host "The folder $TargetFolder doesn't exist! Check the folder path!" -ForegroundColor "red"

}

}

CleanLogfiles($IISLogPath)

CleanLogfiles($ExchangeLoggingPath)

CleanLogfiles($ETLLoggingPath)

CleanLogfiles($ETLLoggingPath2)

透過以上的日誌清理,並執行任務計劃的清除指令碼,那麼你的系統盤空間應該是可以過上一個比較安穩的日子了,但是也建議定期(每個季度)進行一次巡查,避免真出現磁碟空間不足的情況。

相關文章