依症狀排解 Chaos Studio 工作區問題:資源未被發現、權限遺失、情境執行失敗或動作跳過。 本指南同時涵蓋工作空間場景的代理連線。 對於舊版模型中的實驗、目標和功能,請參閱 Experiments (classic) troubleshooting。
Important
Chaos Studio 的工作空間與場景目前已公開預覽。 Microsoft 提供此預覽版「現況」與「可用狀態」,不受服務等級協議或有限保固保護。 Microsoft 以盡力而為的方式提供預覽版的客戶支援。 這個預覽並非為製作用途設計。 欲了解更多資訊,請參閱以下文章:
確認你使用的是 Chaos Studio Workspaces
本文涵蓋Microsoft.Chaos/workspaces和Microsoft.Chaos/workspaces/scenarios資源。 如果你的資源類型是 Microsoft.Chaos/experiments 或 Microsoft.Chaos/targets,你用的是 Experiments(經典版)。 改用 Troubleshoot Experiments(經典版) 吧。 要將您的實驗移轉到 Workspaces,請參閱 Move from Experiments (classic) to Chaos Studio Workspaces。
選擇範圍或查看資源時「找不到資源」
你的工作區顯示沒有發現的資源,或者在你設定情境時資源清單是空的。 以下列表依據最可能的原因排序。
原因 1:受控身分識別在範圍中沒有讀者角色
探索需要工作區的受控身分識別來讀取範圍內的資源。 如果身分識別尚未在範圍內具備讀者角色,探索將找不到任何東西。
- 在 Azure 入口網站開啟工作區。 如果身份缺少權限,入口網站會顯示橫幅:「此工作區的管理身份在工作區範圍內沒有讀取權限。 若沒有該範圍的讀取存取權限,工作區作業可能會失敗。選取在工作區範圍指派讀者角色,以自動修正此指派。
- 如果您無法使用自動指派,請手動在範圍 (訂用帳戶、資源群組或服務群組) 將讀者角色授與工作區的受控身分識別。 請參閱 Chaos Studio 工作區中的權限與身份。
- 角色指派需要幾分鐘才會生效。 等等,然後重新整理資源檢視。
原因二:該範圍不包含支援的資源類型
Discovery 只會顯示 Chaos Studio Scenarios 支援的資源類型。 如果你的範圍只包含不支援型別,資源清單會保持空,即使範圍本身有效。
- 將你範圍內的資源與 Azure Chaos Studio 中每個情境列出的資源類型做比較。
- 如有需要,請將工作區範圍變更為包含包含支援資源的訂閱或資源群組。 你可以更改範圍,而不必重新建立工作區。
這個問題的常見例子是:Azure Kubernetes Service (AKS) 叢集的虛擬機擴展集節點位於獨立的管理基礎設施資源群組中,因此只包含叢集資源的範圍可能無法產生可操作的計算目標。 請參考 Chaos Studio 在 AKS 上的測試工作負載韌性。
原因 3:探索仍在進行中或資訊已過舊
探索會在您建立工作區或變更其範圍後執行,且可能需要幾分鐘才能完成。 最近部署的資源也需要時間才能出現。
- 等幾分鐘,然後重新整理資源檢視。 Discovery 會自動偵測範圍變更;不需要手動觸發。
修正服務群組範圍的權限失敗問題
對於設定為服務群組的工作區,情境設定頁面的 「修正權限 」選項可能會失敗,或顯示無法修復缺少的權限。 這是公開預覽時已知的問題。 作為一個變通方法,請手動分配所需角色:
- 在 Azure 入口網站中,前往您希望工作區套用的範圍 (若為服務群組,請在底層訂用帳戶或包含目標資源的資源群組層級進行指派)。
- 選擇存取控制 (IAM)>新增>新增角色指派。
- 將讀者角色 (用於探索) 以及任何動作特定角色 (用於執行) 指派給工作區的受控身分識別。 關於每個動作所需的角色,請參見 Chaos Studio 工作空間中的權限與身份。
- 請等待幾分鐘,讓指派完成傳播,然後再重新整理工作區。
情境執行失敗,或動作顯示「失敗」且沒有細節
情境運行以失敗狀態結束,或是單一行動無明顯原因失敗。 請依序查看以下資料來源:
- 情境報告的動作摘要。 報告列出每個動作及其狀態、持續時間、目標資源及參數,通常會將失敗範圍縮小到特定的行動與資源。 請參閱 Azure Chaos Studio 中的 Scenario 報告。
- 跳過與失敗。 跳過的動作未執行,通常是因為目標資源未在工作空間範圍內找到,或動作的前提條件未被滿足。 執行 失敗 動作並遇到錯誤。 如果全部都顯示為「已略過」而不是「失敗」,請參閱 執行作業不會造成任何影響。
- 目標資源的 Azure 活動日誌。 Service-direct Actions 執行 Azure Resource Manager 的操作,這些操作會出現在目標資源的 Azure 活動日誌中。 其中,失敗的作業會包含底層錯誤的詳細資訊。
- 目標資源的角色分配。 驗證工作區的受控身分識別具有每個動作對目標資源所需的角色 (例如,關閉虛擬機器所需的「虛擬機參與者」角色),而不只是該範圍上的「讀者」角色。 讀取器角色足以讓工作區發現資源,但無法對其採取行動:若執行角色缺失,受影響的動作在執行時即失敗。 請參閱 Chaos Studio 工作空間中權限與身份的角色表。
- 基於代理的動作在設定時失敗。 如果代理程式的動作,如 CPU 壓力或實體記憶體壓力,在代理安裝階段失敗,通常網路設定會阻擋代理與 Chaos Studio 的連線。 請參見「連接混沌代理人與 Chaos Studio 的問題」。
一次執行不會造成任何影響(所有動作皆略過)
執行作業會完成,但每個動作都會顯示為 已略過 狀態,且沒有任何資源受到干擾。
這個症狀表示情境的行動沒有找到匹配的目標。 每個行動都針對特定類型的資源。 例如,計算區域停機情境中的動作以虛擬機器和虛擬機器擴展集為目標。 如果工作區範圍不包含這些資源類型(或設定的篩選器,例如目標可用性區域,沒有匹配到任何實例),動作會跳過而非失敗。
- 開啟情境報告的動作摘要,並記錄各類資源跳過的動作目標。 請參閱 Azure Chaos Studio 中的 Scenario 報告。
- 確認工作區範圍包含這些類型的資源,且情境的設定參數(如
zones)是否與實際存在的資源相符。 - 如果你預期的資源分布在與範圍不同的資源群組,請調整範圍。 最常見的實例是 AKS,節點虛擬機縮放集存在於獨立的基礎設施資源群組中。 請參考 Chaos Studio 在 AKS 上的測試工作負載韌性。
建立工作區時顯示「區域無法使用」
工作區是邏輯資源,可以對任何 Azure 區域的資源進行操作。 工作區本身的區域不必與目標資源的區域相符。 如果你選擇的區域建立工作區失敗,請從 工作區區域可用性列表中 選擇另一個區域,並在那裡建立工作區。 你的劇本仍可鎖定原始區域的資源。
傳送門在情境設計器或「我的情境」中表現異常
工作區與情境目前處於公開預覽階段,入口網站體驗會隨著預覽演進頻繁更新。 你在編輯或設定情境時,偶爾會遇到短暫的問題。 修正會在預覽期間持續發表。 (該節最後更新:2026年7月。)
如果你遇到非預期行為:
- 重新整理入口網站,然後重新開啟 Scenario,並在執行之前確認其已儲存的設定。
- 如果一個流程沒有提示你預期的值,試試另一個:透過 「我的情境 」來設定情境,而不是設計器,或反過來。
- 如果問題持續,請回報。
連接混沌代理與 Chaos Studio 的問題
基於代理的情境,如 CPU 壓力和實體記憶體壓力,會透過 Chaos 代理在你的虛擬機中執行。 Chaos Studio 會把代理安裝到你的虛擬機(VM)上。 客服人員必須連接 Chaos Studio 的外撥連線以註冊、接收故障指示並回報健康狀況。 其他情境,例如DNS中斷,則不會使用代理,因此你可以跳過這部分。 關於目標虛擬機需求,請參見 基於代理的情境需求。 如果網路設定阻擋了代理的連線,故障就無法在該目標上執行,代理程式會被報告為不健康或無法使用。
代理程式發起所有透過 HTTPS(TCP 443)的外發通訊;Chaos Studio 從來不會連進你的虛擬機。 預設情況下,Azure 允許虛擬機到網際網路的外出流量,因此大多數子網不需要允許代理連線的規則。 只有在限制輸出流量時,才需要輸出允許規則,例如使用拒絕全部 NSG 規則、防火牆或強制通道時。 在這種情況下,Chaos Studio 代理端點會被ChaosStudio服務標籤保護,因此你可以透過引用服務標籤而非固定 IP,允許它加入網路安全群組(NSG)和防火牆規則。
ChaosStudio服務標籤不是區域性的,所以涵蓋所有區域的 Chaos Studio 端點。 Chaos Studio 代理程式端點是區域性的:其名稱中的 <region> 是您建立工作區所在的區域,而不是虛擬機器所在的區域。
你可以在情境執行頁面辨識出連線問題。 如果代理在設定時無法連線,執行會在任何動作執行前失敗,執行頂部會出現錯誤橫幅顯示代理失敗訊息。 對於網路問題,訊息以 開頭 Failed to register agent due to Network Exception.,接著是底層錯誤,例如名稱解析失敗或連線逾時。 利用該訊息來辨識以下問題中哪一個適用。
在處理個別問題前,請確認虛擬機的有效網路配置允許以下情況:
| 目的地 | 註釋 |
|---|---|
| 預設輸出存取 | 透過 NAT 閘道、負載平衡器輸出規則或實例層級的公用 IP。 如果虛擬機的子網預設外出存取被停用(屬於私有子網),則必須使用。 |
| Chaos Studio 代理程式端點 | 允許使用 ChaosStudio 服務標籤。 |
IMDS 169.254.169.254 |
連結本機。 不得被主機防火牆或使用者自訂路由阻擋。 |
代理無法連線,因為子網沒有外出存取權限
這個問題是最常見的原因。 Chaos 代理程式透過網際網路連接到 Chaos Studio,因此虛擬機的子網需要外接連線。 如果子網是私有的(預設的出站存取被停用),且沒有明確的出站方式,代理就無法連上 Chaos Studio,所以永遠連線不上。 新建立的子網路預設是私有的,因此這個問題通常影響最近建立的虛擬機。
以下分頁說明如何檢查子網路,並在 Azure 入口網站或 Azure CLI 中套用修正。
檢查子網路。 打開虛擬機的虛擬網路,選擇子網路,並檢查是否選擇 了私有子網路 。 如果是,該子網預設的出站存取是被關閉的。
你可以用兩種方法解決這個問題。
選項一:重新啟用子網的預設出站存取權限。 如果環境允許,請清除該子網路的 私有子網 選項,讓它重新公開。 詳情請參閱 Azure 中的預設外撥存取。
選項二:給虛擬機一個明確的外送方法(Azure 推薦)。 如果你無法讓子網路公開,可以新增明確的出站路徑。 依偏好順序:
- 建議在子網路設置 NAT 閘道,適用於大多數情況。
- 具有輸出規則的標準負載平衡器,如果虛擬機器已經位於負載平衡器後方。
- 虛擬機網路介面上的標準公共 IP,即使在私有子網路中也能運作,且適合單一虛擬機使用。
- 具備使用者定義路由(UDR)的防火牆或網路虛擬設備 ,將出站流量路由至該設備。
代理無法連線,因為網路安全群組會阻擋出站流量
子網或網卡上的 NSG 會拒絕 TCP 443 向 Chaos Studio 代理端點發出,無論是透過明確的拒絕規則,或是因為自訂規則集移除了預設的允許上網行為。 對端點發出的 HTTPS 連線隨後會逾時或遭到拒絕。
要解決這個問題,請檢視虛擬機網卡上的有效外站規則,然後為服務標籤新增允許規則 ChaosStudio 。
- 在 Azure 入口網站中,打開虛擬機並選擇網路。
- 請檢視網卡和子網路安全群組的出站埠規則,看看有沒有規則會拒絕 TCP 443 的出站流量。
- 新增一條允許 Chaos Studio 代理程式端點的輸出安全性規則。 將 Destination 設為 服務標籤,將 目的地服務標籤 設為 ChaosStudio,將 目的地連接埠範圍 設為 443,將 協定 設為 TCP,並將 動作 設為 允許。 將該規則的優先順序設為高於任何相互衝突的拒絕規則(亦即較小的數字)。
代理無法連線,因為防火牆、代理伺服器或自訂 DNS 會阻擋該端點
防火牆、代理伺服器或自訂 DNS 設定會阻止虛擬機抵達或解決 Chaos Studio 代理端點。 即使與其他網站的連線可能正常,Chaos Studio 仍可能被封鎖,且代理程式無法註冊或回報健康狀態。
若要排除遭封鎖的流量:
- 在支援服務標籤的防火牆上(例如 Azure 防火牆),允許透過 TCP 443 對
ChaosStudio服務標籤的輸出連線。 - 在代理伺服器或任何依主機名稱篩選的裝置上,允許
as.<region>.chaos-prod.azure.com在 TCP 443 上,這裡<region>是你建立工作區的區域。 - 若要修正名稱解析,請確保虛擬機器可以解析公用代理程式端點。 不要建立會遮蔽 Chaos Studio 代理程式端點的私人 DNS 區域。
Note
代理程式無法設定為使用指定 Proxy。 Chaos Studio 每次執行都會安裝並移除代理程式,所以你無法在它上設定代理設定。 如果您的環境要求對外連線的應用程式使用已設定的 Proxy,請改為允許代理程式傳送至 ChaosStudio 服務標籤的流量略過 Proxy。
代理無法取得管理身份令牌
虛擬機沒有指派管理身份,或有主機防火牆或路由阻擋 IMDS 存取。169.254.169.254 代理程式始終無法進行到註冊步驟。 確認已指派受管理身份,並從虛擬機內部查詢 IMDS:
az vm identity show --resource-group myResourceGroup --name myVm
## User-assigned managed identity (pass the client_id from the extension's auth.msi.clientid)
curl -s -H "Metadata: true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2019-06-01&resource=https://chaosagentcommunicationapi.azure.com/&client_id=<uami-client-id>" \
--max-time 10
## System-assigned managed identity (omit the identifier; IMDS returns the VM's system-assigned token)
curl -s -H "Metadata: true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2019-06-01&resource=https://chaosagentcommunicationapi.azure.com/" \
--max-time 10
如果缺少系統指派或使用者指派的受控識別,請指派一個,並移除任何會封鎖 169.254.169.254 的主機防火牆規則或路由。 IMDS 使用連結本機位址,不需要網際網路輸出流量。
縮小失效層的範圍
在受影響的虛擬機內部執行這些指令,以隔離出故障的那一層。 在端點中, <region> 是你建立工作區的區域,而不是虛擬機的區域:
# 1. Managed Identity Token
## User-assigned managed identity (pass the client_id from the extension's auth.msi.clientid)
curl -s -H "Metadata: true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2019-06-01&resource=https://chaosagentcommunicationapi.azure.com/&client_id=<uami-client-id>" \
--max-time 10
## System-assigned managed identity (omit the identifier; IMDS returns the VM's system-assigned token)
curl -s -H "Metadata: true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2019-06-01&resource=https://chaosagentcommunicationapi.azure.com/" \
--max-time 10
# 2. DNS resolution of the Chaos Studio agent endpoint
nslookup as.<region>.chaos-prod.azure.com
# 3. Outbound HTTPS to the Chaos Studio agent endpoint (expect HTTP 200)
curl -v https://as.<region>.chaos-prod.azure.com/health --max-time 15
- 指令 1 失敗:虛擬機沒有受管理身份,或 IMDS 被封鎖。 你看 ,代理人無法取得管理身份的憑證。
- 指令 2 失敗:DNS 問題。 請看: 代理無法連線,因為防火牆、代理伺服器或自訂 DNS 會阻擋該端點。
- 指令 3 回傳 HTTP 200:虛擬機可透過網路連線至 Chaos Studio。 這只確認了網路可達性。 它無法確認代理是否能註冊,而註冊同時也需要指令 1 中的管理身份憑證。
- 指令三次失敗或無法連線,而指令一和二成功:通往 Chaos Studio 的網路路徑被封鎖。 請參閱本節前述的子網外撥存取、NSG 或防火牆與代理問題。
在你修正網路設定後,再跑一次這個情境。 當情境執行失敗時,Chaos Studio 會清理它安裝的代理程式,這樣就不會有代理在背景重複嘗試。 重新執行情境會重新安裝代理程式,之後代理程式會使用您更新後的設定進行連線。