你当前正在访问 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-name
和 device-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 stat
或sh int e1/1 status
- 输入
- 命令不得为 null、空或仅包含单个单词。
- 命令不得包含管道 (|) 字符。
- 显示命令不受限制,但此限制列表中特别提到的高 CPU 密集型命令除外。
- 命令不得以
tech-support
、agent logs
、ip route
或ip route vrf all
结束。 - 一次只能使用一个
show
命令在特定设备上。 - 可以在另一个 CLI 窗口中并行运行
show
命令。 - 可以同时在不同的设备上运行
show
命令。
使用只读命令进行故障排除
若要使用只读命令进行故障排除,请执行以下步骤:
提交一个微软支持请求。 支持工程师进行必要的更新。
执行以下 Azure CLI 命令:
az networkfabric device run-ro --resource-name "<NFResourceName>" --resource-group "<NFResourceGroupName>" --ro-command "show version"
预期输出:
{ }
输入以下命令:
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-
使用以下 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
查看并下载生成的输出文件。 此处显示了示例输出。
{ "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" }