适用于:Azure Stack HCI 版本 22H2、Windows Server 2022、Windows Server 2019
本文介绍如何在 Azure Stack HCI 群集上收集软件定义的网络 (SDN) 的日志。
SDN 日志可帮助你识别和排查 SDN 环境中的复杂问题。 在联系 Azure 支持人员之前,请使用这些日志收集重要信息。
使用 SDN 日志还可以测试最近部署的 SDN 环境或重新测试现有的 SDN 部署。 除了收集日志外,还可以运行验证测试来获取 SDN 环境的状态并检查常见配置问题。
先决条件
在开始之前,请确保:
用于收集日志的客户端计算机能够访问 SDN 环境。 例如,一台运行 Windows Admin Center 的、可以访问 SDN 的管理计算机。
客户端计算机运行 PowerShell 5.1 或更高版本。
SDN 结构中的所有 SDN 资源运行同一版本的
SdnDiagnostics
模块。SDN 结构中的所有 SDN 资源配置为运行远程 PowerShell。 运行
Enable-PSRemoting
以配置远程 PowerShell。 有关详细信息,请参阅 Enable-PSRemoting 参考文档。
SDN 日志收集工作流
下面是大致的 SDN 日志收集工作流:
在客户端计算机上安装 SDN 诊断 PowerShell 模块
使用 SdnDiagnostics
PowerShell 模块简化 SDN 环境中的数据收集和诊断。 有关 SdnDiagnostics
的详细信息,请参阅 SdnDiagnostics wiki 页。
按照以下步骤在能够访问 SDN 环境的客户端计算机上安装 SdnDiagnostics
PowerShell 模块:
以管理员身份运行 PowerShell(5.1 或更高版本)。 如果需要安装 PowerShell,请参阅 在 Windows 上安装 powershell。
更新到
PackageManagement
的最新版本。 若要更新,请运行以下 cmdlet:Update-Module -Name PackageManagement -Force
若要安装
SdnDiagnostics
模块,请运行以下 cmdlet:Install-Module -Name SdnDiagnostics
或者,如果已安装
SdnDiagnostics
,请确保通过运行以下 cmdlet 来运行最新版本:Update-Module -Name SdnDiagnostics
若要导入
SdnDiagnostics
模块,请运行以下 cmdlet:Import-Module -Name SdnDiagnostics
若要确认加载到运行空间中的
SdnDiagnostics
模块版本,请运行以下 cmdlet:Get-Module -Name SdnDiagmostics
如果已将多个版本加载到运行空间中,建议删除并重新导入模块。
Remove-Module -Name SdnDiagnostics Import-Module -Name SdnDiagnostics
在 SDN 资源上安装 SDN 诊断 PowerShell 模块
在客户端计算机上安装 SdnDiagnostics
模块后,在 SDN 结构中的 SDN 资源上安装 SdnDiagnostics
模块。 这可以确保所有 SDN 资源运行同一版本的 SdnDiagnostics
模块。
在新的 PowerShell 窗口中按照以下步骤在网络控制器虚拟机 (VM) 上安装 SdnDiagnostics
模块:
若要获取环境详细信息,请运行以下 cmdlet:
Get-SdnInfrastructureInfo -NetworkController 'nc01.contoso.com'
- 环境详细信息将存储到全局变量中,可以通过访问
Global:SdnDiagnostics
在当前 PowerShell 运行空间中随时访问该变量。
- 环境详细信息将存储到全局变量中,可以通过访问
要在 SDN 基础设施节点上安装
SdnDiagnostics
模块,请运行以下 cmdlet:Install-SDNDiagnostics -ComputerName $Global:SdnDiagnostics.EnvironmentInfo.FabricNodes
以下输出说明如何获取环境详细信息:
PS C:\Users\AzureStackHCIUser> Get-SdnInfrastructureInfo -NetworkController 'nc01.contoso.com'
Name Value
---- ----
RestApiVersion V4.1
FabricNodes {nc01-pod06.tailwindtraders.com, nc02-pod06.tailwindtraders.com, nc03-pod06.tailwindt...
NcUrl https ://SDN-POD06.TAILWINDTRADERS.COM
Server {CPPE-P06N01.tailwindtraders.com, CPPE-P06N02.tailwindtraders.com, CPPE-P06N03.tailwi...
Gateway {nc01-pod06.tailwindtraders.com, nc02-pod06.tailwindtraders.com, nc03-pod06.tailwindt...
LoadBalancerMux
NetworkController
使用 SdnDiagnostics 收集 SDN 日志
在管理计算机上以及在 SDN 结构中的 SDN 资源上安装 SdnDiagnostics
模块后,即可运行 Start-SdnDataCollection
来收集 SDN 日志。
在运行 Start-SdnDataCollection 之前
在运行 Start-SdnDataCollection
cmdlet 之前需要考虑的几个事项:
完成
Start-SdnDataCollection
需要一段时间,具体取决于日志收集的角色、指定的持续时间,以及 Azure Stack HCI 环境中 SDN 结构服务器的数量。如果不指定
FromDate
参数,则默认会收集过去四个小时的日志。Start-SdnDataCollection
cmdlet 收集指定的 SDN 角色的配置状态和日志。 接受的值为:Gateway、NetworkController、Server、SoftwareLoadBalancer。 可以指定安装在 SDN 环境中的角色,或不按预期工作的角色。如果未指定任何凭据,则
Start-SdnDataCollection
cmdlet 默认使用当前用户的凭据。
运行 Start-SdnDataCollection
使用 Start-SdnDataCollection
cmdlet 收集有关 SDN 的当前配置状态和诊断日志的信息。
下面是 Start-SdnDataCollection
cmdlet 的语法:
Start-SdnDataCollection [-NetworkController <String>] [-NcUri <Uri>] -Role <SdnRoles[]> [-OutputDirectory <FileInfo>] [-IncludeNetView] [-IncludeLogs] [-FromDate <DateTime>] [-ToDate <DateTime>] [-Credential <PSCredential>] [-NcRestCredential <PSCredential>] [-Limit <Int32>] [-ConvertETW <Boolean>] [<CommonParameters>]
有关参数和规范的详细信息,请参阅 Start-SdnDataCollection wiki 页。
从大型 SDN 群集中收集日志
一些 SDN 群集可能非常庞大,每个角色都有大量节点。 在这些情况下,Start-SdnDataCollection
将限制收集的数据量,由 -Limit
参数强制执行。 此参数是可选的,目前默认为 16,这意味着数据收集将限制为每个角色的前 16 个节点。 这旨在防止收集过多数据。
可以更新 -Limit
参数,但是无法控制选择哪个节点,因为它通常会按字母顺序选择数组中的第一个节点。
针对数据收集的特定节点
为了更具体地了解为哪些节点收集数据,可以定义 -ComputerName
参数,这是一个字符串数组。 SdnDiagnostics
模块将自动执行映射以识别每个节点的适当角色,然后按正常方式处理。
# this command is being executed on a Network Controller node directly
Get-SdnInfrastructureInfo
$computers = @()
$computers += $Global:SdnDiagnostics.EnvironmentInfo.NetworkController # will add all the network controllers
$computers += 'Host01','Host02' # will add specific computers
Start-SdnDataCollection -ComputerName $computers -IncludeLogs -FromDate (Get-Date).AddHours(-2)