跟踪 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

跟踪

跟踪涉及专门使用有关程序进程的日志信息。从日志中获得的见解可以帮助工程师调试单个交易并识别瓶颈。跟踪可以自动启用,也可以使用手动检测来启用。

由于应用程序与不同的服务集成,因此确定应用程序及其底层服务的性能非常重要。追踪适用于痕迹和跨度。跟踪是完整的请求过程,每条跟踪都由 span 组成。跨度是一个标记的时间间隔,是系统各个组件或服务中的活动。Traces 提供了向应用程序发出请求时会发生什么情况的全局。

应用程序小组

应用程序开发人员通过发送入站和出站请求以及应用程序内其他事件的跟踪数据以及有关每个请求的元数据来检测其应用程序。要生成跟踪,必须对应用程序进行检测以生成跟踪。仪器可以是自动的,也可以是手动的。

自动仪器

您可以使用自动检测从应用程序收集遥测数据,而无需修改源代码。自动检测代理可以生成应用程序或服务的应用程序跟踪。通常,您可以使用配置更改来添加代理或其他机制。

库插桩包括对应用程序代码进行最少的更改,以添加预先构建的工具。这些工具针对特定的库或框架,例如 AWS SDK、Apache HTTP 客户端或 SQL 客户端。

手动检测

在这种方法中,应用程序开发人员在要收集跟踪信息的每个位置向应用程序添加检测代码。例如,使用面向方面的编程 (AOP) 来收集跟踪数据。 AWS X-Ray 开发人员可以使用 SDK 来检测其应用程序。

采样

追踪数据通常会大量生成。重要的是要有一种机制来确定是否应该导出跟踪数据。采样是确定应导出哪些数据的过程。这样做通常是为了节省成本。您可以通过自定义采样规则来控制记录的数据量。您也可以在不更改和重新部署代码的情况下更改采样行为。控制采样速率以生成适量的迹线非常重要。

应用程序开发人员可以通过将元数据添加为键值对来对跟踪进行注释。这些注解丰富了跟踪记录,并有助于完善后端的筛选。

DevOps 球队

DevOps 工程师经常被要求为应用程序开发人员设置跟踪环境,以可视化基础设施和应用程序的跟踪。跟踪环境设置包括从不同来源收集跟踪数据,然后将其发送到中央存储进行可视化。

追踪后端

跟踪后端是诸如此类的服务 AWS X-Ray ,它收集有关您的应用程序所处理的请求的数据。它提供了一些工具,您可以使用这些工具来查看、筛选和深入了解这些数据,从而识别问题和优化机会。对于对您的应用程序的任何跟踪请求,您可以查看有关请求和响应的详细信息,以及您的应用程序对下游 AWS 资源、微服务、数据库和 Web API 发出的其他调用的详细信息。

自动跟踪

由于不同的应用程序有不同的跟踪要求,因此自动化跟踪基础架构的配置和操作非常重要。使用 IaC 工具配置跟踪基础设施的后端。

使用 CD 管道自动执行以下操作:

  • 按需部署跟踪基础架构,并在不需要时将其拆除。

  • 跨应用程序部署跟踪配置。

追踪工具

AWS 为跟踪及其关联的可视化提供以下服务:

  • AWS X-Ray 除了从您的应用程序使用的已与 X-Ray 集成的 AWS 服务中接收跟踪之外,还会接收来自您的应用程序的跟踪。可以使用多种开发工具包、代理和工具来检测应用程序,实现 X-Ray 跟踪。有关更多信息,请参阅 AWS X-Ray 文档

    开发人员还可以使用 AWS X-Ray 软件开发工具包向 X-Ray 发送跟踪。 AWS X-Ray 提供适用于Go、、Node.js、JavaPython、.NET 和Ruby的软件开发工具包。每个 X-Ray 开发工具包都提供以下内容:

    • 拦截器,可添加到您的代码中以跟踪传入 HTTP 请求

    • 用于检测您的应用程序用来调用其他 AWS 服务的 AWS SDK 客户端的客户端处理程序

    • HTTP 客户端,用于检测对其他内部和外部 HTTP Web 服务的调用

    X-Ray SDK 还支持对 SQL 数据库进行检测调用、自动 AWS SDK 客户端检测以及其他功能。该开发工具包不是直接将跟踪数据发送到 X-Ray;,而是将 JSON 分段文档发送到侦听 UDP 流量的进程守护程序进程。X-Ray 进程守护程序将分段缓冲在队列中,并将分段批量上传到 X-Ray。有关使用 X-Ray SDK 对应用程序进行检测的更多信息,请参阅 X-Ra y 文档

  • Amazon OpenSearch Service 是一项用于运行和扩展 OpenSearch 集群的 AWS 托管服务,可用于集中存储日志、指标和跟踪。可观察性插件为采集和监控来自常见数据源的指标、日志和跟踪信息提供了统一的体验。将数据收集和监控集中在一处,可提供整个基础架构的全栈 end-to-end 可观察性。有关实现信息,请参阅OpenSearch 服务文档

  • AWS Distro for OpenTelemetry (ADOT) 是一个基于云原生计算基金会 (CNCF) 项目的 AWS 发行版。 OpenTelemetry ADOT 目前包括对 Java 和 Python 的自动检测支持。此外,ADOT 支持使用 Node.js 自动检测 AWS Lambda 函数及其下游请求Java,并通过 ADOT 托管 Lambda 层Python运行时自动检测函数及其下游请求。开发人员可以使用 ADOT 收集器将跟踪发送到不同的后端,包括和 AWS X-Ray Ama OpenSearch zon 服务。

    有关如何使用 ADOT SDK 对应用程序进行检测的参考示例,请参阅文档。有关如何使用 ADOT SDK 向亚马逊 OpenSearch 服务发送数据的参考示例,请参阅OpenSearch 服务文档

    有关如何检测在 Amazon EKS 上运行的应用程序的参考示例,请参阅博客文章 “使用适用于 AWS Distro 的 Amazon EKS 插件收集指标和跟踪”。 OpenTelemetry