

# OPS04-BP05 实施事务可追溯性
<a name="ops_telemetry_dist_trace"></a>

实施应用程序代码并配置工作负载组件以发出事件，通过单个逻辑操作来触发，并跨越工作负载的各种边界进行整合。生成地图以查看踪迹如何在工作负载和服务中流动。了解组件之间的关系，并识别和分析问题。使用收集的信息来确定需要在什么时候作出响应，并帮助您确定导致问题的因素。

 **期望结果：** 
+  收集整个工作负载中的事务踪迹，以便深入了解组件之间的关系。 
+  生成地图，以便更好地了解事务和事件如何在工作负载中流动。 

 **常见反模式：** 
+  您跨多个账户实施了无服务器微服务架构。您的客户遇到间歇性性能问题。因为缺乏事务可追溯性，无法查明是哪个功能或组件导致出现问题。 
+ 工作负载中存在性能瓶颈。因为缺乏事务可追溯性，您无法查看应用程序组件之间的关系和识别瓶颈。
+  用作踪迹的标识符不是全局唯一的，导致在分析工作负载行为时出现跟踪冲突。 

 **建立此最佳实践的好处：** 
+  了解工作负载中的事务流让您可以了解工作负载事务的预期行为。 
+  您可以在整个工作负载中查看与预期行为之间的差异，并且如有需要，您可以作出应对。 
+  您可以通过事务的已生成唯一标识符来准确地找出事务，而与事务的生成位置无关。 

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

## 实施指导
<a name="implementation-guidance"></a>

 设计应用程序和工作负载，使其发出有关系统组件间的事务流的信息。要包括在事务中的数据是全局唯一的事务标识符、事务阶段、活动组件和完成活动的时间。使用这些信息来确定正在进行的活动、已完成的活动以及已完成活动的结果。 

 **客户示例** 

 在 AnyCompany Retail，所有事务都会生成全局唯一的 UUID。在执行事务期间，此 UUID 在微服务之间传递。当用户与工作负载交互时，该 UUID 用于创建事务踪迹。使用踪迹生成工作负载拓扑图，它用于排查工作负载问题和提高性能。 

 **实施步骤** 

1.  检测工作负载中的应用程序以发出事务踪迹。方法是为每个事务生成唯一的标识符，并在应用程序之间传递标识符。 

   1.  您可以使用[适用于 OpenTelemetry 的 AWS Distro](https://aws-otel.github.io/) 中的自动仪表化功能，在现有应用程序中实施踪迹，而无需修改应用程序代码。 

1.  生成应用程序拓扑地图。使用这些地图来提高性能、获取见解和帮助进行故障排除。 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 可以生成工作负载中应用程序的地图。 

 **实施计划的工作量级别：**中等。实施事务踪迹可能需要适中的开发工作。 

## 资源
<a name="resources"></a>

 **相关最佳实践：** 
+  [OPS04-BP01 实施应用程序遥测](ops_telemetry_application_telemetry.md) - 应用程序遥测涵盖事务可追溯性和处理且需要先实施。 

 **相关文档：** 
+ [使用 AWS X-Ray Insights 发现应用程序问题和获取通知](https://aws.amazon.com/blogs/mt/discover-application-issues-get-notifications-aws-x-ray-insights/)
+ [Wealthfront 如何利用 AWS X-Ray 来分析和调试分布式应用程序](https://aws.amazon.com/blogs/mt/wealthfront-utilizes-aws-x-ray-analyze-debug-distributed-applications/)
+ [适用于 OpenTelemetry 的 AWS Distro 新功能 – 跟踪支持现已正式发布](https://aws.amazon.com/blogs/aws/new-for-aws-distro-for-opentelemetry-tracing-support-is-now-generally-available/)

 **相关视频：** 
+ [AWS re:Invent 2018：深入了解 AWS X-Ray：监控现代应用程序（DEV324）](https://www.youtube.com/watch?v=5MQkX57eTh8)
+ [AWS re:Invent 2022 - 使用 OpenTelemetry 构建可观察应用程序（BOA310）](https://www.youtube.com/watch?v=efk8XFJrW2c)
+ [AWS re:Invent 2022 - 开源方式的可观测性（COP301-R）](https://www.youtube.com/watch?v=2IJPpdp9xU0)
+ [使用适用于 OpenTelemetry 的 AWS Distro 捕获踪迹数据](https://www.youtube.com/watch?v=837NtV0McOA)
+ [使用 AWS X-Ray 优化应用程序性能](https://www.youtube.com/watch?v=5lIdNrrO_o8)

 **相关示例：** 
+ [AWS X-Ray 多 API Gateway 跟踪示例](https://github.com/aws-samples/aws-xray-multi-api-gateway-tracing-example)

 **相关服务：** 
+  [适用于 OpenTelemetry 的 AWS Distro](https://aws-otel.github.io/) 
+  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 