REL06-BP07 对系统中的请求进行端到端跟踪监控
跟踪各个服务组件的请求处理情况,这样产品团队便能够更轻松地分析和调试问题并提高性能。
期望的结果: 针对所有组件全面跟踪工作负载,实现轻松调试,进而通过简化发现错误根本原因的过程,缩短错误的 平均解决时间 (MTTR)和延迟。采用端到端的跟踪方式,有助于更快地发现受影响的组件,并详细深入地了解造成错误或延迟的根本原因。
常见反模式:
-
只针对部分组件而不是全部组件进行跟踪。例如,如果不跟踪 AWS Lambda,团队可能无法清楚地了解高峰工作负载中冷启动所造成的延迟。
-
Synthetics Canary 或真实用户监控(RUM)未配置跟踪功能。没有 Canary 或 RUM,跟踪分析中会忽略客户端交互遥测数据,这样得出的性能概况就不够完整。
-
混合工作负载包括云原生跟踪工具和第三方跟踪工具,但尚未采取措施来选择并完全集成单个跟踪解决方案。根据所选跟踪解决方案,应使用云原生跟踪 SDK 来检测非云原生组件,或者应将第三方工具配置为摄取云原生跟踪遥测数据。
建立此最佳实践的好处: 当开发团队收到问题提醒时,能够查看系统组件交互情况的全貌,包括各个组件在日志记录、性能和故障方面的相关性。由于跟踪有助于直观且轻松地找出根本原因,因此调查根本原因所花费的时间得以减少。在解决问题时,团队如果能详细了解组件的交互情况,就可以更快地做出更好的决策。分析系统跟踪数据有助于改进多种决策,例如何时调用灾难恢复(DR)失效转移,或者在何处实施自我修复策略最合适等,最终势必能够提高客户对服务的满意度。
未建立这种最佳实践的情况下暴露的风险等级: 中
实施指导
团队在运行分布式应用程序时,能够借助跟踪工具来建立关联标识符、收集请求跟踪数据,以及构建互联组件的服务地图。请求跟踪中应该涵盖所有应用程序组件,包括服务客户端、中间件网关和事件总线、计算组件以及存储(包括键/值存储和数据库)。在端到端跟踪配置中纳入 Synthetics Canary 和真实用户监控,来衡量远程客户端交互情况和延迟,这样您就能够根据服务等级协议和目标准确地评估系统性能。
您可以使用 AWS X-Ray 和 Amazon 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 开发人员指南 ,了解实施所用的具体编程语言。这些文档部分详细介绍了如何检测 HTTP 请求、SQL 查询和其他特定于应用程序编程语言的进程。
-
使用 X-Ray 来跟踪 Amazon CloudWatch Synthetics Canary 和 Amazon CloudWatch RUM ,以便分析从最终用户客户端到下游 AWS 基础设施的请求路径。
-
根据资源运行状况和 Canary 遥测数据来配置 CloudWatch 指标和警报,这样团队就能够快速收到问题提醒,然后使用 ServiceLens 深入探究跟踪数据和服务地图。
-
如果您使用第三方工具作为主要跟踪解决方案,则将 X-Ray 与下列第三方跟踪工具进行集成: Datadog
、New Relic 或 Dynatrace 。
资源
相关最佳实践:
相关文档:
相关示例:
相关视频:
相关工具: