你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本页提供了一个合并指南,用于排查与 Azure Chaos Studio 中使用的 Chaos 代理相关的问题。 使用本指南诊断安装过程中的问题、验证网络连接、解释代理状态消息并解决常见错误。
注释
有关详细的安装说明,请参阅 “安装和配置混沌代理 ”页。 有关网络和安全详细信息,请参阅 专用链接和网络安全。
代理安装问题
如果 Chaos Agent 无法安装或运行异常,请按照以下步骤进行调试:
-
扩展部署失败
-
症状:“虚拟机(VM)扩展”边栏选项卡显示除
Provisioning succeeded以外的状态(例如,“失败”、“错误”)。 - 故障排除步骤:
- 验证目标 VM 是否满足最低先决条件(自动安装支持的 OS、正确版本等)。 请参阅 OS 支持和兼容性。
- 确认用户分配的托管标识已附加到 VM。
- 在 Azure 门户中检查 活动日志 中是否存在与扩展部署相关的任何错误。
- 如果 VM 是虚拟机规模集的一部分,请确保规模集升级策略未设置为 “手动”。 如果是,请手动(使用
az vmss update-instances)升级实例或切换到 自动 策略。 - 请考虑通过在 VM 上禁用和重新启用基于代理的故障,使用 Azure CLI 或 Azure 门户卸载并重新安装扩展:
az vm extension delete --resource-group <ResourceGroup> --vm-name <VMName> --name ChaosAgent az vm extension set --resource-group <ResourceGroup> --vm-name <VMName> --name ChaosAgent --publisher Microsoft.Azure.Chaos --version <version>
-
症状:“虚拟机(VM)扩展”边栏选项卡显示除
网络连接问题
即使安装了代理,如果网络连接中断,它可能无法正常通信。
症状:
- 代理的“处理程序状态”未显示
Ready。 - 日志表示无法访问 Chaos Studio 代理服务终结点。
- 代理的“处理程序状态”未显示
故障排除步骤:
-
验证出站访问:
确保 VM 具有对 Chaos 代理服务终结点的出站网络访问权限,该终结点遵循以下模式:
https://<region>.agents.chaos-prod.azure.com
将region替换为 VM 的部署区域。 -
检查 NSG 和防火墙设置:
a。 请确认任何附加到虚拟机上的网络安全组(NSG)是否允许出站的 HTTPS(端口 443)流量。
b. 建议的方法是允许针对出站流量使用 ChaosStudio 服务标记。 -
代理和自定义 DNS:
如果环境使用代理或自定义 DNS 设置,请验证这些设置不会阻止对终结点的访问。 -
专用链接配置:
对于配置了专用链接的环境,请确保:a. 专用终结点已正确设置并获得批准。 b. DNS 解析已更新,以便混沌代理服务域解析为专用终结点的 IP。c. 代理的配置会相应地更新。
-
验证出站访问:
代理状态与健康检查
代理在 VM 的“扩展 + 应用程序”边栏选项卡上报告两个关键状态:
状态字段:
-
Provisioning succeeded:指示已成功部署扩展。 - 任何其他状态(例如,
Failed或Error)都表示安装问题。
-
处理程序状态字段:
-
Ready:指示代理正在运行并与 Chaos Studio 服务通信。 -
NotReady或空状态表明代理无法连接-通常是由于网络问题或配置错误的标识。
-
如何检查代理日志
Windows系统:
→ Windows 日志→应用程序打开事件查看器。 按源 AzureChaosAgent 进行筛选以查看相关的日志条目。Linux:
运行以下命令,查看 Chaos 代理服务的最新日志:journalctl -u azure-chaos-agent --lines 50
看看是否有错误消息指示出现连接或依赖关系问题。
混沌代理本地虚拟机调试
在主机上调试代理日志
-
Windows 代理本地调试
- 混沌代理作为 Windows 服务运行
AzureChaosAgent- Windows 服务代码在 VMExtention 处理程序中运行
- 代理位置
- 代理作为 Azure VM 扩展安装。 代理位置通常位于
C:\Packages\Plugins\Microsoft.Azure.Chaos.ChaosWindowsAgent\<version>. 目录包含AzureChaosAgent.exe和agentsettings.json以及库。
- 代理作为 Azure VM 扩展安装。 代理位置通常位于
- 获取主机上的代理日志:将代理日志推送到 Windows 服务日志。
- 用于检查最新 50 行代理日志的示例 PowerShell 命令:“'”Get-EventLog -LogName“Application”-Source“AzureChaosAgent”-Newest 50'''”。
- 主机上启动/停止代理
- 在管理员 PowerShell 中,运行
Start-Service AzureChaosAgent或Stop-Service AzureChaosAgent
- 在管理员 PowerShell 中,运行
- 混沌代理作为 Windows 服务运行
-
Linux 代理本地调试
- Linux 混沌代理由 Systemd 管理。
- 代理位置
- 如果代理正在运行,可以运行
ps aux | grep chaos来查找 Linux 代理可执行文件。
- 如果代理正在运行,可以运行
- 获取主机上的代理日志
- 用于获取最新 50 行代理日志的示例 bash 命令:
journalctl -u azure-chaos-agent --lines 50
- 用于获取最新 50 行代理日志的示例 bash 命令:
- 主机上启动/停止代理
- 运行 bash 命令
systemctl start azure-chaos-agent或systemctl stop azure-chaos-agent
- 运行 bash 命令
Linux 内存压力行为
在 Linux 系统上执行基于代理的物理内存压力故障时,你可能会发现实际实现的内存压力比配置的目标百分比低 5-10%。 例如,如果将测试配置为应用 80% 内存压力,则实际上系统可能仅经历 70% 到 75%。
为什么发生这种情况
Linux 内存管理与 Windows 明显不同,多个内核级行为可能会影响 Chaos Studio 和 stress-ng 能否达到完全配置的内存压力百分比:
页面缓存:Linux 使用可用内存来缓存磁盘 I/O(称为页面缓存)。 此内存在技术上“已使用”,但在需要时可用于回收。 类似
free工具的内存使用率较高,但available该列反映可回收内存。交换行为:即使已禁用交换,Linux 仍可能避免主动分配内存,以防止系统不稳定。 如果启用了交换,内核可能会将内存卸载到磁盘,从而减少感知到的压力。
内核线程的内存回收:内核使用后台线程,例如
kswapd在内存达到关键阈值之前回收内存。 这可以防止 Chaos Studio 将内存使用量推送到配置的百分比。内核预留:配置的百分比是从“内核认为它仍然可以提供给用户空间而不交换”计算得出的,这已排除:
- 内核保留页
- 大型页面池和崩溃内核预留
- 其他进程锁定的内存
- 内核决定无法快速回收的大多数页面缓存
在试验期间监视内存
若要更好地了解内存压力试验期间发生的情况,可以使用以下 Linux 工具:
-
top:按内存使用情况运行
top -E g并按M排序进程 - vmstat:显示一段时间内的内存统计信息。 有关详细信息,请参阅 vmstat 文档
- pidstat:提供详细的进程级内存统计信息
-
swapon:检查交换使用情况
swapon --show,查看内核是否正在使用交换空间
此行为在 Red Hat Enterprise Linux 8.x 环境中特别明显,尽管由于基础内核内存管理行为,可能会在其他 Linux 发行版上发生此行为。
其他常见错误和解决方案
混沌代理的其他一些问题及其相关解决方法。
凭据或标识错误
| 错误信息 | 原因 | 溶液 |
|---|---|---|
| “由于凭据错误,无法注册代理。” | VM 的托管标识未正确配置。 | 验证 VM 是否附加了正确的用户分配的托管标识,以及它是否具有所需的权限。 有关详细步骤,请参阅 “安装和配置混沌代理 ”页。 |
缺少故障执行的必备组件
| 错误信息 | 原因 | 溶液 |
|---|---|---|
| “由于 API 异常而无法注册代理。”或“未满足故障先决条件”(例如,Linux 上缺少 stress-ng) | 缺少所需的依赖项(例如 stress-ng)。 | 尝试卸载并重新安装 Chaos 代理。 在目标 VM 上安装缺少的依赖项。 例如,在 Debian/Ubuntu 上:sudo apt-get install stress-ng有关更多详细信息,请参阅 OS 支持和兼容性 页。 |
网络连接阻塞
| 错误信息 | 原因 | 溶液 |
|---|---|---|
“代理日志显示无法连接到 https://<region>.agents.chaos-prod.azure.com.” |
出站网络流量被阻止。 | 更新 NSG 规则以允许 HTTPS 流量流向 Chaos 代理服务终结点。 考虑对出站规则使用 ChaosStudio 服务标记。 对于使用专用链接的环境,请确保 DNS 正确解析到专用终结点的 IP 地址。 |
延长超时或 ExtensionHandlerFailed
| 错误信息 | 原因 | 溶液 |
|---|---|---|
| 活动日志中出现“ExtensionHandlerFailed”或超时错误。 | 代理扩展未正确启动,可能是因为网络或资源配置问题。 | - 重启 VM 并验证网络连接。 - 检查可能阻止扩展的任何干扰安全软件。 - 如果问题仍然存在,请使用 Azure CLI 重新安装扩展(请参阅安装故障排除步骤)。 |
更多资源
- 本文档旨在帮助用户快速诊断和解决 Chaos 代理的问题。 如需进一步帮助,请参阅我们的支持渠道或访问 Azure Chaos Studio 社区论坛。
-
安装和配置混沌代理
-
OS 支持和兼容性
-
专用链接和网络安全
-
混沌代理已知问题