练习 - 定义运行状况状态、指标和阈值

已完成

在本练习中,我们继续使用之前创建的运行状况模型结构。 你的任务是量化示例应用程序的各个组件的运行状况状态。

在运行状况模型结构中,首先从用户流的顶部开始评估层,然后转到较低层。

用户流运行状况状态

到目前为止,我们发现了两个用户流:列出目录项和添加注释。 若要确定每个流的运行状况状态,请提出如下问题:

  • 何时将用户流视为正常?
  • 它可以在降级状态下运行吗?

根据实现和功能要求,确定参与用户流的应用程序组件。 这些组件在示例体系结构组件中描述。

用户流 组件
列出目录项 前端内部 Web 应用程序,目录 API
添加注释 前端内部 Web 应用程序、目录 API、后台处理器

如果这些组件中的任何一个变得不正常,则用户流预计会变得不正常。

注意

某些应用程序可以在特殊的“降级”模式下运行。 例如,如果 Contoso Shoes 实现本地浏览器缓存,则使用 Web 应用程序的员工可以创建注释,但无法发送注释,并且在目录 API 恢复正常(浏览器可以持续检查)之前不会更新客户视图。

应用程序组件运行状况状态

确定影响组件运行状况的指标。 在此步骤中,需要了解组件的功能。 提出以下问题:

  • API 中的处理时间是可以接受的,以保持良好的用户体验?
  • 是否有任何预期错误? “正常”错误率是多少?
  • “正常”处理时间是多少? 如果处理时间高于正常时间,这意味着什么?
  • 如果无法访问 Azure Cosmos DB,写入操作会发生什么情况?

这些问题应会引导你获得关键指标的特定且可度量的阈值。 例如,可以考虑目录 API 组件的这些阈值。

指标和阈值 运行状况
响应时间 < 150 毫秒失败请求计数 < 10 Healthy
响应时间 < 300 毫秒失败请求计数 < 50 已降级
响应时间 > 300 毫秒失败请求计数 > 50 不正常

可以从应用程序监视解决方案(如 Application Insights)获取值。

Azure 资源运行状况状态

Azure 服务运行状况状态基于特定资源。 例如,Azure Cosmos DB 报告数据库事务单位 (DTU) 利用率,Azure 应用服务提供有关 CPU 利用率的信息。

有关按资源类型划分的指标的信息,请参阅 Azure Monitor 支持的指标

运行状况状态和阈值

评估应用程序的所有层后,应具有类似于此示例的组件及其运行状况定义的列表。

组件 指示器/指标 正常 已降级 不正常
“列出目录项”用户流 基础运行状况状态 前端运行正常,目录 API 运行正常
“添加注释”用户流 基础运行状况状态 前端运行正常、目录 API 运行正常和后台处理器运行正常
HTTP 前端 Web 应用程序 # 非 20x HTTP 响应/分钟 0 1-10 > 10
目录 API # 异常/秒 < 10 10-50 > 10
平均处理时间(毫秒) < 150 150-500 > 500
后台处理器 平均排队时间(毫秒) < 200 200-1,000 > 1,000
平均处理时间(毫秒) < 100 100-200 > 200
失败计数 < 3 3-10 > 10
Azure Cosmos DB DTU 利用率 < 70% 70%-90% > 90%
Azure Key Vault 失败计数 < 3 3-10 > 10
Azure 事件中心 处理积压工作长度(传出/传入消息) < 3 3-20 > 20
Azure Blob 存储 平均延迟 (ms) < 100 100-200 > 200

在此示例中,前端 Web 应用程序和目录 API 的错误容错能力不同。 此差异与对应用程序的技术理解有关。 所有前端错误都应在客户端处理,因此阈值为零。 但是,在 API 层上,允许 10 个异常来解释用户引起的错误。 例如,“404 - 未找到”等错误并不一定表示存在运行状况问题。