排查网络设备问题是有效网络管理的关键方面。 确保基础结构的运行状况和最佳性能需要及时诊断和解决问题。 本指南提供了使用只读(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 应位于美国东部之外。
注释
作为我们对安全性和现代化的持续承诺的一部分,我们宣布,将在 Azure Operator Nexus 2508.1 版本中结束对通过共享访问签名(SAS)URL 方式访问客户提供的存储帐户的支持。
自带存储帐户
用户可以按照网络结构自带存储指南中的步骤,自带存储以保存 runRO 命令的输出文件。
注释
从 2024-06-15 预览版 API 更新开始,自带存储帐户是首选方法。 用户应创建 Fabric 实例或将其与存储帐户关联,并参考 配置自身(BYO)存储以用于 Network Fabric 文章。
运行只读 (RO) 命令
Azure 操作员 Nexus 支持通过 Azure CLI 在构造设备上执行只读显示命令。 此功能允许管理员检索诊断数据进行监视和故障排除,同时确保基础设备配置保持不变。
示例:通过 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命令。
使用只读命令进行故障排除
若要使用只读命令进行故障排除,请执行以下步骤:
打开Microsoft支持票证。 支持工程师进行必要的更新。
执行以下 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" }