對網路設備進行故障排除是有效網路管理的關鍵方面。 確保基礎設施的運作狀態和最佳效能需要及時診斷和解決問題。 在本指南中,我們會提供使用唯讀 (RO) 命令針對 Azure 操作員連接點裝置進行疑難排解的完整方法。
瞭解唯讀指令
RO 命令是網路管理員的重要工具。 與修改裝置配置的讀寫 (RW) 命令不同,RO 命令允許管理員收集診斷資訊,而無需更改裝置的狀態。 這些命令提供了有關設備狀態、配置和操作資料的寶貴見解。 RO 命令也支援使用客戶提供的儲存體帳戶,使用 API 版本 2024-06-15-preview 來儲存輸出檔案。
唯讀診斷應用程式介面
唯讀診斷 API 可讓使用者透過 API 呼叫在網路裝置上執行 show 命令。 這種高效的方法允許管理員跨所有網路結構裝置遠端執行診斷查詢。 唯讀診斷 API 的主要功能包括:
效率 — 執行命令,
show無需直接存取裝置主控台。與 AZCLI 無縫整合:使用者可以利用常規的 Azure Command-Line 介面 (AZCLI) 傳遞所需的「show 命令」。然後,API 有助於在目標裝置上執行命令,取得輸出。
JSON 輸出:執行命令的結果以 JSON 格式呈現,易於解析和分析。
安全儲存:輸出資料儲存在客戶擁有的儲存帳戶中,確保資料的安全性和合規性。
藉由使用唯讀診斷 API,網路系統管理員可以有效率地針對問題進行疑難排解、驗證設定,以及監視其 Azure 操作員連接點裝置的裝置健康情況。
先決條件
若要使用 Network Fabric 唯讀命令,請完成下列步驟:
成功佈建Nexus網路網狀架構。
產生儲存體 URL。
請參閱 建立容器 以建立容器。
備註
僅使用小寫字母輸入容器名稱。
請參閱產生 共用存取簽章, 以建立容器的 SAS URL。 提供 SAS 的寫入權限。
備註
SAS URL 的存留時間很短。 預設情況下,它設定為在八小時後到期。 如果 SAS URL 到期,則必須重新修補網狀架構。
透過支援工單提供具有 WRITE 存取權的儲存 URL。
備註
儲存體 URL 必須位於與網路網狀架構不同的區域。 例如,如果 Fabric 裝載於美國東部,則儲存體 URL 應該位於美國東部之外。
備註
作為我們持續致力於安全性和現代化的一部分,我們宣佈終止對客戶提供的儲存體帳戶 Azure 操作員連接點 2508.1 版本的共用存取簽章 (SAS) URL 型存取的支援。
自備儲存帳戶
使用者可以遵循 自帶您自己的儲存體 for Network Fabric 指南中概述的步驟,以儲存 runRO 指令的輸出檔案。
備註
從 2024-06-15-preview API 更新開始,使用自有的儲存帳戶是推薦的方法。 使用者應該建立網狀架構執行個體或將網狀架構執行個體與您的儲存體帳戶產生關聯,請參閱 設定網路網狀架構的 Bring-Your-Own (BYO) 儲存體 一文。
執行唯讀 (RO) 指令
Azure Operator Nexus 支援透過 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命令。
使用唯讀命令來排解疑難
若要使用唯讀命令進行疑難排解,請遵循下列步驟:
開啟 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" }