收集叢集的診斷數據
適用於:Azure Stack HCI 版本 22H2 和 21H2、Windows Server 2022、Windows Server 2019、Windows Server 2016
重要
Azure Stack HCI 現在是 Azure 本機的一部分。 產品檔案重新命名正在進行中。 不過,舊版的 Azure Stack HCI,例如 22H2 會繼續參考 Azure Stack HCI,而且不會反映名稱變更。 深入了解。
儲存空間直接存取 中有許多診斷工具,可用來收集數據,以針對 Azure Stack HCI 和 Windows Server 叢集進行疑難解答。 在本文中,我們將著重於安裝和使用 SDDC 診斷工具來收集相關信息,以協助您診斷叢集。
由於記錄和其他資訊密集,本文中提供的資訊有助於針對已呈報的進階問題進行疑難解答,而且可能需要將數據傳送至Microsoft以進行分級。
搭配 Windows Admin Center 安裝和使用診斷工具
您可以使用 Windows Admin Center(1812 版及更新版本)來:
- 安裝 SDDC 診斷工具並將其保持在最新狀態
- 排程每日診斷執行 (這些對系統的影響很低,通常需要不到 5 分鐘的時間才能在背景中執行,而且不會佔用超過 500 MB 的叢集)
- 如果您需要提供診斷資訊來支援或自行分析,請檢視先前收集的診斷資訊
若要安裝 SDDC 診斷工具並開始收集資料,請遵循下列步驟:
啟動 Windows Admin Center,然後選取 [ 工具 > 診斷]。 如果尚未安裝診斷工具,請按兩下 [ 安裝] 按鈕。
若要開始收集診斷數據,請按兩下 [ 收集]。 您應該會看到「收集診斷資訊」的訊息。 這可能需要幾分鐘的時間。初始數據收集之後,如果您想要每隔 24 小時自動收集數據,請將滑桿變更為 [開啟]。
在您看到下列螢幕快照之前,數據收集尚未完成。 若要檢視收集的診斷資訊,請選擇 [ 下載] (.zip) 或 [在檔案中開啟] 工具。
使用 PowerShell 安裝 Get-SDDCDiagnosticInfo
您可以使用 Get-SDDCDiagnosticInfo
PowerShell Cmdlet (也稱為 ,先前稱為 Get-PCStorageDiagnosticInfo
Test-StorageHealth
)來收集故障轉移叢集 (叢集、資源、網路、節點)、儲存空間 (實體磁碟、機箱、虛擬磁碟)、叢集共用磁碟區、SMB 檔案共用和重複數據刪除的健康情況檢查。
有兩種方法可以安裝腳本:PowerShell 資源庫 和 GitHub。 以下概述這兩者。
PowerShell 資源庫
PowerShell 資源庫 是 GitHub 存放庫的快照集。 請注意,從 PowerShell 資源庫 安裝專案需要最新版的 PowerShellGet 模組,其可在 Windows 10、Windows Management Framework (WMF) 5.0 或 MSI 安裝程式中取得(適用於 PowerShell 3 和 4)。
我們在此程式期間也安裝最新版 的 Microsoft 網路診斷工具 ,因為 Get-SDDCDiagnosticInfo
依賴此程式。 此指令清單模組包含網路診斷和疑難解答工具,此工具是由 Microsoft Microsoft 核心網路產品群組所維護。
您可以在 PowerShell 中以系統管理員身分執行下列命令來安裝模組:
Install-PackageProvider NuGet -Force
Install-Module PrivateCloud.DiagnosticInfo -Force
Import-Module PrivateCloud.DiagnosticInfo -Force
Install-Module -Name MSFT.Network.Diag
若要更新模組,請在 PowerShell 中執行下列命令:
Update-Module PrivateCloud.DiagnosticInfo
GitHub
GitHub 存放庫是模組的最新版本,因為我們在這裡持續反覆執行。 若要從 GitHub 安裝模組,請從 封存 下載最新的模組,並將 PrivateCloud.DiagnosticInfo 目錄解壓縮到所指向的正確 PowerShell 模組路徑 $env:PSModulePath
# Allowing Tls12 and Tls11 -- e.g. github now requires Tls12
# If this is not set, the Invoke-WebRequest fails with "The request was aborted: Could not create SSL/TLS secure channel."
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$module = 'PrivateCloud.DiagnosticInfo'
Invoke-WebRequest -Uri https://github.com/PowerShell/$module/archive/master.zip -OutFile $env:TEMP\master.zip
Expand-Archive -Path $env:TEMP\master.zip -DestinationPath $env:TEMP -Force
if (Test-Path $env:SystemRoot\System32\WindowsPowerShell\v1.0\Modules\$module) {
rm -Recurse $env:SystemRoot\System32\WindowsPowerShell\v1.0\Modules\$module -ErrorAction Stop
Remove-Module $module -ErrorAction SilentlyContinue
} else {
Import-Module $module -ErrorAction SilentlyContinue
}
if (-not ($m = Get-Module $module -ErrorAction SilentlyContinue)) {
$md = "$env:ProgramFiles\WindowsPowerShell\Modules"
} else {
$md = (gi $m.ModuleBase -ErrorAction SilentlyContinue).PsParentPath
Remove-Module $module -ErrorAction SilentlyContinue
rm -Recurse $m.ModuleBase -ErrorAction Stop
}
cp -Recurse $env:TEMP\$module-master\$module $md -Force -ErrorAction Stop
rm -Recurse $env:TEMP\$module-master,$env:TEMP\master.zip
Import-Module $module -Force
如果您需要在離線叢集上取得此模組,請下載 zip、將它移至您的目標伺服器節點,然後安裝模組。
使用 PowerShell 收集記錄
啟用事件通道並完成安裝程序之後,您可以使用 Get-SDDCDiagnosticInfo
模組中的 PowerShell Cmdlet 來取得:
- 報告記憶體健康情況,以及狀況不良元件的詳細數據
- 依集區、磁碟區和重複數據刪除磁碟區的記憶體容量報告
- 來自所有叢集節點的事件記錄和摘要錯誤報告
假設您的記憶體叢集名稱 為 「CLUS01」。
若要對遠端記憶體叢集執行:
Get-SDDCDiagnosticInfo -ClusterName CLUS01
若要在叢集記憶體節點上本機執行:
Get-SDDCDiagnosticInfo
若要將結果儲存至指定的資料夾:
Get-SDDCDiagnosticInfo -WriteToPath D:\Folder
以下是在真實叢集上的外觀範例:
New-Item -Name SDDCDiagTemp -Path d:\ -ItemType Directory -Force
Get-SddcDiagnosticInfo -ClusterName S2D-Cluster -WriteToPath d:\SDDCDiagTemp
如您所見,腳本也會驗證目前的叢集狀態:
所有資料都會寫入 SDDCDiagTemp 資料夾:
文稿完成之後,它會在用戶目錄中建立 ZIP:
讓我們在文字文件中產生報表:
#find the latest diagnostic zip in UserProfile
$DiagZip=(get-childitem $env:USERPROFILE | where Name -like HealthTest*.zip)
$LatestDiagPath=($DiagZip | sort lastwritetime | select -First 1).FullName
#expand to temp directory
New-Item -Name SDDCDiagTemp -Path d:\ -ItemType Directory -Force
Expand-Archive -Path $LatestDiagPath -DestinationPath D:\SDDCDiagTemp -Force
#generate report and save to text file
$report=Show-SddcDiagnosticReport -Path D:\SDDCDiagTemp
$report | out-file d:\SDDCReport.txt
Get-SDDCDiagnosticInfo 輸出
以下是 壓縮輸出 Get-SDDCDiagnosticInfo
中包含的檔案。
健康情況摘要報告
健康情況摘要報告會儲存為:
- 0_CloudHealthSummary.log
此檔案會在剖析所收集的數據之後產生,並旨在提供您系統的快速摘要。 其包含:
- 系統資訊
- 記憶體健康情況概觀 (節點數目增加、資源上線、叢集共用磁碟區在線、狀況不良的元件等)
- 狀況不良元件的詳細資料(離線、失敗或線上擱置的叢集資源)
- 韌體和驅動程序資訊
- 集區、實體磁碟和磁碟區詳細數據
- 記憶體效能(收集效能計數器)
此報表會持續更新,以包含更有用的資訊。 如需最新資訊,請參閱 GitHub 自述檔。
記錄檔和 XML 檔案
腳本會執行各種記錄收集腳本,並將輸出儲存為 xml 檔案。 我們會收集叢集和健康情況記錄、系統資訊 (MSInfo32)、未篩選的事件記錄檔(故障轉移叢集、dis 診斷、Hyper-V、儲存空間等等),以及記憶體診斷資訊(作業記錄)。 如需所收集資訊的最新資訊,請參閱 GitHub 自述文件(我們收集的內容)。
如何從 Get-SDDCDiagnosticInfo 取用 XML 檔案
您可以從 Cmdlet 所收集的數據 Get-SDDCDiagnosticInfo
中提供的 XML 檔案取用數據。 這些檔案具有虛擬磁碟、實體磁碟、基本叢集資訊和其他PowerShell相關輸出的相關信息。
若要查看這些輸出的結果,請開啟 PowerShell 視窗並執行下列步驟。
ipmo storage
$d = import-clixml <filename>
$d