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

教程:使用 Azure SRE 智能体预览版对应用服务应用进行故障排除

注释

Azure SRE 代理已登录。 通过使用 SRE 代理,您同意产品特定的 Microsoft Azure 补充使用条款

站点可靠性工程 (SRE) 侧重于通过自动化和主动管理创建可靠、可缩放的系统。 Azure SRE 智能体通过提供 AI 支持的监视、故障排除和修正功能,将这些原则引入云环境。

SRE 智能体可自动执行日常操作任务,并提供推理见解,帮助你在减少手动干预的同时保持应用程序可靠性。 SRE 智能体以聊天机器人的形式提供服务,因此你可以提出问题并提供自然语言命令来维护应用程序和服务。 为了确保准确性和控制,智能体代表你执行的任何操作都需要经过你的批准。

本教程中的示例应用通过以受控方式模拟 HTTP 500 故障来演示错误检测。 你可以使用 Azure 应用服务部署槽位并行运行各种应用配置,从而安全地测试这些方案。

通过将 INJECT_ERROR 应用设置设置为 1来启用错误模拟。 启用此设置后,应用会在你选择该按钮几次后引发 HTTP 500 错误。 然后,你可以查看 SRE 智能体如何对应用程序故障作出响应。

在本教程中,你将:

  • 使用 Azure 门户创建应用服务应用。
  • 从 GitHub 部署示例应用。
  • 使用启动命令配置应用并启用日志记录。
  • 创建部署槽来模拟故障。
  • 设置智能体以监视应用。
  • 通过交换到故障槽位来触发失败。
  • 使用 AI 驱动的聊天,通过回滚交换来诊断和解决问题。

先决条件

若要创建代理,需要向代理授予正确的权限、配置正确的设置以及授予对适当资源的访问权限:

  • Azure 帐户:需要一个具有活动订阅的 Azure 帐户。 如果还没有帐户,可以免费创建一个帐户

  • 安全性上下文:请确保用户帐户具有Microsoft.Authorization/roleAssignments/write用户访问管理员 权限。

  • 防火墙设置:在防火墙设置中将 *.azuresre.ai 添加到允许列表。 默认情况下,某些网络配置文件可能会阻止访问 *.azuresre.ai 域。

1.创建应用服务应用

首先创建 SRE 智能体可以监视的 Web 应用:

  1. 登录到 Azure 门户

  2. 在搜索栏上,搜索应用服务,然后在结果中选择它。

  3. 选择“+创建”“Web 应用”>

  4. 在“基本信息”选项卡中提供以下详细信息

    在“项目详细信息”中,输入以下值:

    设置 价值
    Subscription 你的 Azure 订阅
    资源组 新建>my-app-service-group

    在“实例详细信息”中,输入以下值:

    设置 价值
    名称 my-sre-app
    发布 代码
    运行时堆栈 .NET 9 (STS)
    操作系统 Windows操作系统
    Region 你附近的区域
  5. 选择“ 部署 ”选项卡。

  6. “身份验证设置”下,启用 基本身份验证

    注释

    基本身份验证随后将用于 GitHub 的一次性部署。 在生产环境中禁用基本身份验证

  7. 选择“查看并创建”,然后在通过验证后选择“创建”

    部署完成后,系统将显示“部署已完成”消息。

2.部署示例应用

创建应用服务应用后,请从 GitHub 部署示例应用程序:

  1. 在 Azure 门户中,通过选择“转到资源”来转到新建的应用服务应用。

  2. 在左侧菜单的“部署”部分,选择“部署中心”

  3. 在“设置”选项卡上,配置以下值:

    资产 价值
    来源 外部 Git
    存储库 https://github.com/Azure-Samples/app-service-dotnet-agent-tutorial
    分支 main
  4. 选择 “保存” 以应用部署设置。

3.验证示例应用

部署后,确认示例应用按预期运行:

  1. 在应用服务应用的左侧菜单中,选择“概览”。

  2. 选择“浏览”以在新的浏览器选项卡中打开应用(可能需要一分钟才能加载)。

  3. 应用显示一个大型计数器和两个按钮。

    主槽中 .NET 示例的屏幕截图。

    选择“ 递增 ”按钮多次观察计数器增加情况。

4.为故障模拟设置部署槽

若要模拟应用故障方案,请添加辅助部署槽位:

  1. 在应用服务应用的左侧菜单的“部署”部分,选择“部署槽位”

  2. 选择 添加插槽

  3. 输入以下值:

    资产 价值 注解
    名称 broken 错误场景在此槽位中触发。
    克隆以下源的设置 my-sre-app 此属性从主应用复制配置。
  4. 滚动到窗格底部,然后选择“添加”。 槽位创建可能需要一分钟才能完成。

将示例应用部署到槽位

  1. 创建槽位后,从列表中选择故障槽位。

  2. 在左侧菜单的“部署”部分,选择“部署中心”

  3. 在“设置”选项卡上,配置以下值:

    资产 价值
    来源 外部 Git
    存储库 https://github.com/Azure-Samples/app-service-dotnet-agent-tutorial
    分支 main
  4. 选择 “保存” 以应用部署设置。

添加应用设置以启用错误模拟

若要控制错误模拟,请配置应用在运行时检查的应用设置:

  1. 在应用服务应用左侧菜单的“设置”部分,选择“环境变量”

  2. 在顶部,请确保选择了正确的槽位(例如“故障”)。

  3. 在“应用设置”选项卡上选择“+ 添加”

  4. 输入以下值:

    资产 价值 注解
    名称 INJECT_ERROR 必须一字不差地为 INJECT_ERROR(所有字母大写,无空格)
    价值 1 在应用中启用错误模拟
  5. 确保未选择“部署槽位设置”框

  6. 选择 “应用” 以添加设置。

  7. “环境变量 ”页底部,选择“ 应用” 以应用更改。

  8. 出现提示时,选择“确认”以确认并重启所选槽位中的应用。

5. 创建智能体

现在,创建一个智能体来监视应用服务应用:

  1. 按照引导电子邮件中提供的链接访问 Azure 门户中的 SRE 智能体。

  2. 选择+ 新建

  3. 在“创建智能体”窗格中,输入以下值:

    资产 价值 注解
    Subscription 你的 Azure 订阅
    资源组 my-sre-agent-group 智能体的新组。
    名称 my-sre-agent
    Region 美国东部 2
  4. 选择“选择资源组”

  5. 在“要监视的所选资源组”窗格上,选中 my-app-service-group 旁边的复选框。

  6. 选择“保存”

  7. 返回“创建智能体”窗格,选择“创建”。 代理创建过程需要几分钟才能完成。

6.与代理聊天

部署智能体并连接到资源组后,可以使用自然语言与其交互,以监视应用并对应用进行故障排除:

  1. 在 Azure 门户中,搜索并选择 Azure SRE 代理

  2. 在智能体列表中,选择 my-app-service-sre-agent

  3. 选择 “与代理聊天”。

  4. 在聊天框中,输入以下命令:

    List my App Service apps
    
  5. 智能体使用部署在 my-app-service-group 资源组中的应用服务应用列表作为响应。

智能体可以看到你的应用,这表明你已准备好模拟故障,并让智能体帮助你解决它。

7. 中断应用

通过交换到中断的部署槽位来模拟故障方案:

  1. 在应用服务应用的左侧菜单的“部署”部分,选择“部署槽位”

  2. 选择“交换”。

  3. 在“交换”窗格中,配置以下值:

    资产 价值 注解
    来源 my-sre-app-broken 具有错误版本的槽位
    目标 my-sre-app 生产槽
  4. 滚动到底部,然后选择“ 开始交换”。 交换作可能需要一分钟才能完成。

  5. 交换完成后,打开应用的 URL。

    损坏插槽中 .NET 示例的屏幕截图。

  6. 选择“增量”按钮六次。

  7. 应用应会出现故障并返回 HTTP 500 错误。

  8. 多次刷新页面(通过按 Command+R 或 F5),以生成更多 HTTP 500 错误。 这些错误有助于 SRE 智能体检测和诊断问题。

8.修复应用

现在应用遇到故障,请使用 SRE 智能体来诊断和解决此问题:

  1. 在 Azure 门户中,搜索并选择 Azure SRE 代理

  2. 在智能体列表中,选择 my-app-service-sre-agent

  3. 选择 “与代理聊天”。

  4. 在聊天框中,输入以下命令:

    What's wrong with my-sre-app?
    
  5. 代理开始分析应用的运行状况。 应会看到与可用性、CPU 和内存使用情况以及最近的槽交换相关的诊断消息。

    每个会话可能都有所不同,但应显示类似于以下示例的消息:

    “现在我将通过换回槽位,对 my-sre-app 执行缓解措施,使应用程序恢复至正常状态。 请注意,换回槽位不一定能立即恢复正常状态。 我将随时告知了解进度。

  6. 暂停后,代理会提示你批准回滚:

    执行槽位交换回滚以针对 my-sre-app 还原应用程序可用性

    [批准][拒绝]

  7. 选择 “批准 ”以启动回滚。

  8. 回滚完成后,智能体将确认:

    my-sre-app 的槽位交换已成功完成(时间戳)。 已还原生产槽。 我现在将继续执行缓解后的步骤:

    我将请你提供正确的 GitHub 仓库 URL,以便就交换相关的停机问题提交问题。我将监控应用程序,并在 5 分钟内提供可用性更新。

    请提供您希望提交问题的 GitHub 存储库 URL。

9. 验证修复是否有效

SRE 智能体回滚槽位交换后,确认应用正常运行:

  1. 通过在“概述”页上选择“浏览”,在浏览器中打开应用服务应用。

  2. 您会看到不再显示“已启用错误注入”文本,这表明应用已恢复为其原始状态。

  3. 选择“增量”按钮六次以确保未显示任何错误。

清理资源

如果不再需要在本教程中创建的应用和智能体,可以删除关联的资源组以避免产生费用。

在本教程中,你创建了以下资源组:

  • my-app-service-group(应用服务资源组)
  • my-sre-agent-group(SRE 智能体资源组)

对每个资源组使用以下步骤:

  1. 在 Azure 门户中,转到资源组

  2. 选择要删除的资源组。

  3. 在“概述”选项卡上,选择“删除资源组”。

  4. 在确认对话框中,输入资源组的名称。

  5. 选择 删除。 删除需要几分钟才能完成。