REL06-BP07 对系统中的请求进行端到端跟踪监控 - AWS Well-Architected 框架

REL06-BP07 对系统中的请求进行端到端跟踪监控

跟踪各个服务组件的请求处理情况,这样产品团队便能够更轻松地分析和调试问题并提高性能。

期望结果:针对所有组件全面跟踪工作负载,实现轻松调试,进而通过简化发现错误根本原因的过程,缩短错误的平均解决时间(MTTR)和延迟。采用端到端的跟踪方式,有助于更快地发现受影响的组件,并详细深入地了解造成错误或延迟的根本原因。

常见反模式:

  • 只针对部分组件而不是全部组件进行跟踪。例如,如果不跟踪 AWS Lambda,团队可能无法清楚地了解高峰工作负载中冷启动所造成的延迟。

  • Synthetics 金丝雀或真实用户监控(RUM)未配置跟踪功能。没有金丝雀或 RUM,跟踪分析中会忽略客户端交互遥测数据,这样得出的性能概况就不够完整。

  • 混合工作负载包括云原生跟踪工具和第三方跟踪工具,但尚未采取措施来选择并完全集成单个跟踪解决方案。根据所选跟踪解决方案,应使用云原生跟踪 SDK 来检测非云原生组件,或者应将第三方工具配置为摄取云原生跟踪遥测数据。

建立此最佳实践的好处:当开发团队收到问题提醒时,能够查看系统组件交互情况的全貌,包括各个组件在日志记录、性能和故障方面的相关性。由于跟踪有助于直观且轻松地找出根本原因,因此调查根本原因所花费的时间得以减少。在解决问题时,团队如果能详细了解组件的交互情况,就可以更快地做出更好的决策。分析系统跟踪数据有助于改进多种决策,例如何时调用灾难恢复(DR)失效转移,或者在何处实施自我修复策略最合适等,最终势必能够提高客户对服务的满意度。

在未建立这种最佳实践的情况下暴露的风险等级:

实施指导

团队在运行分布式应用程序时,能够借助跟踪工具来建立关联标识符、收集请求跟踪数据,以及构建互联组件的服务地图。请求跟踪中应该涵盖所有应用程序组件,包括服务客户端、中间件网关和事件总线、计算组件以及存储(包括键/值存储和数据库)。在端到端跟踪配置中,纳入 Synthetics 金丝雀和真实用户监控来衡量远程客户端交互情况和延迟,这样您就能够根据服务水平协议和目标准确地评估系统性能。

您可以使用 AWS X-RayAmazon CloudWatch 应用程序监控检测服务,在请求通过应用程序时提供请求的完整视图。X-Ray 会收集应用程序遥测,有助于跨有效负载、函数、跟踪、服务、API 对其进行可视化和筛选,并且可以通过无代码或低代码的方式系统组件启用。CloudWatch 应用程序监控包括 ServiceLens,可将跟踪与指标、日志和警报集成。CloudWatch 应用程序监控还包括用于监控端点和 API 的 Synthetics,以及用于检测 Web 应用程序客户端的真实用户监控。

实施步骤

  • 在所有支持的本机服务上使用 AWS X-Ray,例如 Amazon S3、AWS Lambda 和 Amazon API Gateway。这些 AWS 服务可使用基础设施即代码、AWS SDK 或 AWS Management Console 来启用 X-Ray。

  • 检测应用程序(适用于 OpenTelemetry 的 AWS Distro 和 X-Ray)或第三方收集代理。

  • 查看《AWS X-Ray Developer Guide》,了解编程语言特定的实施。这些文档部分详细介绍了如何检测 HTTP 请求、SQL 查询和应用程序编程语言特定的其他进程。

  • 使用适用于 Amazon CloudWatch Synthetics 金丝雀Amazon CloudWatch RUM 的 X-Ray 追踪,对最终用户客户端通过下游 AWS 基础设施的请求路径进行分析。

  • 根据资源运行状况和金丝雀遥测数据来配置 CloudWatch 指标和警报,这样团队就能够快速收到问题提醒,然后使用 ServiceLens 深入探究跟踪数据和服务地图。

  • 如果使用第三方工具作为主要的追踪解决方案,则将 X-Ray 与 DatadogNew RelicDynatrace 等第三方追踪工具集成。

资源

相关最佳实践:

相关文档:

相关示例:

相关视频:

相关工具: