收集群集的诊断数据
适用于: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 诊断工具并使其保持最新
- 计划每日诊断运行(这些运行对系统影响很小,通常在后台运行不超过五分钟,并且在群集上占用的空间不超过 500MB)
- 查看事先收集的诊断信息(如果你需要将其提供给支持部门或自行进行分析)
若要安装 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 核心网络产品小组维护的网络诊断和故障排除工具。
在 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 目录提取到 $env:PSModulePath
指向的正确 PowerShell 模块路径
# 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
的 zip 输出中的文件。
运行状况摘要报告
运行状况摘要报告保存为:
- 0_CloudHealthSummary.log
此文件是在分析所有收集的数据后生成的,旨在提供系统的快速摘要。 该结构包含:
- 系统信息
- 存储运行状况概述(启动的节点数、联机资源数、联机群集共享卷数、不正常的组件数等)
- 有关不正常组件(脱机、出现故障或联机但挂起的群集资源)的详细信息
- 固件和驱动程序信息
- 池、物理磁盘和卷详细信息
- 存储性能(收集性能计数器)
该报告会持续更新,以包含更多有用信息。 有关最新信息,请参阅 GitHub README。
日志和 XML 文件
该脚本运行各种日志收集脚本,并将输出保存为 XML 文件。 我们会收集群集和运行状况日志、系统信息 (MSInfo32)、未筛选的事件日志(故障转移群集、dis 诊断、Hyper-V、存储空间等)和存储诊断信息(操作日志)。 有关收集哪些信息的最新信息,请参阅 GitHub README(我们收集的内容)。
如何通过 Get-SDDCDiagnosticInfo 使用 XML 文件
可以从 Get-SDDCDiagnosticInfo
cmdlet 收集的数据中提供的 XML 文件使用数据。 这些文件包含有关虚拟磁盘、物理磁盘、基本群集信息和其他 PowerShell 相关输出的信息。
若要查看这些输出的结果,请打开 PowerShell 窗口并运行以下步骤。
ipmo storage
$d = import-clixml <filename>
$d