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

使用 Azure SRE 代理对应用服务应用进行故障排除(预览版)

注释

Azure SRE 代理目前处于预览阶段。 通过使用 SRE 代理,你同意特定于产品的 预览版使用条款

站点可靠性工程(SRE)侧重于通过自动化和主动管理创建可靠、可缩放的系统。 SRE 代理通过提供 AI 支持的监视、故障排除和修正功能,将这些原则引入云环境。 SRE 代理可自动执行日常作任务,并提供推理见解来帮助维护应用程序可靠性,同时减少手动干预。 作为聊天机器人提供,可以提出问题并提供自然语言命令来维护应用程序和服务。 为了确保准确性和控制,代表你执行的任何代理作都需要你的批准。

此示例应用通过以受控方式模拟 HTTP 500 故障来演示错误检测。 可以使用 Azure 应用服务 部署槽位安全地测试这些方案,这样就可以并行运行不同的应用配置。

通过将应用设置设置为 INJECT_ERROR1 来启用错误模拟。 启用后,应用会在单击多个按钮后引发 HTTP 500 错误,使你可以看到 SRE 代理如何响应应用程序故障。

在本教程中,你将:

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

如果没有 Azure 帐户,请在开始前创建一个免费帐户

先决条件

若要完成本教程,需要:

  • 一个 Azure 订阅
  • 为 SRE 代理设置创建角色分配(基于角色的访问控制管理员或用户访问管理员)的 Microsoft.Authorization/roleAssignments/write 权限。

1.创建应用服务应用

首先创建 SRE 代理可以监视的 Web 应用。

  1. 登录到 https://portal.azure.com

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

  3. 选择 “+ 创建 ”,然后选择 “Web 应用”。

配置“基本信息”选项卡

“基本信息 ”选项卡中,提供以下详细信息:

项目详细信息

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

实例详细信息

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

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

    注释

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

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

  4. 部署完成后,会看到 部署已完成

2.部署示例应用

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

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

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

  3. “设置” 选项卡中,配置:

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

3.验证示例应用

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

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

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

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

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

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

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.创建 Azure SRE 代理

现在,创建一个 Azure SRE 代理来监视应用服务应用。

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

  2. 选择+ 新建

  3. “创建代理 ”窗口中,输入以下值:

    资产 价值 注解
    订阅 你的 Azure 订阅
    资源组 my-sre-agent-group Azure SRE 代理的新组
    名称 my-sre-agent
    区域 瑞典中部 在预览期间是必需的;可以监视任何 Azure 区域中的资源
    选择角色 参与者 授予代理代表你执行操作的权限
  4. 选择“选择资源组”

  5. “要监视的所选资源组”窗口 中,搜索并选择 my-app-service-group

  6. 选择“保存”

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

6.与代理聊天

部署 SRE 代理并将其连接到资源组后,可以使用自然语言与其交互,以监视和排查应用问题。

  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(Azure SRE 代理资源组)
  1. 在 Azure 门户,导航到“资源组”。

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

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

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

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

后续步骤