收集群集的诊断数据

适用于:Azure Stack HCI 版本 22H2 和 21H2;Windows Server 2022、Windows Server 2019、Windows Server 2016

使用存储空间直通中的各种诊断工具,可以收集所需的数据来排查 Azure Stack HCI 和 Windows Server 群集的问题。 本文重点介绍如何安装和使用 SDDC 诊断工具来收集相关信息,以帮助对群集进行诊断。

由于日志和其他信息非常密集,本文中提供的信息有助于排查已升级的且可能需要将数据发送到 Azure 进行会审的复杂问题。

通过 Windows Admin Center 安装和使用诊断工具

可以使用 Windows Admin Center(1812 和更高版本)来执行以下操作:

  • 安装 SDDC 诊断工具并使其保持最新。
  • 计划每日诊断运行(这些运行对系统影响很小,通常在后台运行不超过五分钟,并且在群集上占用的空间不超过 500MB)。
  • 如果需要向支持人员提供诊断信息,或自行分析,请查看以前收集的诊断信息。

若要安装 SDDC 诊断工具并开始收集数据,请执行以下步骤:

  1. 启动 Windows Admin Center 并选择“工具”>“诊断”。 如果尚未安装诊断工具,请单击“安装”按钮。

    单击“安装”以安装 SDDC 诊断工具。

  2. 若要开始收集诊断数据,请单击“收集”。 此时应会出现一条消息,指出“正在收集诊断信息。 这可能需要几分钟时间。”在初始数据收集后,如果想要每 24 小时自动收集一次数据,请将滑块更改为“开”"。

    单击“收集”以收集诊断数据。

  3. 只有在看到以下屏幕截图之后,数据收集才算完成。 若要查看收集的诊断信息,请选择“下载(.zip)”或“在文件工具中打开” 。

    若要查看诊断信息,可以下载 .zip 文件或在文件工具中打开。

使用 PowerShell 安装 Get-SDDCDiagnosticInfo

可以使用 Get-SDDCDiagnosticInfo PowerShell cmdlet(也称为 Get-PCStorageDiagnosticInfo,以前称为 Test-StorageHealth)来收集日志,并对以下项目执行运行状况检查:故障转移群集(群集、资源、网络、节点)、存储空间(物理磁盘、机箱、虚拟磁盘)、群集共享卷、SMB 文件共享以及重复数据消除。

可通过两种方法安装该脚本:PowerShell 库和 GitHub。 下面概述了这两种方法。

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 目录提取到指向的正确 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

如你所看到的,该脚本还会验证当前群集状态:

数据收集 PowerShell 屏幕截图。

所有数据都写入 SDDCDiagTemp 文件夹:

文件资源管理器中的数据的屏幕截图。

脚本完成后,它会在用户目录中创建 zip 文件:

PowerShell 中数据 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

此处提供了示例报告示例 zip 的链接供参考。

Get-SDDCDiagnosticInfo 输出

以下文件包含在压缩的 Get-SDDCDiagnosticInfo输出中。

健康状况摘要报告

运行状况摘要报告保存为 0_CloudHealthSummary.log

此文件是在分析所有收集的数据后生成的,旨在提供系统的快速摘要。 它包含:

  • 系统信息。
  • 存储运行状况概述(节点数增加、资源联机、群集共享卷联机、不正常组件等)。
  • 有关状态异常组件的详细信息(处于脱机、失败或等待联机状态的群集资源)。
  • 固件和驱动程序信息。
  • 池、物理磁盘和卷详细信息。
  • 存储性能(收集性能计数器)。

此报告会不断更新,以包含更有用的信息。 有关最新信息,请参阅 GitHub 自述文件

日志和 XML 文件

该脚本运行各种日志收集脚本,并将输出保存为 XML 文件。 我们会收集群集和运行状况日志、系统信息 (MSInfo32)、未筛选的事件日志(故障转移群集、dis 诊断、Hyper-V、存储空间等)和存储诊断信息(操作日志)。 有关收集哪些信息的最新信息,请参阅 GitHub 自述文件(我们收集的内容)。

如何通过 Get-SDDCDiagnosticInfo 使用 XML 文件

可以从由 Get-SDDCDiagnosticInfo cmdlet 收集的数据中提供的 XML 文件中获取数据。 这些文件包含有关虚拟磁盘、物理磁盘、基本群集信息和其他 PowerShell 相关输出的信息。

若要查看这些输出的结果,请打开 PowerShell 窗口并运行以下命令:

ipmo storage
$d = import-clixml <filename>
$d

后续步骤

在此处 提交问题,反馈你希望看到的内容。 此外,欢迎通过提交拉取请求对脚本做出有益的改进。