我们正在升级FutureStack的注册,仅到4月30日。条款和条件适用。 现在注册

宣布新的Relic支持W3C跟踪上下文:现在可用的新Relic APM

读取9分钟

新遗物产品管理总监VIC飙升,为此帖子贡献。这篇文章的版本以前跑了新堆栈

对于使用高度分布式微服务应用程序的开发人员来说,分布式跟踪是必不可少的工具,允许他们跟踪跨多个微服务的事件交互。但是,并不是所有的跟踪工具都遵循通过HTTP头传递上下文信息的相同方法,随着跟踪从一个服务转移到另一个服务。这种标准化的缺乏导致了相互不兼容的头格式的混乱,当组织中的开发团队选择他们自己的跟踪工具时,这可能是一个问题。

W3C跟踪上下文是一种标准,使分布式追踪更容易实现,更可靠,最重要的是,对于使用现代高度分布式应用的开发人员来说,更有价值的产品。该标准大大简化了开发人员仪器服务的使用情况,使用来自不同分布式跟踪解决方案的工具。亚博直播平台现在,符合W3C跟踪上下文标准的所有示踪剂和代理都可以参与跟踪。跟踪数据可以从根服务一直传播到终端服务。

近两年来,New Relic一直参与W3C跟踪上下文工作组,帮助通过批准过程定义标准和牧养。W3C跟踪上下文规范将达到“推荐”状态2月4日,但我们很高兴宣布,我们向预计批准推出了对该标准的支持。

以下新的遗物APM代理现在支持:

  • Java 5.1.0和更高
  • Python 5.5及以上版本
  • 去3.1.0和更高
  • Node.js 6.4及以上版本
  • Ruby 6.9.0和更高
  • PHP 9.8和更高
  • .NET 8.27和更高

(我们还增加了对新的Relic开源的Elixir代理,我们很快将增加对其他APM代理的跟踪上下文支持,以及新的遗物浏览器代理。)

开始的时候,只要更新您的代理人到适当的版本。(我们解释了下面的向后兼容性。)

阅读更多关于在新遗物平台内的分布式跟踪和可观察性的标准手段。

分布式跟踪的问题

每个分布式跟踪工具都需要一种方式以正确的顺序“关联”迹线的每个步骤,以及其他必要的信息以识别和诊断性能。这涉及:

  1. 为整个跟踪分配唯一ID
  2. 将唯一ID分配给跟踪中的每个步骤
  3. 将此上下文信息编码为一组HTTP标头
  4. 当跟踪通过应用程序环境时,将头和编码的上下文从一个服务传递(或传播)到下一个服务。

要了解更多信息,请审查我们的分布式跟踪介绍,还要学习如何我们已经实施了自己的追踪解决方案

以前,每个分布式跟踪工具采用自定义标题和上下文格式;例如,ZIPKIN使用B3格式在New Relic,我们开发了自己的专有格式。当跟踪上下文头主要在由单个跟踪工具监视的服务之间传递,或者头很少传播到单个组织的网络和中间件基础设施之外时,这不是一个问题。

就像我们说的那样,今天许多开发团队使用自己的追踪工具并不罕见,并以相互不兼容的头格式发现自己。当追踪工具接收到跟踪上下文标题时,它不理解,它通常会丢弃标题并打破依赖于它们的迹线。跟踪上下文标题也可能比以往到以前更有可能遍历中间件边界,包括沿途的代理,服务网格和消息传递系统。这些设备中的一些将沿着专有的标题完好无损,但许多其他设备会丢弃它们,再次导致破碎的痕迹。

W3C跟踪上下文:打破可观察性的障碍

W3C跟踪上下文支持跟踪的跨供应商互操作,其中之一四种基本遥测类型。这与新的遗物置于打开仪器项目和我们的释放API,遥测SDK和出口商满足客户在供应商和开源工具之间互操作的需求。

W3C Trace Context是一种有用且重要的方法,可以确保New Relic的分布式跟踪工具可以遍历由其他供应商的代理检测的服务,而不会有被破坏跟踪的风险,还可以可靠地遍历第三方组件,包括代理和API网关。同时,W3C Trace Context将赋予开源跟踪程序同样的优势,使我们的客户能够在任何时间、任何来源合并跟踪遥测,并跨高度分布式的应用程序环境实现跟踪。这使得Trace Context成为一个关键的、非常受欢迎的技术未来可观察性

在功能上,W3C Trace Context定义了一对标准化的上下文HTTP标头,用于在服务之间传播上下文相关信息:

  • 一个trapemerent.标题包含每个分布式跟踪模型所需的数据元素来定义和传播上下文:跟踪ID,父ID和示例标志。
  • 一个tacestate.头包含特定于供应商的上下文数据,通常是为了支持与特定跟踪工具相关的附加功能或优化。

这种常见的上下文传播格式可以通过符合标准的其他跟踪仪器进行跟踪传播。标准跟踪报头格式还清除了中间件供应商支持传播跟踪标题的障碍,以及用于在跟踪仪器中构建的框架供应商。

如果您需要或想要使用新的遗物代理以外的工具来识别您的服务,但仍然希望在我们的平台中捕获这些痕迹,我们预计大多数供应商和开源仪器工具将支持W3C跟踪上下文。许多人已经发布了兼容的追踪者,包括OpenTeLemetry.,这是最关键的游戏变化器之一,用于标准化整个行业可观察性所需的仪器。

作为标准成熟,我们预计使用其他标题格式的任何追踪器或仪器采用W3C跟踪上下文,以及更多工具和垫片可用于可用,以使现有仪器能够转换为W3C跟踪上下文,以便参与多供应商迹线。

最终的结果是更多的灵活性和更少的可观察性障碍。

W3C跟踪上下文如何在新遗物中工作

W3C跟踪上下文如何在新的遗物平台上运行有两种情况:

  • 场景1:某些跟踪数据被发送到新遗物
  • 场景2:所有跟踪数据都被发送到New Relic

让我们看看两者。

场景1:某些跟踪数据被发送到新遗物

如果您的所有跟踪数据被发送到新遗物,则可以在分布式跟踪UI中观察一个完整的端到端轨迹。但是,如果一些跟踪的数据被发送到另一个跟踪服务,或者根本无处,您可能需要挖掘以查找该数据。但是,使用W3C跟踪上下文,您可以使用跟踪ID来查找与该跟踪相关联的其他数据。


示例呼叫流程,其中一些服务未将跟踪数据发送到新遗物,但跟踪仍然繁殖。

例如,在上面描述的这种场景中,您可能会有一个缺少span的跟踪。New Relic分布式跟踪UI将显示跟踪有一个间隙,但是使用周围的跨度,您仍然可以计算跟踪的总时间,或执行其他故障排除。


使用分布式跟踪UI中的跟踪ID以查找缺失跨度的跟踪数据。

场景2:所有跟踪数据都被发送到New Relic

如果您使用的是开源示踪器并希望将这些迹线发送到新的遗物,我们已创建流行的开源监视工具的几个导出器,包括Opencensus和OpenteLemetry。我们使用的是出口商使用遥测SDK.,一个开源集的API客户端库,将跟踪数据发送到新的遗物平台。

在这个场景中,您可以使用OpenTelemetry跟踪器的一个导出器,该导出器正在为Service 2收集跟踪数据,以便将该数据发送到New Relic,而不中断对其他导出器的使用。


示例呼叫流程,其中导出器允许新的遗物具有完整跟踪的数据。

向后兼容是如何工作的?

支持W3C跟踪上下文的新遗物APM代理可以接受并发出W3C跟踪上下文标题格式和新的遗物标题格式。新代理商也向后兼容,这意味着他们将继续使用较旧的代理商,因此跟踪上下文将在具有较大的新遗物代理商的较新版本和更新的新遗物代理之间传播。

在某些情况下,您可以拥有涉及的痕迹,这些迹线被录取,这些追踪是新的遗物代理以外的东西。只要该仪器符合W3C跟踪上下文,您就可以使用支持W3C跟踪上下文的任何新的遗物代理版本作为该跟踪的一部分,并确保跟踪将传播。

如果您有一个较旧的新的遗物代理混合的跟踪,并且符合W3C跟踪上下文的非新型遗物仪器,则仍然可以传播迹线。您只需要确保符合W3C跟踪上下文 - 符合的新遗物代理与W3C前网关上下文新的遗物代理。支持W3C跟踪上下文的新遗物代理将充当新的遗物专有跟踪上下文的“翻译”。

例如,该迹线包括OpenTeMetry代理,符合W3C标准的代理和不合规的代理,但仍然可以传播跟踪上下文:

New Relic代理将始终接受并发出W3C跟踪头格式,并且它优先于New Relic跟踪头格式。您可以选择在代理的配置文件中禁用New Relic跟踪头格式。看到文档有关禁用New Relic格式的说明。

以及对后向兼容性的详细信息和限制,请参阅新的遗物分布式跟踪文档

不仅仅是另一个无聊的协议

我们一直与我们的同事密切相关,作为W3C分布式追踪工作组的一部分,以便将此规范达到最终批准。我们都非常兴奋能够实施它。

New Relic致力于W3C组织,我们将继续提供与开放标准无缝合作的可组合插装解决方案。亚博直播平台我们还将添加对更多分布式跟踪用例的支持,以帮助我们的用户在他们的DevOps生命周期中提高可观察性。

与此同时,我们很乐意听取您的意见,并了解您是如何利用W3C Trace Context和我们的开源导出程序的。给我们写封短信github出口商规格repo

升级您的代理,并开始openNew Relic One平台今天!

想要了解更多关于为什么需要开放,连接和可编程平台的可观察性?查看我们的电子书,可观测性的年龄