

# OPS 4. 如何在工作负载中实现可观测性？
<a name="ops-04"></a>

在工作负载中实现可观测性，以便您可以了解其状态并根据业务要求作出数据驱动型决策。

**Topics**
+ [OPS04-BP01 确定关键绩效指标](ops_observability_identify_kpis.md)
+ [OPS04-BP02 实施应用程序遥测](ops_observability_application_telemetry.md)
+ [OPS04-BP03 实施用户体验遥测](ops_observability_customer_telemetry.md)
+ [OPS04-BP04 实施依赖项遥测](ops_observability_dependency_telemetry.md)
+ [OPS04-BP05 实施分布式跟踪](ops_observability_dist_trace.md)

# OPS04-BP01 确定关键绩效指标
<a name="ops_observability_identify_kpis"></a>

 要在工作负载中实现可观测性，首先要了解其状态，并根据业务要求做出数据驱动型决策。确保监控活动与业务目标相一致的最有效方法之一是，定义和监控关键绩效指标（KPI）。

 **期望结果：**与业务目标紧密协调的高效可观测性实践，确保监控工作始终为切实的业务成果服务。

 **常见反模式：**
+  不明确的 KPI：在没有明确 KPI 的情况下工作可能会导致监控过多或过少内容，从而缺少重要信号。
+  静态 KPI：不会随着工作负载或业务目标的发展变化而重新审视或完善 KPI。
+  不一致：重点关注与业务成果不直接相关或难以与现实问题关联的技术指标。

 **建立此最佳实践的好处：**
+  易于发现问题：业务 KPI 通常比技术指标能够更清楚地揭示问题。与筛查众多技术指标相比，深入研究业务 KPI 有助于更有效地查明问题。
+  业务协调：确保监控活动直接支持业务目标。
+  效率：将监控资源和注意力优先放在重要的指标上。
+  积极主动：在问题对业务产生更广泛影响之前发现问题并加以解决。

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

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

 要有效地定义工作负载 KPI，请执行以下操作：

1.  **从业务成果开始：**在深入研究指标之前，请先了解期望的业务成果。是销售额增加、用户参与度提高还是响应时间更短？ 

1.  **将技术指标与业务目标相关联：**并非所有技术指标都会对业务成果产生直接影响。确定那些确实会产生直接影响的指标，但使用业务 KPI 来发现问题通常更为简单。

1.  **使用 [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)：**使用 CloudWatch 来定义和监控代表 KPI 的指标。

1.  **定期审查和更新 KPI：**随着工作负载和业务的发展，请保持 KPI 的相关性。

1.  **让利益相关方参与其中：**让技术和业务团队参与定义和审查 KPI。

 **实施计划的工作量级别：**中 

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

 **相关最佳实践：**
+ [OPS04-BP02 实施应用程序遥测](ops_observability_application_telemetry.md)
+ [OPS04-BP03 实施用户体验遥测](ops_observability_customer_telemetry.md)
+ [OPS04-BP04 实施依赖项遥测](ops_observability_dependency_telemetry.md)
+ [OPS04-BP05 实施分布式跟踪](ops_observability_dist_trace.md)

 **相关文档：**
+ [AWS Observability Best Practices](https://aws-observability.github.io/observability-best-practices/)
+ 《[Amazon CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)》
+ [AWS Observability Skill Builder Course](https://explore.skillbuilder.aws/learn/course/external/view/elearning/14688/aws-observability)

 **相关视频：**
+ [Developing an observability strategy](https://www.youtube.com/watch?v=Ub3ATriFapQ)

 **相关示例：**
+  [One Observability 讲习会](https://catalog.workshops.aws/observability/en-US) 

# OPS04-BP02 实施应用程序遥测
<a name="ops_observability_application_telemetry"></a>

 应用程序遥测是实现工作负载可观测性的基础。发射遥测数据至关重要，它可以提供切实可行的洞察，便于了解应用程序的状态以及技术和业务成果的实现情况。从故障排除到衡量新功能的影响或确保与业务关键绩效指标（KPI）保持一致，应用程序遥测可为构建、操作和改进工作负载的方式提供指导。

 指标、日志和跟踪数据构成了可观测性的三个主要支柱。它们用作诊断工具来描述应用程序状态。随着时间的推移，还可协助创建基准和识别异常情况。但是，为了确保监控活动与业务目标协调一致，定义和监控 KPI 至关重要。与只考虑纯粹的技术指标相比，业务 KPI 通常有助于更轻松地发现问题。

 真实用户监控（RUM）和综合事务等其他遥测类型，是对这些主要数据来源的补充。RUM 有助于了解实时用户交互，而综合事务则模拟潜在的用户行为，有助于提前发现瓶颈，以防真实用户遇到瓶颈。

 **期望结果：**获得有关工作负载性能的切实可行的洞察。这些洞察有助于主动作出性能优化决策，提高工作负载稳定性，简化 CI/CD 流程，并有效地利用资源。

 **常见反模式：**
+  **可观测性不完整：**忽略将可观测性纳入工作负载的每一层，造成盲点，从而掩盖重要的系统性能和行为洞察。
+  **支离破碎的数据视图：**当数据分散在多个工具和系统中时，要全面了解工作负载的运行状况和性能，会非常困难。
+  **用户报告的问题：**这表明缺乏通过遥测和业务 KPI 监控来主动发现问题的功能。

 **建立此最佳实践的好处：**
+  **明智的决策：**借助从遥测和业务 KPI 中获得的洞察，可以作出以数据驱动型决策。
+  **提高运营效率：**数据驱动的资源利用率可提高成本效益。
+  **增强工作负载稳定性：**更快地检测和解决问题，延长正常运行时间。
+  **简化 CI/CD 流程：**从遥测数据获得的洞察有助于完善流程和可靠地交付代码。

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

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

 要为工作负载实现应用程序遥测，请使用 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 和 [AWS X-Ray](https://aws.amazon.com/xray/) 等 AWS 服务。Amazon CloudWatch 提供了一套全面的监控工具，可观察 AWS 和本地环境中的资源和应用程序。该服务会收集、跟踪和分析指标，整合和监控日志数据，并对资源的变化做出响应，从而增进对工作负载运行方式的了解。同时，利用 AWS X-Ray，还可以跟踪、分析和调试应用程序，深入了解工作负载的行为。借助服务地图、延迟分布和跟踪时间表等功能，AWS X-Ray 可让您深入了解工作负载的性能和影响工作负载性能的瓶颈。

### 实施步骤
<a name="implementation-steps"></a>

1.  **确定要收集哪些数据：**确定有助于深入了解工作负载运行状况、性能和行为的基本指标、日志和跟踪数据。

1.  **部署 [CloudWatch 代理](https://aws.amazon.com/cloudwatch/)：**CloudWatch 代理在从工作负载及其底层基础设施中获取系统和应用程序指标和日志方面发挥重要作用。CloudWatch 代理还可用于收集 OpenTelemetry 或 X-Ray 跟踪数据，并将其发送到 X-Ray。

1.  **对日志和指标实施异常检测：**使用 [CloudWatch Logs 异常检测功能](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/LogsAnomalyDetection.html)和 [CloudWatch Metrics 异常检测功能](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Anomaly_Detection.html)来自动识别应用程序操作中的异常活动。这些工具使用机器学习算法来检测异常情况并发出警报，从而增强了监控能力，加快了对潜在中断或安全威胁的响应速度。设置这些功能可主动管理应用程序的运行状况和安全性。

1.  **保护敏感日志数据：**使用 [Amazon CloudWatch Logs 数据保护](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html)来掩蔽日志中的敏感信息。此功能会在访问敏感数据之前自动检测和掩蔽敏感数据，有助于维护隐私和合规性。实施数据掩蔽，以期安全地处理和保护个人身份信息（PII）等敏感详细信息。

1.  **定义和监控业务 KPI：**建立与[业务结果](https://aws-observability.github.io/observability-best-practices/guides/operational/business/monitoring-for-business-outcomes/)一致的[自定义指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html)。

1.  **使用 AWS X-Ray 检测应用程序：**除了部署 CloudWatch 代理之外，还必须[对应用程序进行检测](https://docs.aws.amazon.com/xray/latest/devguide/xray-instrumenting-your-app.html)，以便发出跟踪数据。此过程可让您进一步了解工作负载的行为和性能。

1.  **标准化整个应用程序中的数据收集：**标准化整个应用程序中的数据收集实践。统一性有助于关联和分析数据，从而全面了解应用程序的行为。

1.  **实现跨账户可观测性：**借助 [Amazon CloudWatch 跨账户可观测性](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html)，提高对多个 AWS 账户 的监控效率。利用该功能，可以将不同账户中的指标、日志和警报整合到一个视图中，从而简化管理，并提高对整个组织的 AWS 环境中已发现问题的响应速度。

1.  **分析数据并据此采取行动：**数据收集和标准化完成后，使用 [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/features/) 进行指标和日志分析，并使用 [AWS X-Ray](https://aws.amazon.com/xray/features/) 进行跟踪分析。此类分析可得出有关工作负载运行状况、性能和行为的重要洞察，从而指导决策过程。

 **实施计划的工作量级别：**高 

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

 **相关最佳实践：**
+  [OPS04-BP01 定义工作负载 KPI](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_observability_identify_kpis.html) 
+  [OPS04-BP03 实施用户活动遥测](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_observability_customer_telemetry.html) 
+  [OPS04-BP04 实施依赖项遥测](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_observability_dependency_telemetry.html) 
+  [OPS04-BP05 实施事务可追溯性](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_observability_dist_trace.html) 

 **相关文档：**
+  [AWS Observability Best Practices](https://aws-observability.github.io/observability-best-practices/) 
+  《[Amazon CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)》 
+  [AWS X-Ray 开发人员指南](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [检测分布式系统的运营可见性](https://aws.amazon.com/builders-library/instrumenting-distributed-systems-for-operational-visibility) 
+  [AWS Observability Skill Builder Course](https://explore.skillbuilder.aws/learn/course/external/view/elearning/14688/aws-observability) 
+  [Amazon CloudWatch 的新功能](https://aws.amazon.com/about-aws/whats-new/management-and-governance/?whats-new-content.sort-by=item.additionalFields.postDateTime&whats-new-content.sort-order=desc&awsf.whats-new-products=general-products%23amazon-cloudwatch) 
+  [AWS X-Ray 的新功能](https://aws.amazon.com/about-aws/whats-new/developer-tools/?whats-new-content.sort-by=item.additionalFields.postDateTime&whats-new-content.sort-order=desc&awsf.whats-new-products=general-products%23aws-x-ray) 

 **相关视频：**
+  [AWS re:Invent 2022 - Observability best practices at Amazon](https://youtu.be/zZPzXEBW4P8) 
+  [AWS re:Invent 2022 - Developing an observability strategy](https://youtu.be/Ub3ATriFapQ) 

 **相关示例：**
+  [One Observability 讲习会](https://catalog.workshops.aws/observability) 
+  [AWS 解决方案库：使用 Amazon CloudWatch 进行应用程序监控](https://aws.amazon.com/solutions/implementations/application-monitoring-with-cloudwatch) 

# OPS04-BP03 实施用户体验遥测
<a name="ops_observability_customer_telemetry"></a>

 深入了解客户体验以及与应用程序的交互至关重要。真实用户监控（RUM）和综合事务是实现此目的的强大工具。RUM 提供有关真实用户交互的数据，从未经筛选的视角反映用户满意度，而综合事务可模拟用户交互，有助于在潜在问题影响真实用户之前就发现这些问题。

 **期望结果：**全面了解客户体验，主动检测问题，优化用户交互，从而提供无缝的数字体验。

 **常见反模式：**
+  应用程序没有真实用户监控（RUM）功能：
  +  问题检测延误：如果没有 RUM，可能要等到用户抱怨时，才会意识到性能瓶颈或问题。这种被动应对的方法可能会导致客户不满。
  +  缺乏对用户体验的了解：不使用 RUM 意味着无法掌握揭示真实用户如何与应用程序交互的关键数据，从而限制优化用户体验的能力。
+  应用程序没有综合事务功能：
  +  错过边缘案例：综合事务有助于测试普通用户可能不经常使用、但对某些业务职能至关重要的路径和功能。没有综合事务，这些路径可能会出现故障并被忽视。
  +  在未使用应用程序时检查问题：定期的综合测试可以模拟真实用户未积极与应用程序交互时的情况，确保系统始终正常运行。

 **建立此最佳实践的好处：**
+  主动检测问题：在潜在问题影响真实用户之前，发现并解决这些问题。
+  优化用户体验：来自 RUM 的持续反馈有助于完善和增强整体用户体验。
+  获得有关设备和浏览器性能的洞察：了解应用程序在各种设备和浏览器上的表现，从而实现进一步优化。
+  经过验证的业务工作流程：定期的综合事务可确保核心功能和关键路径始终可以使用且高效。
+  增强应用程序性能：利用从真实用户数据中收集的洞察，提高应用程序的响应能力和可靠性。

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

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

 为利用 RUM 和综合事务进行用户活动遥测，AWS 提供了 [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 和 [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 等服务。指标、日志和跟踪数据，再加上用户活动数据，可让您全面了解应用程序的运行状态和用户体验。

### 实施步骤
<a name="implementation-steps"></a>

1.  **部署 Amazon CloudWatch RUM：**将应用程序与 CloudWatch RUM 集成，收集、分析和呈现真实的用户数据。

   1.  使用 [CloudWatch RUM JavaScript 库](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html)，将 RUM 与应用程序集成。

   1.  设置控制面板，以可视化形式呈现和监控真实的用户数据。

1.  **配置 CloudWatch Synthetics：**创建金丝雀或脚本化例程，模拟用户与应用程序的交互。

   1.  定义关键应用程序工作流程和路径。

   1.  使用 [CloudWatch Synthetics 脚本](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)设计金丝雀，模拟这些路径的用户交互。

   1.  安排和监控金丝雀按指定的间隔运行，确保进行一致的性能检查。

1.  **分析数据并据此采取行动：**利用来自 RUM 和综合事务的数据来获取洞察，并在检测到异常时采取纠正措施。使用 CloudWatch 控制面板和警报及时了解情况。

 **实施计划的工作量级别：**中 

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

 **相关最佳实践：**
+  [OPS04-BP01 确定关键绩效指标](ops_observability_identify_kpis.md) 
+  [OPS04-BP02 实施应用程序遥测](ops_observability_application_telemetry.md) 
+  [OPS04-BP04 实施依赖项遥测](ops_observability_dependency_telemetry.md) 
+  [OPS04-BP05 实施分布式跟踪](ops_observability_dist_trace.md) 

 **相关文档：**
+ 《[Amazon CloudWatch RUM 指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html)》
+ 《[Amazon CloudWatch Synthetics 指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)》

 **相关视频：**
+ [Optimize applications through end user insights with Amazon CloudWatch RUM](https://www.youtube.com/watch?v=NMaeujY9A9Y)
+ [AWS on Air ft. Real-User Monitoring for Amazon CloudWatch](https://www.youtube.com/watch?v=r6wFtozsiVE)

 **相关示例：**
+ [One Observability 讲习会](https://catalog.workshops.aws/observability/en-US/intro)
+ [适用于 Amazon CloudWatch RUM Web 客户端的 Git 存储库](https://github.com/aws-observability/aws-rum-web)
+ [Using Amazon CloudWatch Synthetics to measure page load time](https://github.com/aws-samples/amazon-cloudwatch-synthetics-page-performance)

# OPS04-BP04 实施依赖项遥测
<a name="ops_observability_dependency_telemetry"></a>

 要想监控工作负载所依赖的外部服务和组件的运行状况及性能，依赖项遥测必不可少。依赖项遥测提供有关与 DNS、数据库或第三方 API 等依赖项相关的可访问性、超时及其他关键事件的宝贵洞察。对应用程序进行检测，发布有关这些依赖项的指标、日志和跟踪数据时，能更清楚地了解可能影响工作负载的潜在瓶颈、性能问题或故障。

 **期望结果：**确保工作负载所依赖的依赖项按预期执行，让您能够主动解决问题并确保最佳的工作负载性能。

 **常见反模式：**
+  **忽略外部依赖项：**仅关注内部应用程序指标，而忽略与外部依赖项相关的指标。
+  **缺乏主动监控：**等待问题出现，而不是持续监控依赖项运行状况和性能。
+  **孤立监控：**使用多种不同的监控工具，这可能会导致依赖项运行状况视图支离破碎且不一致。

 **建立此最佳实践的好处：**
+  **提高工作负载可靠性：**通过确保外部依赖项始终可用且性能出色来实现。
+  **更快地检测和解决问题：**在依赖项问题影响工作负载之前，主动发现和解决这些问题。
+  **全面视图：**全面了解影响工作负载运行状况的内部和外部组件。
+  **增强工作负载可扩展性：**通过了解外部依赖项的可扩展性限制和性能特征来实现。

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

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

 从确定工作负载所依赖的服务、基础设施和流程开始，实施依赖项遥测。量化这些依赖项按预期运行时的良好状况，然后确定将需要哪些数据来衡量这些状况。利用这些信息，可以创建控制面板和警报，为运营团队提供有关这些依赖项状态的洞察。当依赖项无法按需交付时，使用 AWS 工具来发现和量化影响。不断重新审视策略，考虑优先事项、目标和所获洞察的变化。

### 实施步骤
<a name="implementation-steps"></a>

 要有效地实现依赖项遥测，请执行以下操作：

1.  **确定外部依赖项：**与利益相关方合作，查明工作负载所依赖的外部依赖项。外部依赖项可包括外部数据库、第三方 API、通往其他环境的网络连接路由以及 DNS 服务等内容。实现有效的依赖项遥测的第一步是全面了解这些依赖项是什么。

1.  **制定监控策略：**一旦清楚地了解了外部依赖项，就可以针对它们构建一个量身定制的监控策略。这包括了解每个依赖项的重要程度、其预期行为以及任何相关的服务水平协议或目标（SLA 或 SLT）。设置主动警报，在出现状态变化或性能偏差时发出通知。

1.  **使用[网络监控](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Network-Monitoring-Sections.html)：**使用[网络检测仪](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-InternetMonitor.html)和[网络监视器](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/what-is-network-monitor.html)，全面了解全球互联网和网络状况。这些工具有助于了解并应对影响外部依赖项的中断、破坏或性能下降。

1.  **随时了解 [AWS Health](https://aws.amazon.com/premiumsupport/technology/aws-health/) 的最新信息：**AWS Health 是有关 AWS 云资源运行状况的权威信息来源。使用 AWS Health 可视化并接收有关任何当前服务事件和即将发生的更改（例如计划的生命周期事件）的通知，以便您可以采取措施来减轻影响。

   1.  通过 [AWS 用户通知服务](https://docs.aws.amazon.com/notifications/latest/userguide/what-is-service.html) 创建要发送到电子邮件和聊天渠道且[契合目标的 AWS Health 事件通知](https://docs.aws.amazon.com/health/latest/ug/user-notifications.html)，并通过 Amazon EventBridge 或 [AWS Health API](https://docs.aws.amazon.com/health/latest/APIReference/Welcome.html) 以编程方式与[监控和警报工具](https://docs.aws.amazon.com/health/latest/ug/cloudwatch-events-health.html)集成。

   1.  通过与您可能已经通过 Amazon EventBridge 或 AWS Health API 使用的变更管理或 ITSM 工具（如 [Jira](https://docs.aws.amazon.com/smc/latest/ag/cloud-sys-health.html) 或 [ServiceNow](https://docs.aws.amazon.com/smc/latest/ag/sn-aws-health.html)）集成，规划和跟踪需要采取行动的运行状况事件的进度。

   1.  如果您使用 AWS Organizations，请启用 [organization view for AWS Health](https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) 以跨账户聚合 AWS Health 事件。

1.  **使用 [AWS X-Ray](https://aws.amazon.com/xray/) 检测应用程序：**AWS X-Ray 让您能够深入了解应用程序及其底层依赖项的运行情况。通过从头到尾跟踪请求，可以找出应用程序所依赖的外部服务或组件中的瓶颈或故障。

1.  **使用 [Amazon DevOps Guru](https://aws.amazon.com/devops-guru/)：**这项服务由机器学习驱动，可发现操作问题，预测何时可能出现严重问题，并建议可采取的具体行动。其可贵之处在于，可以让您深入了解依赖项，并确保这些依赖项不会成为操作问题的根源。

1.  **定期监控：**持续监控与外部依赖项相关的指标和日志。针对意外行为或性能下降设置警报。

1.  **更改后进行验证：**每当任何外部依赖项有更新或更改时，都应验证其性能，并检查它们是否符合应用程序的要求。

 **实施计划的工作量级别：**中 

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

 **相关最佳实践：**
+  [OPS04-BP01 定义工作负载 KPI](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_observability_identify_kpis.html) 
+  [OPS04-BP02 实施应用程序遥测](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_observability_application_telemetry.html) 
+  [OPS04-BP03 实施用户活动遥测](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_observability_customer_telemetry.html) 
+  [OPS04-BP05 实施事务可追溯性](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_observability_dist_trace.html) 
+  [OP08-BP04 创建可操作的警报](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_workload_observability_create_alerts.html) 

 **相关文档：**
+  《[Amazon Personal Health Dashboard User Guide](https://docs.aws.amazon.com/health/latest/ug/what-is-aws-health.html)》 
+  《[AWS Internet Monitor User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-InternetMonitor.html)》 
+  [AWS X-Ray 开发人员指南](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  《[AWS DevOps Guru User Guide](https://docs.aws.amazon.com/devops-guru/latest/userguide/welcome.html)》 

 **相关视频：**
+  [Visibility into how internet issues impact app performance](https://www.youtube.com/watch?v=Kuc_SG_aBgQ) 
+  [Introduction to Amazon DevOps Guru](https://www.youtube.com/watch?v=2uA8q-8mTZY) 
+  [Manage resource lifecycle events at scale with AWS Health](https://www.youtube.com/watch?v=VoLLNL5j9NA) 

 **相关示例：**
+  [AWS Health Aware](https://github.com/aws-samples/aws-health-aware/) 
+  [Using Tag-Based Filtering to Manage AWS Health Monitoring and Alerting at Scale](https://aws.amazon.com/blogs/mt/using-tag-based-filtering-to-manage-health-monitoring-and-alerting-at-scale/) 

# OPS04-BP05 实施分布式跟踪
<a name="ops_observability_dist_trace"></a>

 分布式跟踪提供了一种方法，可在请求遍历分布式系统的各个组件时对请求进行监控和可视化。通过从多个来源捕获跟踪数据并在一个统一视图中对其进行分析，团队可以更好地了解请求是如何流动的、哪里存在瓶颈以及优化工作的重点。

 **期望结果：**全面了解流经分布式系统的请求，从而精确调试、优化性能和改善用户体验。

 **常见反模式：**
+  检测不一致：并非分布式系统中的所有服务都经过跟踪检测。
+  忽略延迟：只关注错误，而不考虑延迟或性能逐渐下降的情况。

 **建立此最佳实践的好处：**
+ 全面了解系统：以可视化方式呈现请求从进入到退出的整个路径。
+  增强调试功能：快速发现出现故障或性能问题的地方。
+  改善用户体验：监控并根据实际用户数据进行优化，确保系统满足现实需求。

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

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

 首先确定工作负载中所有需要检测的元素。将所有组件都考虑在内后，利用 AWS X-Ray 和 OpenTelemetry 之类的工具收集跟踪数据，以便使用 X-Ray 和 Amazon CloudWatch ServiceLens Map 等工具进行分析。定期与开发人员一起进行审查，并使用 Amazon DevOps Guru、X-Ray Analytics 和 X-Ray Insights 等工具来补充这些讨论，以便挖掘更深层次的信息。根据跟踪数据确立警报，以便在结果面临风险时，按照工作负载监控计划中定义的流程发出通知。

### 实施步骤
<a name="implementation-steps"></a>

 要有效地实施分布式跟踪，请执行以下操作：

1.  **采用 [AWS X-Ray](https://aws.amazon.com/xray/)：**将 X-Ray 集成到应用程序中，以便深入了解其行为和性能并查明瓶颈。利用 X-Ray Insights 自动分析跟踪数据。

1.  **检测服务：**验证从 [AWS Lambda](https://aws.amazon.com/lambda/) 函数到 [EC2 实例](https://aws.amazon.com/ec2/)的每项服务是否发送了跟踪数据。检测的服务越多，端到端视图就越清晰。

1.  **整合 [CloudWatch 真实用户监控](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html)和[综合监控](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)：**将真实用户监控（RUM）和综合监控与 X-Ray 集成。这可捕捉实际的用户体验并模拟用户交互，从而发现潜在问题。

1.  **使用 [CloudWatch 代理](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)：**该代理可发送来自 X-Ray 或 OpenTelemetry 的跟踪数据，从而增强所获得洞察的深度。

1.  **使用 [Amazon DevOps Guru：](https://aws.amazon.com/devops-guru/)**DevOps Guru 使用来自 X-Ray、CloudWatch、AWS Config 和 AWS CloudTrail 的数据来提供切实可行的建议。

1.  **分析跟踪数据：**定期审查跟踪数据，识别可能影响应用程序性能的模式、异常或瓶颈。

1.  **设置警报：**在 [CloudWatch](https://aws.amazon.com/cloudwatch/) 中配置针对异常模式或延迟时间过长的警报，从而主动解决问题。

1.  **持续改进：**在添加或修改服务时，重新审视跟踪策略，以便捕获所有相关数据点。

 **实施计划的工作量级别：**中 

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

 **相关最佳实践：**
+  [OPS04-BP01 确定关键绩效指标](ops_observability_identify_kpis.md) 
+  [OPS04-BP02 实施应用程序遥测](ops_observability_application_telemetry.md) 
+  [OPS04-BP03 实施用户体验遥测](ops_observability_customer_telemetry.md) 
+  [OPS04-BP04 实施依赖项遥测](ops_observability_dependency_telemetry.md) 

 **相关文档：**
+ 《[AWS X-Ray 开发人员指南](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html)》
+ 《[Amazon CloudWatch 代理用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)》
+ 《[Amazon DevOps Guru User Guide](https://docs.aws.amazon.com/devops-guru/latest/userguide/welcome.html)》

 **相关视频：**
+ [Use AWS X-Ray Insights](https://www.youtube.com/watch?v=tl8OWHl6jxw)
+ [AWS on Air ft. Observability: Amazon CloudWatch and AWS X-Ray](https://www.youtube.com/watch?v=qBDBnPkZ-KI)

 **相关示例：**
+ [ Instrumenting your application for AWS X-Ray](https://aws.amazon.com/xray/latest/devguide/xray-instrumenting-your-app.html)