通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

排查混沌代理问题

本页提供了一个合并指南,用于排查与 Azure Chaos Studio 中使用的 Chaos 代理相关的问题。 使用本指南诊断安装过程中的问题、验证网络连接、解释代理状态消息并解决常见错误。

注释

有关详细的安装说明,请参阅 “安装和配置混沌代理 ”页。 有关网络和安全详细信息,请参阅 专用链接和网络安全


代理安装问题

如果 Chaos Agent 无法安装或运行异常,请按照以下步骤进行调试:

  • 扩展部署失败
    • 症状:“虚拟机(VM)扩展”边栏选项卡显示除Provisioning succeeded以外的状态(例如,“失败”、“错误”)。
    • 故障排除步骤:
      1. 验证目标 VM 是否满足最低先决条件(自动安装支持的 OS、正确版本等)。 请参阅 OS 支持和兼容性
      2. 确认用户分配的托管标识已附加到 VM。
      3. 在 Azure 门户中检查 活动日志 中是否存在与扩展部署相关的任何错误。
      4. 如果 VM 是虚拟机规模集的一部分,请确保规模集升级策略未设置为 “手动”。 如果是,请手动(使用 az vmss update-instances)升级实例或切换到 自动 策略。
      5. 请考虑通过在 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>
        

网络连接问题

即使安装了代理,如果网络连接中断,它可能无法正常通信。

  • 症状:

    • 代理的“处理程序状态”未显示 Ready
    • 日志表示无法访问 Chaos Studio 代理服务终结点。
  • 故障排除步骤:

    1. 验证出站访问
      确保 VM 具有对 Chaos 代理服务终结点的出站网络访问权限,该终结点遵循以下模式:
      https://<region>.agents.chaos-prod.azure.com
      region 替换为 VM 的部署区域。
    2. 检查 NSG 和防火墙设置:
      a。 请确认任何附加到虚拟机上的网络安全组(NSG)是否允许出站的 HTTPS(端口 443)流量。
      b. 建议的方法是允许针对出站流量使用 ChaosStudio 服务标记。
    3. 代理和自定义 DNS:
      如果环境使用代理或自定义 DNS 设置,请验证这些设置不会阻止对终结点的访问。
    4. 专用链接配置:
      对于配置了专用链接的环境,请确保:a. 专用终结点已正确设置并获得批准。 b. DNS 解析已更新,以便混沌代理服务域解析为专用终结点的 IP。c. 代理的配置会相应地更新。

代理状态与健康检查

代理在 VM 的“扩展 + 应用程序”边栏选项卡上报告两个关键状态

  • 状态字段:

    • Provisioning succeeded:指示已成功部署扩展。
    • 任何其他状态(例如, FailedError)都表示安装问题。
  • 处理程序状态字段

    • 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.exeagentsettings.json以及库。
    • 获取主机上的代理日志:将代理日志推送到 Windows 服务日志。
      • 用于检查最新 50 行代理日志的示例 PowerShell 命令:“'”Get-EventLog -LogName“Application”-Source“AzureChaosAgent”-Newest 50'''”。
    • 主机上启动/停止代理
      • 在管理员 PowerShell 中,运行 Start-Service AzureChaosAgentStop-Service AzureChaosAgent
  • Linux 代理本地调试
    • Linux 混沌代理由 Systemd 管理。
    • 代理位置
      • 如果代理正在运行,可以运行 ps aux | grep chaos 来查找 Linux 代理可执行文件。
    • 获取主机上的代理日志
      • 用于获取最新 50 行代理日志的示例 bash 命令:journalctl -u azure-chaos-agent --lines 50
    • 主机上启动/停止代理
      • 运行 bash 命令 systemctl start azure-chaos-agentsystemctl stop azure-chaos-agent

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 重新安装扩展(请参阅安装故障排除步骤)。

更多资源