在 Azure Stack HCI 中收集软件定义的网络的日志

适用于: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 模块:

  1. 以管理员身份运行 PowerShell(5.1 或更高版本)。 如果需要安装 PowerShell,请参阅 在 Windows 上安装 powershell

  2. 更新到 PackageManagement 的最新版本。 若要更新,请运行以下 cmdlet:

    Update-Module -Name PackageManagement -Force
    
  3. 若要安装 SdnDiagnostics 模块,请运行以下 cmdlet:

    Install-Module -Name SdnDiagnostics
    
  4. 或者,如果已安装 SdnDiagnostics,请确保通过运行以下 cmdlet 来运行最新版本:

    Update-Module -Name SdnDiagnostics
    
  5. 若要导入 SdnDiagnostics 模块,请运行以下 cmdlet:

    Import-Module -Name SdnDiagnostics
    
  6. 若要确认加载到运行空间中的 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 模块:

  1. 若要获取环境详细信息,请运行以下 cmdlet:

    Get-SdnInfrastructureInfo -NetworkController 'nc01.contoso.com'
    
    • 环境详细信息将存储到全局变量中,可以通过访问 Global:SdnDiagnostics 在当前 PowerShell 运行空间中随时访问该变量。
  2. 要在 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)

后续步骤