你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

用于故障排除的网络结构只读命令

排查网络设备问题是有效网络管理的关键方面。 确保基础结构的运行状况和最佳性能需要及时诊断和解决问题。 本指南提供了使用只读(RO)命令对 Azure 运营商 Nexus 设备进行故障排除的全面方法。

了解只读命令

RO 命令充当网络管理员的基本工具。 与修改设备配置的读写(RW)命令不同,RO 命令允许管理员在不更改设备状态的情况下收集诊断信息。 这些命令提供有关设备状态、配置和作数据的宝贵见解。 RO 命令还支持使用客户提供的存储帐户来存储使用 API 版本 2024-06-15-preview 的输出文件。

只读诊断 API

只读诊断 API 使用户能够通过 API 调用在网络设备上执行 show 命令。 这种高效的方法允许管理员跨所有网络结构设备远程运行诊断查询。 只读诊断 API 的主要功能包括:

  • 效率 - 在不直接访问设备控制台的情况下执行 show 命令。

  • 与 AZCLI 无缝集成:用户可以利用常规的 Azure Command-Line 接口(AZCLI)传递所需的“show 命令”。然后,API 有助于在目标设备上执行命令,从而提取输出。

  • JSON 输出:执行命令的结果以 JSON 格式显示,便于分析和分析。

  • 安全存储:输出数据存储在客户拥有的存储帐户中,确保数据安全性和合规性。

通过使用只读诊断 API,网络管理员可以在其 Azure作员 Nexus 设备上有效地排查问题、验证配置和监视设备运行状况。

先决条件

若要使用 Network Fabric 只读命令,请完成以下步骤:

  • 成功预配 Nexus Network Fabric。

  • 生成存储 URL。

    请参阅 创建容器 以创建容器。

    注释

    仅使用小写字母输入容器的名称。

    请参阅 生成共享访问签名 以创建容器的 SAS URL。 为 SAS 提供写入权限。

    注释

    SAS URL 的有效期较短。 默认情况下,它设置为在 8 小时后过期。 如果 SAS URL 过期,则必须重新修补结构。

  • 通过支持工单提供具有写入访问权限的存储 URL。

    注释

    存储 URL 必须位于不同于 Network Fabric 的区域。 例如,如果 Fabric 托管在美国东部,则存储 URL 应位于美国东部之外。

自带存储帐户

用户可以按照网络结构的自带存储指南中概述的步骤,使用自己的存储来存储 runRO 命令的输出文件。

注释

从 2024-06-15-preview API 更新开始,首选方法是自带存储帐户。 若要创建结构实例或将其与你的存储帐户相关联,用户应参考为网络结构配置自带 (BYO) 存储一文。

运行只读 (RO) 命令

Azure 运营商关系支持通过 Azure CLI 在结构设备上执行只读 show 命令。 此功能允许管理员检索诊断数据进行监视和故障排除,同时确保基础设备配置保持不变。

示例:通过 Azure CLI 执行 Read-Only 命令

可以使用 az networkfabric device run-ro 命令发出支持的 show 命令。 下面是演示如何查询设备版本详细信息的示例命令:

方案 1: 4000 个字符以下的响应(正确的 JSON 格式设置)

az networkfabric device run-ro \
  --resource-group "resource-group-name" \
  --resource-name "device-name" \
  --ro-command "show version"

resource-group-namedevice-name 替换为你的特定值。

预期输出

{
  "configurationState": "Succeeded",
  "deviceConfigurationPreview": {
    "architecture": "x86_64",
    "bootupTimestamp": 1742470725.3758163,
    "configMacAddress": "00:00:00:00:00:00",
    "hardwareRevision": "12.05",
    "hwMacAddress": "c4:ca:xx:xx:xx:35",
    "imageFormatVersion": "3.0",
    "imageOptimization": "Default",
    "internalBuildId": "2b2210fa-xxxx-xxxx-xxxx-f120aa00xxxx",
    "internalVersion": "4.xx.1F-39879738.xxxxx",
    "isIntlVersion": false,
    "memFree": 3760128,
    "memTotal": 8099732,
    "mfgName": "vendor",
    "modelName": "xxx-xxxxx-xx-x",
    "serialNumber": "JPA2303P3FH",
    "systemMacAddress": "c4:ca:xx:xx:xx:35",
    "uptime": 3648004.37,
    "version": "4.xx.1F"
  },
  "outputUrl": "https://<blob-url>/show_version.json"
}

[注意]此输出格式良好的 JSON,因为总内容在 4000 个字符的边界内。

方案 2:响应超过 4000 个字符(格式不正确)

截断的输出

{
  "configurationState": "Succeeded",
  "deviceConfigurationPreview": "{\n  \"lldpNeighbors\": {\n    \"Ethernet1/1\": {\n      \"lldpNeighborInfo\": [\n        {\n          \"chassisId\": \"c4ca.2b62.19b5\",\n          \"chassisIdType\": \"macAddress\",\n          \"lastChangeTime\": 1742470988.8675177,\n          ...
        }\n      ]\n    },\n    ...
  }",
  "outputUrl": "https://<blob-url>/lldp_neighbors_detail.json"
}

[注意]字段 deviceConfigurationPreview 不是 JSON 对象,而是包含转义 JSON 的字符串。 发生这种情况是因为实际输出大于 4000 个字符。 在这种情况下,CLI 输出中会丢失格式。

注释

输出结构可能因发出的特定 show 命令而异。
确保平台可以访问存储帐户 URL(在安装期间提供),以便安全地写入输出。

命令限制

为了确保安全性和符合性,RO 命令必须遵循以下特定规则:

  • 仅应提供绝对命令作为输入。 不支持简短表单和提示。 例如:
    • 输入 show interfaces Ethernet 1/1 status
    • 请勿输入 sh int statsh int e1/1 status
  • 命令不得为 null、空或仅包含单个单词。
  • 命令不得包含管道 (|) 字符。
  • 显示命令不受限制,但此限制列表中特别提到的高 CPU 密集型命令除外。
  • 命令不得以 tech-supportagent logsip routeip route vrf all结束。
  • 一次只能使用一个 show 命令在特定设备上。
  • 可以在另一个 CLI 窗口中并行运行 show 命令。
  • 可以同时在不同的设备上运行 show 命令。

使用只读命令进行故障排除

若要使用只读命令进行故障排除,请执行以下步骤:

  1. 提交一个微软支持请求。 支持工程师进行必要的更新。

  2. 执行以下 Azure CLI 命令:

    az networkfabric device run-ro --resource-name "<NFResourceName>" --resource-group "<NFResourceGroupName>" --ro-command "show version"
    

    预期输出:

    { }

  3. 输入以下命令:

    az networkfabric device run-ro --resource-group Fab3LabNF-6-0-A --resource-name nffab3-6-0-A-AggrRack-CE1 --ro-command "show version" --no-wait --debug
    

    显示以下(截断的)输出。 使用 私人预览复制 URL。 在以下步骤中使用 URL 的此部分来检查操作的状态。

    https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS2EUAP/operationStatuses/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*A9E6DB3DF5C58D67BD395F7A608C056BC8219C392CC1CE0AD22E4C36D70CEE5C?api-version=2022-01-15-privatepreview***&t=638485032018035520&c=MIIHHjCCBgagAwIBAgITfwKWMg6goKCq4WwU2AAEApYyDjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjQwMTMwMTAzMDI3WhcNMjUwMTI0MTAzMDI3WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALMk1pBZQQoNY8tos8XBaEjHjcdWubRHrQk5CqKcX3tpFfukMI0_PVZK-Kr7xkZFQTYp_ItaM2RPRDXx-0W9-mmrUBKvdcQ0rdjcSXDek7GvWS29F5sDHojD1v3e9k2jJa4cVSWwdIguvXmdUa57t1EHxqtDzTL4WmjXitzY8QOIHLMRLyXUNg3Gqfxch40cmQeBoN4rVMlP31LizDfdwRyT1qghK7vgvworA3D9rE00aM0n7TcBH9I0mu-96JE0gSX1FWXctlEcmdwQmXj_U0sZCu11_Yr6Oa34bmUQHGc3hDvO226L1Au-QsLuRWFLbKJ-0wmSV5b3CbU1kweD5LUCAwEAAaOCBAswggQHMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-
    
  4. 使用以下 Azure CLI 命令通过编程方式检查操作的状态:

    az rest -m get -u "<Azure-AsyncOperation-endpoint url>"
    

    操作状态指示 API 是否成功或失败,并显示的输出类似于以下内容:

    https://management.azure.com/subscriptions/xxxxxxxxxxx/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS/operationStatuses/xxxxxxxxxxx?api-version=20XX-0X-xx-xx
    
  5. 查看并下载生成的输出文件。 此处显示了示例输出。

     {
     "architecture": "x86_64",
      "bootupTimestamp": 1701940797.5429916,
      "configMacAddress": "00:00:00:00:00:00",
      "hardwareRevision": "12.05",
      "hwMacAddress": "c4:ca:2b:62:6d:d3",
      "imageFormatVersion": "3.0",
      "imageOptimization": "Default",
      "internalBuildId": "d009619b-XXXX-XXXX-XXXX-fcccff30ae3b",
      "internalVersion": "4.30.3M-33434233.4303M",
      "isIntlVersion": false,
      "memFree": 3744220,
      "memTotal": 8107980,
      "mfgName": "Arista",
      "modelName": "DCS-7280DR3-24-F",
      "serialNumber": "JPAXXXX1LZ",
      "systemMacAddress": "c4:ca:2b:62:6d:d3",
      "uptime": 8475685.5,
      "version": "4.30.3M"
     }